Use result of the for ith iteration of the for loop to compute the i+1 iteration

2 Ansichten (letzte 30 Tage)
Hi all,
I am using relatively complex equations in order to derive the values of the variables: a and a_prime. These variables are derived following an iterative approach, starting with a = a_prime = 0 , and going through the for loop to obtain better values.
I am having however difficulty with using the final result of the a and a_prime as derived at the end of each for loop, in order to re-run the for loop with that value. Below is the code:
% Input Data
R = 5 ; % m
V = 10 ; % m/s
B = 3 ; % blades
lambda = 6 ; % tip speed ratio
% Input Matrix
% r(m) g(deg) c(m)
M = [ 0.20 53.0 0.65 ; ...
0.15 74.3 0.76 ; ...
2.50 84.9 0.44 ; ...
3.75 89.1 0.30 ; ...
5.00 92.6 0.19 ] ;
% Variables
r = M(:,1) ;
gamma = M(:,2) ;
c = M(:,3) ;
% Calculations
Omega = lambda * V / R ; % rad/s
% First guesses
a = 0 ;
a_prime = 0 ;
% Iterations
for k = 1:2 %length(M)
% Local factors
sigma = B * c(k) / (2 * pi * r(k)) ; % Local solidity
lambda_r = Omega * r(k) / V ; % Local tip speed
beta = atan(lambda_r * (1 + a_prime) / (1 - a) ) ; %relative flow anlge onto the blades
i = gamma(k) - beta * 180/pi ; % angle of incidence
C_L = 0.327 + 0.1059 * i - 0.0013 * i^2 ; % lift coefficient
% New a and a'
a = 1 / (1 + (4 * cos(beta)^2 ) / (sigma * C_L * sin(beta) )) ;
a_prime = (sigma * C_L / 4 / lambda_r / cos(beta) ) * (1 - a) ;
end
Any help would be appreciated.
Kind Regards,
KMT.

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 1 Mai 2018
Instead of overwriting the variables, create an array. In the end, it will also help you to look at values of a and a_prime during each iteration.
a = zeros(1, length(M)+1) ;
a_prime = zeros(1, length(M)+1) ;
% Iterations
for k = 1:2 %length(M)
% Local factors
sigma = B * c(k) / (2 * pi * r(k)) ; % Local solidity
lambda_r = Omega * r(k) / V ; % Local tip speed
beta = atan(lambda_r * (1 + a_prime(k)) / (1 - a(k)) ) ; %relative flow anlge onto the blades
i = gamma(k) - beta * 180/pi ; % angle of incidence
C_L = 0.327 + 0.1059 * i - 0.0013 * i^2 ; % lift coefficient
% New a and a'
a(k+1) = 1 / (1 + (4 * cos(beta)^2 ) / (sigma * C_L * sin(beta) )) ;
a_prime(k+1) = (sigma * C_L / 4 / lambda_r / cos(beta) ) * (1 - a(k)) ;
end

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by