Newton Raphson - saving all values and using last iteration value as initial for next
Show older comments
I'm attempting to do a Newton - Raphson calculation but am having trouble starting. A1 and B1 are both matrices [1x15], so for the the values of A1, B1 and Theta_F, I need to perform a Newton - Raphson calculation over 5 iterations, saving all iteration values (for plotting) and using the last iteration value as the initial guess for the next N-R step (with the next set of A1, B1 and Theta_F values)
I'm really not sure where to start or how best to approach it (not been using MATLAB very long), any help would be greatly appreciated!
Many thanks.
M_s = 0; % Other variables in equations
alpha_s = 0;
Theta_F = [1:1:15]
A1 = [0,-30,-120,-270,-480,-750,-1080,-1470,-1920,-2430,-3000,-3630,-4320,-5070,-5880]
% B1 has the same value but is calculated as a matrix
B1 = [-196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200]
f = @(x) A1.*cos(x) + B1.*sin(x) + M_s*(x + (Theta_F ./(180*pi)) + (alpha_s /(180*pi))); % Function
fd = @(x) -A1.*sin(x) + B1.*cos(x) - M_s; % Function derivative
x0 = 0.0001;
x = x0;
% Attempt at N-R
for i = 1:5
x(i+1) = x(i) - f(x(i))/fd(x(i))
i = i+1
end
7 Comments
Andrew Newell
on 19 Apr 2021
I think you need to start by clarifying what the functions are. What values do
and
have? Are they vectors like
? Also, as formulated, f and
return vectors with the same length as
. Is that what you intended, or are they supposed to be summed to get a single value?
Andrew Newell
on 19 Apr 2021
In that case, your initial guess
should be a vector of length 15 as well.
Andrew Newell
on 19 Apr 2021
Note also that the N-R method doesn't work well if your guess is a long way from the correct answer. Do you have any reason to think that you've got a good initial guess?
Paul Hoffrichter
on 19 Apr 2021
For the NR method, you should figure out how to plot the 15 functions that you are defining before proceeding. Then for each NR step, you can add the new estimate of the zero crossing. Are you required in this assignment to process all 15 cases simultaneously? Even if this is your requirement, I recommend trying just one or two functions to get a baseline for your working method, and then expand to doing all of them in one shot if required.
Andrew Newell
on 19 Apr 2021
Edited: Andrew Newell
on 20 Apr 2021
Actually, for
and
equal to zero, the solution is
. Are you going to need to do this for nonzero parameters? If not, you're done.
HMZ
on 19 Apr 2021
Accepted Answer
More Answers (2)
Paul Hoffrichter
on 20 Apr 2021
Edited: Paul Hoffrichter
on 20 Apr 2021
The final x values match your spreadsheet results. Your suggested x0 converges too soon to be interesting. Set it to 1.0 to actually see convergence in action.
format long
M_s = 0; % Other variables in equations
alpha_s = 0;
Theta_F = [1:1:15]
iMax = 5;
A1 = [0,-30,-120,-270,-480,-750,-1080,-1470,-1920,-2430,-3000,-3630,-4320,-5070,-5880]
% B1 has the same value but is calculated as a matrix
B1 = [-196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200, -196200]
f = @(x) A1.*cos(x) + B1.*sin(x) + M_s*(x + (Theta_F ./(180*pi)) + (alpha_s /(180*pi))); % Function
fd = @(x) -A1.*sin(x) + B1.*cos(x) - M_s; % Function derivative
x0 = 0.0001;
% x0 = 1; % more interesting starting point
x = zeros(1, length(A1));
x(:) = x0;
xSave = zeros(iMax, length(A1));
% Attempt at N-R
for i = 1:iMax
x = x - f(x)./fd(x);
xSave(i,:) = x;
i = i+1;
end
% Check;
y = f(x)
Andrew Newell
on 20 Apr 2021
O.k. So here is how you do it:
x = -0.001*ones(size(A1));
for i=1:5
x = x - f(x)./fd(x);
end
Categories
Find more on Newton-Raphson Method in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!