• 大小: 666B
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: Matlab
  • 标签:

资源简介

利用牛顿-雅可比迭代法求非线性方程组Ax=b的一个根,压缩包里包含了求解非线性方程组的代码,只要用MATLAB软件打开程序运行即可

资源截图

代码片段和文件信息

%用牛顿-雅可比迭代法求非线性方程组的一个根
function [rm]=mulMix(Fx0hleps)
if nargin==4
    eps=1.0e-4;
end

n = length(x0);
J = zeros(nn);
Fx = subs(Ffindsym(F)x0);
for i=1:n
    x1 = x0;
    x1(i) = x1(i)+h(i);
    J(:i) = (subs(Ffindsym(F)x1)-Fx)/h(i);
end
D = diag(diag(J));
C = D - J;
inD = inv(D);
H = inD*C;
Hm = eye(nn);
for i=1:l-1
    Hm = Hm + power(Hi);
end
dr = Hm*inD*Fx;
r = transpose(x0)-dr;                               
m=1;
tol=1;
while tol>eps
    x0=r;   
    Fx = subs(Ffindsym(F)x0);
    J = zeros(nn);
    for i=1:n
        x1 = x0;
        x1(i) = x1(i)+h(i);
        J(:i) = (subs(Ffindsym(F)x1)-Fx)/h(i);
    end
    D = diag(diag(J));
    C = D - J;
    inD = inv(D);
    H = inD*C;
    Hm = eye(nn);
    for i=1:l-1
        Hm = Hm + power(Hi);
    end
    dr = Hm*inD*Fx;    
    r = x0-dr;                                 %核心迭代公式
    tol=norm(r-x0);
    m=m+1;
    if(m>100000)                                              %迭代步数控制
        disp(‘迭代步数太多,可能不收敛!‘);
        return;
    end
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1119  2017-11-23 20:08  mulMix.m

评论

共有 条评论

相关资源