Newton Raphson - saving all values and using last iteration value as initial for next
이전 댓글 표시
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
Andrew Newell
2021년 4월 19일
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
2021년 4월 19일
In that case, your initial guess
should be a vector of length 15 as well.
Andrew Newell
2021년 4월 19일
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
2021년 4월 19일
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
2021년 4월 19일
편집: Andrew Newell
2021년 4월 20일
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
2021년 4월 19일
채택된 답변
추가 답변 (2개)
Paul Hoffrichter
2021년 4월 20일
편집: Paul Hoffrichter
2021년 4월 20일
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
2021년 4월 20일
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
카테고리
도움말 센터 및 File Exchange에서 Newton-Raphson Method에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!