⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newtonraphson.m

📁 求解非线性方程组的NewRaphson方法
💻 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 + -