Index exceeds the number of array elements (interation)
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Im trying to iterate
xin = xh^2/sqrt(x(n)^2+mu^2);
x(n+1) = x(n)-((x(n)-muz-xin)/((1+xinx(n))/(x(n)^2+mu^2)))
In the setup, pre iteration, I am getting an error
Index exceeds the number of array elements. Index must not exceed 1.
for the last line below. Can anybody point me in the right direction? I can provide the full code if needed.
clc
clear
format long
% lambda is x
Rmain=27; %ft
Cmain=1.7; %ft
Nbmain=4;
Tipspeed_main=725; %ft/s
W=16000; %lb
alt=5000;
alpha_tpp=3;
%knots
%%
Amain=pi*Rmain^2;
sigma=(Nbmain*Cmain)/(pi*Rmain);
[~, ~, ~, RHO] = atmosisa(alt*0.3048);
rho=RHO*0.0685218/35.3147;
CT = W/(rho*Amain*Tipspeed_main^2);
xh = sqrt(CT/2);
n = 1;
x(n) = xh;
err = 10^-5;
relerr(n) = abs(x(n+1)-x(n))./x(n+1);
Réponses (1)
T.Nikhil kumar
le 9 Avr 2024
Hello Jaevon,
I can see that you are facing an error about index exceeding the number of elements while working with an array.
It seems that the error you're encountering is due to trying to access x(n+1) before it has been calculated. In the last line i.e. where you define ‘relerr(n)’, you're attempting to use x(n+1) which does not exist at that point in your code.
I assume that you have provided the pre-iteration code only and have the iteration logic already. I would suggest you to calculate x(n+1) first and then ‘relerr(n)’ inside your iteration loop. Please look at the below snippet for a rough idea of how your loop should look like:
while true %some condition as per your requirement (don't leave it as true)
%calculate xin
xin = xh^2 / sqrt(x(n)^2 + mu^2);
%calculate x(n+1)
x(n+1) = x(n) - ((x(n) - muz - xin) / ((1 + xin * x(n)) / (x(n)^2 + mu^2)));
%now that x(n+1) has been calculated, calculate the relerr
relerr(n) = abs(x(n+1) - x(n)) / x(n+1);
%update counter
n = n + 1;
end
You can also consider preallocating space for 'x' and 'relerr' for efficiency.
Hope this helps you proceed further!
0 commentaires
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!