1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 非线性方程组求解Matlab实现 (多元牛顿方法 Broyden方法 Broyden方法2)

非线性方程组求解Matlab实现 (多元牛顿方法 Broyden方法 Broyden方法2)

时间:2021-01-31 09:24:51

相关推荐

非线性方程组求解Matlab实现 (多元牛顿方法 Broyden方法 Broyden方法2)

三元牛顿方法(非线性方程中三个未知数)

function jie = multvarnewton3(g1,g2,g3,c)e=[inf,inf,inf];syms x y zk1=g1(x,y,z);k2=g2(x,y,z);k3=g3(x,y,z);while(norm((e-c),inf)>0.5*10^-6)f1=diff(k1,x);f2=diff(k1,y);f3=diff(k1,z);f4=diff(k2,x);f5=diff(k2,y);f6=diff(k2,z);f7=diff(k3,x);f8=diff(k3,y);f9=diff(k3,z);d(1)=subs(subs(subs(k1,x,c(1)),y,c(2)),z,c(3));d(2)=subs(subs(subs(k2,x,c(1)),y,c(2)),z,c(3));d(3)=subs(subs(subs(k3,x,c(1)),y,c(2)),z,c(3));a(1,1)=subs(subs(subs(f1,x,c(1)),y,c(2)),z,c(3));a(1,2)=subs(subs(subs(f2,x,c(1)),y,c(2)),z,c(3));a(1,3)=subs(subs(subs(f3,x,c(1)),y,c(2)),z,c(3));a(2,1)=subs(subs(subs(f4,x,c(1)),y,c(2)),z,c(3));a(2,2)=subs(subs(subs(f5,x,c(1)),y,c(2)),z,c(3));a(2,3)=subs(subs(subs(f6,x,c(1)),y,c(2)),z,c(3));a(3,1)=subs(subs(subs(f7,x,c(1)),y,c(2)),z,c(3));a(3,2)=subs(subs(subs(f8,x,c(1)),y,c(2)),z,c(3));a(3,3)=subs(subs(subs(f9,x,c(1)),y,c(2)),z,c(3));a=double(a);d=double(d);e=c;s=a\d';c=(c'-s)';jie=c; end end

说明:输入中g1,g2,g3为三个方程,c为初始估计

二元牛顿方法(非线性方程中二个未知数)

function jie= multvarnewton(g1,g2,c)e=[inf,inf];syms x yk1=g1(x,y);k2=g2(x,y);while(norm((e-c),inf)>0.5*10^-6)f1=diff(k1,x);f2=diff(k1,y);f3=diff(k2,x);f4=diff(k2,y);d(1)=subs(subs(k1,x,c(1)),y,c(2));d(2)=subs(subs(k2,x,c(1)),y,c(2));a(1,1)=subs(subs(f1,x,c(1)),y,c(2));a(1,2)=subs(subs(f2,x,c(1)),y,c(2));a(2,1)=subs(subs(f3,x,c(1)),y,c(2));a(2,2)=subs(subs(f4,x,c(1)),y,c(2));a=double(a);d=double(d);e=c;s=a\d';c=(c'-s)';jie=c;endend

说明:输入中g1,g2为三个方程,c为初始估计

Broyden方法

function jie = Broyden(f,tol,x0)[m,n]=size(x0);a=eye(n);x=x0-a\f(x0);while(norm((x-x0),inf)>tol)k1=f(x)-f(x0);k2=x-x0;a=a+(k1-a*k2)*k2'/(k2'*k2);x0=x;x=x-a\f(x);endjie=x;end

说明:输入中f为多个方程组成的列矩阵,x0为初始估计(以列向量表示),tol为控制精度,以向量的无穷范数表示。如控制在小数点后六位则tol=0.5*10^-6。

Broyden方法2

function jie= Broyden2(f,tol,x0)[m,n]=size(x0);a=eye(n);x=x0-a*f(x0);while(norm((x-x0),inf)>tol)k1=f(x)-f(x0);k2=x-x0;a=a+((k2-a*k1)*k2'*a)/(k2'*a*k1);x0=x;x=x-a*f(x);endjie=x;end

说明:输入中f为多个方程组成的列矩阵,x0为初始估计(以列向量表示),tol为控制精度,以向量的无穷范数表示。如控制在小数点后六位则tol=0.5*10^-6。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。