24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1355  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zidingxiang

金虫 (小有名气)

[求助] matlab解非线性方程组程序纠错与正确运行 已有1人参与

大家好,我遇到一个解六元一次非线性方程组的问题,如果能指正错误并使程序运行出正确结果,将不胜感激!!!!!!
希望各位能尽快帮忙解决。matlab程序和运行后出现的问题具体如下:
1.首先建立函数F,储存方程组编程如下将F.m保存到工作路径中:  
function f=F(x)
syms x1 x2 x3 x4 x5 x6
f(1) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.6438^2-x6^2) - 2*1.620015*(1.620015^2-1)*(-3.240);
f(2) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.6328^2-x6^2) - 2*1.620507*(1.620507^2-1)*(-2.900);
f(3) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.5893^2-x6^2) - 2*1.622702*(1.622702^2-1)*(-2.700);
f(4) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.5461^2-x6^2) - 2*1.625401*(1.625401^2-1)*(-2.523);
f(5) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.4800^2-x6^2) - 2*1.631029*(1.631029^2-1)*(-2.618);
f(6) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.4358^2-x6^2) - 2*1.636369*(1.636369^2-1)*(-2.691);
f=[f(1) f(2) f(3) f(4) f(5) f(6)];
end
2.建立函数dF,用来求方程组的雅克比矩阵将dF.m保存到工作路径中:

function df=dF(x)
f=F(x);
df=[diff(f,'x1');diff(f,'x2');diff(f,'x3');diff(f,'x4');diff(f,'x5');diff(f,'x6')];
df=conj(df');
3.编程牛顿法求解非线性方程组将newton.m保存到工作路径中:

function x=newton(x0,eps,N)
con=0;
%其中x0为迭代初值eps为精度要求N为最大迭代步数con用来记录结果是否收敛
for i=1:N;
    f=subs(F(x0),{'x1' 'x2' 'x3' 'x4' 'x5' 'x6'},{x0(1) x0(2) x0(3) x0(4) x0(5) x0(6)});
    df=subs(dF(x0),{'x1' 'x2' 'x3' 'x4' 'x5' 'x6'},{x0(1) x0(2) x0(3) x0(4) x0(5) x0(6)});
    x=x0-f/df;
    for j=1: length(x0);
        il(i,j)=x(j);
    end
    if norm(x-x0)<eps
        con=1;
        break;
    end
    x0=x;
end

4.%以下是将迭代过程写入txt文档文件名为iteration.txt
fid=fopen('iteration.txt','w');
fprintf(fid,'iteration');
for j=1: length(x0)
    fprintf(fid,'         x%d',j);
end
for j=1:i
    fprintf(fid,'\n%6d     ',j);
    for k=1: length(x0)
        fprintf(fid,' %10.6f',il(j,k));
    end
end
if con==1
    fprintf(fid,'\n计算结果收敛!');
end
if con==0
    fprintf(fid,'\n迭代步数过多可能不收敛!');
end
fclose(fid);
5.运行程序

在matlab中输入以下内容:
newton( [-3e-05,-1.5e-08,-5.0e-11,3.0e-07,2.0e-10,-5.0e-1]',1.0e-15,10000)
运行后出现如下错误:
Warning: Matrix is singular to working precision.
> In newton at 7
??? Error using ==> minus
Matrix dimensions must agree.

Error in ==> newton at 7
    x=x0-f/df;
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 非线性方程组程序.docx
  • 2014-07-01 10:26:51, 25.26 K

» 收录本帖的淘帖专辑推荐

程序

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

violet
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zidingxiang

金虫 (小有名气)

引用回帖:
2楼: Originally posted by zidingxiang at 2014-07-01 10:50:58
谢谢。因为以前没用过matlab,需要高手给指点下。如能给出其它能求解的程序也可以。

程序中方程组有错误,更正后的方程组为:
f(1) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.6438^2-x6^2) - 2*1.620015/(1.620015^2-1)*(-0.87+2.6);
f(2) = x1+x2/20+x3*20^2+(x4+x5*20)/(0.6328^2-x6^2) - 2*1.620507/(1.620507^2-1)*(-0.87+2.7);
f(3) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.5893^2-x6^2) - 2*1.622702/(1.622702^2-1)*(-0.87+2.8);
f(4) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.5461^2-x6^2) - 2*1.625401/(1.625401^2-1)*(-0.87+2.9);
f(5) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.4800^2-x6^2) - 2*1.631029/(1.631029^2-1)*(-0.88+3.3);
f(6) = x1+x2*20+x3*20^2+(x4+x5*20)/(0.4358^2-x6^2) - 2*1.636369/(1.636369^2-1)*(-0.88+3.6);
哪位高手能给指点一下呢?非常着急!其它能求解的程序也可以哦!
violet
3楼2014-07-02 08:28:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

