diffparam2.m

来自「介绍了《MATLAB语言常用算法程序集》一书的源程序」· M 代码 · 共 36 行

M
36
字号
function r=DiffParam2(F,x0,h,N)
%非线性方程组:f
%初始解:x0
%数值微分增量步大小:h
%雅可比迭代参量:l
%解的精度:eps
%求得的一组解:r
%迭代步数:n

x0 = transpose(x0);
n = length(x0);
ht = 1/N;
Fx0  = subs(F,findsym(F),x0);
J = zeros(n,n);
for i=1:n
    xt = x0;
    xt(i) = xt(i)+h(i);
    J(:,i) = (subs(F,findsym(F),xt)-Fx0)/h(i);
end
inJ = inv(J);
x1 = x0 - ht*inJ*Fx0;

for k=1:N
    x2 = x1 + (x1-x0)/2;
    Fx2  = subs(F,findsym(F),x2);
    J = zeros(n,n);
    for i=1:n
        xt = x2;
        xt(i) = xt(i)+h(i);
        J(:,i) = (subs(F,findsym(F),xt)-Fx2)/h(i);
    end
    inJ = inv(J);
    r = x1 - ht*inJ*Fx0;
    x0 = x1;
    x1 = r;
end

⌨️ 快捷键说明

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