您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页6——matlab——利用秩1拟牛顿法求解非线性方程组

6——matlab——利用秩1拟牛顿法求解非线性方程组

来源:爱go旅游网


利用秩1拟牛顿法求解非线性方程组:

M文件:

function s=Broyden1(x,eps)

format long

if nargin==1

eps=1e-6;

else if nargin<1

error(' ');

return;

end

end

[ff dff]=NewtonSfun(x);

x1=ff; b1=inv(dff);

p=-b1*x1';

x3=x'+p; n=1;

[ff dff]=NewtonSfun(x3');

d=ff;

q=(d-x1)';

b1=b1+(q-b1*p)*p'/(norm(p)*norm(p));

while (norm(p)>eps)

[ff dff]=Broyden1fun(x3');

x1=ff;

p=-inv(b1)*(x1)';

x3=x3+p; n=n+1;

[ff dff]=Broyden1fun(x3');

q=(ff-x1)';

b1=b1+(q-b1*p)*p'/(norm(p)*norm(p));

end

s=x3;

n

return;

求方程组的函数值和导数值函数:M-文件

function [ff dff]=NewtonSfun(x)

syms x1 x2

syms y1 y2

syms y

syms y11 y12

syms y21 y22 dy

y1=x1*x1-10*x1+x2*x2+8;

y2=x1*x2*x2+x1-10*x2+8;

y=[y1 y2];

ff=subs(y,[x1,x2],x);

y11=diff(y1,x1); y12=diff(y1,x2);

y21=diff(y2,x1); y22=diff(y2,x2);

dy=[y11,y12;y21,y22];

dff=subs(dy,[x1,x2],x);

调用语句:

Broyden1([0 0])

结果:

n =

20

ans =

1.067346085798006

0.139227666849304

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务