zidingxiang

金虫 (小有名气)

谢谢。因为以前没用过matlab,需要高手给指点下。如能给出其它能求解的程序也可以。
violet
2楼2014-07-01 10:50:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
ben_ladeng: 金币+2, 谢谢指教 2015-01-12 15:26:55
1:没有精确解;
2:解不唯一:

1)
x1: 2.88957802502212
x2: -0.00606779269454531
x3: -0.0021475788429129
x4: 104.239194493169
x5: -5.17957855521604
x6: 4.2688217005944E-9

2)
x1: -5.06785191315175
x2: -0.00606779274435797
x3: 0.0177459960035543
x4: -1513.24941425117
x5: 75.6948518819933
x6: -1.71163956718315E-10

3)
x1: 10.534663792856
x2: -0.00606779266347315
x3: -0.021260293280603
x4: 0.548566738471594
x5: 0.00495283260003713
x6: 0

» 本帖已获得的红花(最新10朵)

4楼2014-07-02 09:26:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zidingxiang

金虫 (小有名气)

引用回帖:
4楼: Originally posted by dingd at 2014-07-02 09:26:51
1:没有精确解;
2:解不唯一:

1)
x1: 2.88957802502212
x2: -0.00606779269454531
x3: -0.0021475788429129
x4: 104.239194493169
x5: -5.17957855521604
x6: 4.2688217005944E-9

2)
x1: -5.067851 ...

结果应在初值附近,但数量级好像差很远呢!这位老师能否给一个包含“每个自变量取值范围”的完整程序呢?我想把每个变量的取值范围都定义,这样结果范围就缩小了。不胜感激哦!发邮箱也可以:violetmojiezuo@163.com
violet
5楼2014-07-02 10:48:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 291求调剂 +5 Y-cap 2026-03-29 6/300 2026-03-29 13:18 by mumin1990
[考研] 298求调剂 +3 种圣赐 2026-03-29 3/150 2026-03-29 12:06 by longlotian
[考研] 318一志愿吉林大学生物与医药 求调剂 +4 笃行致远. 2026-03-28 4/200 2026-03-29 11:55 by longlotian
[考研] 332求调剂 +8 蕉蕉123 2026-03-28 8/400 2026-03-29 10:46 by 周梓丹
[考研] 298求调剂 +4 种圣赐 2026-03-28 4/200 2026-03-29 08:42 by q1092522407
[考研] 283求调剂 +3 A child 2026-03-28 3/150 2026-03-28 15:41 by ms629
[考研] 347求调剂 +3 山顶见α 2026-03-25 3/150 2026-03-28 14:13 by 唐沐儿
[考研] 311求调剂 +9 lin0039 2026-03-26 9/450 2026-03-28 13:05 by 唐沐儿
[考研] 291求调剂 +6 HanBeiNingZC 2026-03-24 6/300 2026-03-28 07:55 by baoball
[考研] 352分 化工与材料 +5 海纳百川Ly 2026-03-27 5/250 2026-03-28 03:39 by fmesaito
[考研] 275求调剂 +10 jjjjjjjjjjl 2026-03-27 10/500 2026-03-27 23:47 by barnett0632
[考研] 化学308分求调剂 +8 你好明天你好 2026-03-23 9/450 2026-03-27 14:01 by 杨光于青云
[考研] 316求调剂 +5 Pigcasso 2026-03-24 5/250 2026-03-27 12:10 by zhshch
[考研] 考研调剂 +10 呼呼?~+123456 2026-03-24 10/500 2026-03-27 11:46 by wangjy2002
[考研] 求调剂323材料与化工 +7 1124361 2026-03-24 7/350 2026-03-27 10:22 by wangjy2002
[考研] 材料调剂 +8 匹克i 2026-03-23 8/400 2026-03-27 08:11 by hypershenger
[考研] 总分322求生物学/生化与分子/生物信息学相关调剂 +5 星沉uu 2026-03-26 6/300 2026-03-26 19:02 by macy2011
[考研] 生物学 296 求调剂 +4 朵朵- 2026-03-26 6/300 2026-03-26 19:01 by 不吃魚的貓
[考研] 085602化学工程求调剂。 +4 平乐乐乐 2026-03-26 4/200 2026-03-26 17:57 by fmesaito
[考研] 085404电子信息284分求调剂 +4 13659058978 2026-03-24 4/200 2026-03-24 12:15 by syl20081243
信息提示
请填处理意见