非常新的matlab用户在这里。您在下面看到的代码非常适合求解公式 2,但是当我切换到公式 1 时,matlab 变得“忙碌”并且似乎没有任何效果。
ctrl+c, ctrl+d, ctrl+ 似乎不起作用,但我还是想解决根本问题
function [x1, relErr] = NewtonRaphson(x0, TOL, MAX)
x = sym('x');
f(x) = x*exp(-x); %EQUATION 1
%f(x) = x^2-6 %EQUATION 2
df = diff(f);
relErr = 1:MAX;
for i = 1:MAX,
x1 = double(x0 - f(x0) / df(x0));
% Compute relative approximated error
relErr(i) = abs(x1-x0)/abs(x1);
if( abs(x0-x1) < TOL )
char(x1);
fprintf('Newton: Solution %0.5f in %d iterations\n',x1,i);
relErr = relErr(1:i);
plot(relErr);
lambda = abs(x1-6)/((abs(x0-6))^2);
char(lambda);
fprintf('Newton: Lamda = %0.5f\n',lambda);
return;
end
x0 = x1 ;
end
display('Method failed, hit max iterations');
end