📄 newtonraphson.m
字号:
%文件名:NewtonRaphson.m
function root = NewtonRaphson(func,x,tol,Nmax)
% 功能:Newton-Raphson方法求解非线性方程组
% 输入:
% func ---- 方程函数句柄
% x ---- 初始迭代点
% tol(可选)-精度要求(默认是1e-4)
% Nmax(可选)-最大迭代次数(默认100次)
% 输出:
% root--- 解向量
if nargin <4; Nmax=100; end
if nargin<3 | isempty(tol); tol=1.0e-4;end
if size(x,1) == 1; x = x'; end % x must be column vector
root=x;
for i = 1:Nmax
[jac,f0] = jacobian(func,x);
if norm(f0)< tol
root = x;
fprintf('迭代次数为k=%d\n',i);
return
end
dx = jac\(-f0);
x = x + dx;
if norm(dx)<tol
fprintf('迭代次数为k=%d\n',i);
root = x;
return
end
end
error('迭代次数过多!')
function [jac,f0] = jacobian(func,x)
% 返回Jacobian矩阵及 f(x).
h = 1.0e-4;
n = length(x);
jac = zeros(n);
f0 = feval(func,x);
for i =1:n
t = x(i);
x(i) = t + h;
f1 = feval(func,x);
x(i) = t;
jac(:,i) = (f1 - f0)/h;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -