Index in position 2 exceeds array bounds (must not exceed 50).
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
code:
function main
% solution of 2D elliptical solution
% using Line Over Relaxation Method(LSOR)
% ep is accepted error
%Tridiag: Tridiagonal equation solver banded system
%stream function solver for inlet aswell as for outlet with Dirichlet
%conditions
clc;
clear all;
eps = 0.001;
omega = input(' enter the omega value: ');
beta = input (' enter the beta value: ');
n= 100000;
nx = 51;
ny = 51;
T(1:nx, 1:ny-1) = 0;
TN(1:nx, 1:ny-1) = 0;
T(13:nx, 1)= 100;
T(nx, 1:31) = 100;
TN(13:nx, 1)= 100;
TN(nx, 1:31) = 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-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
result:
enter the omega value: 1.2
enter the beta value: 1
Index in position 2 exceeds array bounds (must not exceed 50).
Error in sf1 (line 30)
r(i-1) = - coeff*(1-omega)*T(i,j)-omega*beta^2*T(i,j+1)-omega*beta^2*TN(i,j-1);
0 commentaires
Réponses (1)
Walter Roberson
le 3 Oct 2021
ny = 51;
T(1:nx, 1:ny-1) = 0;
You initialize 51-1 = 50 columns in T
for j = 2:ny-1
j will be as much as 51-1 = 50
r(i-1) = - coeff*(1-omega)*T(i,j)-omega*beta^2*T(i,j+1)-omega*beta^2*TN(i,j-1);
When j becomes 50, then j+1 becomes 51, and T(2,51) would be asked for, but column 51 of T has not been initialized
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!