Finding error like unrecognized function or variable ' tridiagonal'
    2 views (last 30 days)
  
       Show older comments
    
Program:
% solution of 2D elliptical solution
% using Line Over Relaxation Method(LSOR)
% ep is accepted error%Tridiag: Tridiagonal equation zsolver banded system
clc;
clear all;
eps = 0.001;
omega = input(' enter the omega value: ');
beta = input (' enter the beta value: ');
n= 10000;
nx = 21;
ny = 42;
T(1:nx, 1:ny-1) = 0;
TN(1:nx, 1:ny-1) = 0;
T(1:nx, ny)= 100;
TN(1:nx, ny) = 100;
% its number of iteration
coeff = ( 2*(1+beta^2));
for iterations = 1:n
    for j = 2:ny-1
        a(1:nx-2) = -coeff;
        b(1:nx-3)=  omega;
        c(1:nx-3)= omega;
        for i = 2:nx-1 
            r(i-1) = - coeff*(1-omega)*T(i,j)-omega*beta^2*T(i,j+1)-omega*beta^2*TN(i,j-1);
        end
        r(1)= r(1)-omega*TN(1,j);
        r(nx-2)= r(nx-2)-omega*TN(nx,j);
        y = tridiagonal(c,a,b,r);
        for k = 1:nx-2
            TN(k+1,j)= y(k); 
        end
    end
    error = abs(TN-T);
    totalerror = sum(error,'all');
    if totalerror <= eps
        break
    end
    T=TN;
end
iterations;
contour(TN');
RESULTS;
enter the omega value: 1.3
 enter the beta value: 1
Unrecognized function or variable 'tridiagonal'.
Error in LSOR (line 28)
        y = tridiagonal(c,a,b,r);
4 Comments
  Chetan Bhavsar
      
 on 2 Oct 2021
				
  Chetan Bhavsar
      
 on 2 Oct 2021
				Plus i have changed a part of code please check if its as per requirement or not
%         b(1:nx-3)=  omega;
%         c(1:nx-3)= omega;
         b(1:nx-2)=  omega;
         c(1:nx-2)= omega;
Accepted Answer
  Chetan Bhavsar
      
 on 2 Oct 2021
        
      Edited: Chetan Bhavsar
      
 on 2 Oct 2021
  
      function main
% solution of 2D elliptical solution
% using Line Over Relaxation Method(LSOR)
% ep is accepted error%Tridiag: Tridiagonal equation zsolver banded system
clc;
clear all;
eps = 0.001;
omega = input(' enter the omega value: ');
beta = input (' enter the beta value: ');
n= 10000;
nx = 21;
ny = 42;
T(1:nx, 1:ny-1) = 0;
TN(1:nx, 1:ny-1) = 0;
T(1:nx, ny)= 100;
TN(1:nx, ny) = 100;
% its number of iteration
coeff = ( 2*(1+beta^2));
for iterations = 1:n
    for j = 2:ny-1
        a(1:nx-2) = -coeff;
%         b(1:nx-3)=  omega;
%         c(1:nx-3)= omega;
         b(1:nx-2)=  omega;
         c(1:nx-2)= omega;
        for i = 2:nx-1 
            r(i-1) = - coeff*(1-omega)*T(i,j)-omega*beta^2*T(i,j+1)-omega*beta^2*TN(i,j-1);
        end
        r(1)= r(1)-omega*TN(1,j);
        r(nx-2)= r(nx-2)-omega*TN(nx,j);
        y = Tridiagonal(c,a,b,r);
        for k = 1:nx-2
            TN(k+1,j)= y(k); 
        end
    end
    error = abs(TN-T);
    totalerror = sum(error,'all');
    if totalerror <= eps
        break
    end
    T=TN;
end
iterations;
contour(TN');
end
function x = Tridiagonal(e,f,g,r)
% Tridiagonal: Tridiagonal equation solver banded system
% x = Tridiagonal(e,f,g,r): Tridiagonal system solver.
% input:
% e = subdiagonal vector
% f = diagonal vector
% g = superdiagonal vector
% r = right hand side vector
% output:
% x = solution vector
n=length(f);
% forward elimination
for k = 2:n
    factor = e(k)/f(k-1);
    f(k) = f(k) - factor*g(k-1);
    r(k) = r(k) - factor*r(k-1);
end
% back substitution
x(n) = r(n)/f(n);
for k = n-1:-1:1
    x(k) = (r(k)-g(k)*x(k+1))/f(k);
end
end
3 Comments
  Chetan Bhavsar
      
 on 2 Oct 2021
				
      Edited: Chetan Bhavsar
      
 on 3 Oct 2021
  
			you can go through https://in.mathworks.com/help/matlab/matlab_prog/scripts-and-functions.html
More Answers (0)
See Also
Categories
				Find more on Surface and Mesh Plots in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

