Newton's method(calculating theta)

4 次查看(过去 30 天)
w = 30; h = 30; b = 3.5; % In inches
f = @(theta) w*sind(theta) - h*cosd(theta) - b;
fp = @(theta) w*cosd(theta)+h*sind(theta);
theta_newt(1) = 49.76; % Set initial guess
tol=0.4771;
n=1;
while n<=1:50
fe = f(theta_newt(1));
fpe = fp(theta_newt(1));
theta_newt(n+1) = theta_newt(n) - fe(n)/fpe(n);
if theta_newt(n+1)< 49.73-tol || theta_newt(n+1)>49.73+tol
return
else
theta=theta_newt(n+1);
end
n=n+1;
end
disp(theta)
why is the code not returning to the loop when it is not calculating the wanted angle?

采纳的回答

Sriram Tadavarty
Sriram Tadavarty 2020-3-16
Hi Ahmed,
The condition you placed for the while loop is a series of vector. Update the condition as below and code requires minor modifications to work
while n <= 50 % It runs the loop till n becomes 50
fe = f(theta_newt(n));
fpe = fp(theta_newt(n));
theta_newt(n+1) = theta_newt(n) - fe/fpe;
if theta_newt(n+1)< 49.73-tol || theta_newt(n+1)>49.73+tol
return
else
theta=theta_newt(n+1);
end
n=n+1;
end
Hope this helps.
Regards,
Sriram

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Genetic Algorithm 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by