全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 经管百科 爱问频道
1116 1
2011-07-08
用matlab迭代法求解非线性方程组。未知数为:a、b、c、e、f、g
a-20.6301*c+20.6301*c*b+20.6301*g*b+6.0839=0
b+0.678213*c-0.678213*b*c-0.678213*b*f-0.40431=0
c-b*c-b*g=0
e-20.6301*g+20.6301*g*f+20.6301*f*c+14.3161=0
f+0.678213*g-0.678213*g*f-0.678213*c*f-0.5122=0
g-f*g-f*c=0
其中b、c、f、g都是介于(0,1)间
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-7-8 22:58:54
方程组为:x1^3+x1^2-x2+x3-13=0; x2^3+x2^2-x1+2x3-20=0; x3^3+x3^2+2x1-2x2-18=0,其精确解是(2,2,3)参考初值为(1,1,2)
注:x1,x2,x3为未知数,最高三次,而且是方程组。
function [r,n]=mulNewton(F,x0,eps)
if nargin==2
eps=1.0e-4;
end
x0 = transpose(x0);
Fx = subs(F,findsym(F),x0);
var = findsym(F);
dF = jacobian(F);
dFx = subs(dF,findsym(dF),x0);
r=x0-inv(dFx)*Fx;
n=1;
tol=1;
while tol>eps
x0=r;
Fx = subs(F,findsym(F),x0);
dFx = subs(dF,findsym(dF),x0);
r=x0-inv(dFx)*Fx; %核心迭代公式
tol=norm(r-x0);
n=n+1;
if(n>100000) %迭代步数控制
disp('迭代步数太多,可能不收敛!');
return;
end
end

供参考
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群