mulfastdown.m

来自「非线性方程组的求解算法」· M 代码 · 共 30 行

M
30
字号
function [r,m]=mulFastDown(F,x0,h,eps)
format long;
if nargin==3
    eps=1.0e-8;
end

n = length(x0);
x0 = transpose(x0);
m=1;
tol=1;
while tol>eps
    fx = subs(F,findsym(F),x0);
    J = zeros(n,n);
    for i=1:n
        x1 = x0;
        x1(i) = x1(i)+h;
        J(:,i) = (subs(F,findsym(F),x1)-fx)/h;
    end
    lamda = fx/sum(diag(transpose(J)*J));
    r=x0-J*lamda;  %核心迭代公式
    fr = subs(F,findsym(F),r);    
    tol=dot(fr,fr);
    x0 = r;
    m=m+1;
    if(m>100000)                                              %迭代步数控制
        disp('迭代步数太多,可能不收敛!');
        return;
    end
end
format short;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?