Index exceeds matrix dimensions using for and while loop

clc
clear
close
%define variables
Re = [2500:1:500000];
n = numel (Re);
t(1)= 0;
e = 1;
f = 1;
for i = 1:n
g(i+1) = 4*log10(Re(i)*sqrt(f))-0.4-(1/sqrt(f));
while e > 0.000005
i = i+1;
t(i+1) = f(i) + (4*log10(Re*sqrt(f(i)))-0.4-(1/sqrt(f(i))))/((2/(f(i)*log(10)))+(1/(2*f(i)^(2/3))))
e = abs(t(i+1) - t(i))
end
end
It gives index exceeds matrix dimensions error. I checked each raw of code, but I cannot see it

2 commentaires

f(i) (at least for i>1) does not exist.
what should it be?

Connectez-vous pour commenter.

Réponses (1)

Anirudh Vajpeyi
Anirudh Vajpeyi le 30 Avr 2022
while e > 0.000005
i = i+1;
t(i+1) = f(i) + (4*log10(Re*sqrt(f(i)))-0.4-(1/sqrt(f(i))))/((2/(f(i)*log(10)))+(1/(2*f(i)^(2/3))))
e = abs(t(i+1) - t(i))
end
This loop is basically an infinite loop and also 'f' has just one value. So, not sure what exactly do you want to achieve.

2 commentaires

Develop a function that uses Newton Raphson methods to solve for f given a user-supplied value of Re between 2,500 and 500,000. Design the function so that it ensures that the absolute error in the result is 𝜖 < 0.000005.
Exact equation 1/sqrt(f) = 4*log10(Re*sqrt(f))-0.4

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by