| 查看: 1253 | 回复: 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
» 收录本帖的淘帖专辑推荐
程序 |
» 猜你喜欢
上海工程技术大学张培磊教授团队招收博士生
已经有3人回复
上海工程技术大学【激光智能制造】课题组招收硕士
已经有5人回复
求助院士们,这个如何合成呀
已经有4人回复
临港实验室与上科大联培博士招生1名
已经有9人回复
想换工作。大多数高校都是 评职称时 认可5年内在原单位取得的成果吗?
已经有7人回复
需要合成515-64-0,50g,能接单的留言
已经有4人回复
自荐读博
已经有4人回复
写了一篇“相变储能技术在冷库中应用”的论文,论文内容以实验为主,投什么期刊合适?
已经有6人回复
带资进组求博导收留
已经有10人回复
最近几年招的学生写论文不引自己组发的文章
已经有11人回复
» 本主题相关价值贴推荐,对您同样有帮助:
MATLAB求解非线性方程
已经有4人回复
matlab解方程组求助攻
已经有4人回复
求教 如何用matlab解带约束的非线性方程组
已经有4人回复
matlab 非线性微分方程求解
已经有3人回复
用matlab求解一个非线性方程组的解
已经有4人回复
请教一个matlab求解非线性方程组的问题
已经有9人回复
用matlab求解非线性方程组说无解,一定是方程组本身无解,还是有可能程序有问题呢?
已经有11人回复
matlab如何求解一个非线性微分方程组
已经有8人回复
matlab 计算非线性方程组求解
已经有4人回复
MATLAB求解非线性方程组
已经有5人回复
求Matlab解非线性方程代码
已经有12人回复
求助matlab解一个非线性方程组
已经有8人回复
求Matlab高手解决线性方程组的迭代求解问题
已经有17人回复
matlab求解非线性方程组,错误提示怎么解决
已经有5人回复
求助matlab---fsolve解非线性方程组
已经有6人回复
matlab求解非线性方程组,求助!
已经有6人回复
如何使用matlab求解非线性方程组的所有整数解?
已经有9人回复
matlab求解非线性方程组
已经有16人回复
求高人指点用matlab求解非线性方程组,解决了追加100金币;
已经有11人回复
matlab的fsove 命令求解非线性方程组
已经有6人回复
MATLAB非线性方程组求解~~~反应釜模拟
已经有9人回复
【求助】用mathematica 5.0求解一个非线性方程组失败,特发帖求助!
已经有5人回复
【求助】matlab求解非线性方程组,并画图处理。要求y,z是实数解!
已经有18人回复
【求助】求教matlab解非线性方程组
已经有9人回复

zidingxiang
金虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 774.8
- 散金: 69
- 红花: 1
- 帖子: 114
- 在线: 31.7小时
- 虫号: 958621
- 注册: 2010-03-01
- 性别: MM
- 专业: 玻璃材料

2楼2014-07-01 10:50:58
zidingxiang
金虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 774.8
- 散金: 69
- 红花: 1
- 帖子: 114
- 在线: 31.7小时
- 虫号: 958621
- 注册: 2010-03-01
- 性别: MM
- 专业: 玻璃材料
|
程序中方程组有错误,更正后的方程组为: 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); 哪位高手能给指点一下呢?非常着急!其它能求解的程序也可以哦! |

3楼2014-07-02 08:28:48
dingd
铁杆木虫 (职业作家)
- 应助: 1641 (讲师)
- 金币: 15037.3
- 散金: 101
- 红花: 234
- 帖子: 3410
- 在线: 1223.5小时
- 虫号: 291104
- 注册: 2006-10-28
【答案】应助回帖
★ ★
感谢参与,应助指数 +1
ben_ladeng: 金币+2, 谢谢指教 2015-01-12 15:26:55
感谢参与,应助指数 +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
zidingxiang
金虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 774.8
- 散金: 69
- 红花: 1
- 帖子: 114
- 在线: 31.7小时
- 虫号: 958621
- 注册: 2010-03-01
- 性别: MM
- 专业: 玻璃材料
|
结果应在初值附近,但数量级好像差很远呢!这位老师能否给一个包含“每个自变量取值范围”的完整程序呢?我想把每个变量的取值范围都定义,这样结果范围就缩小了。不胜感激哦!发邮箱也可以:violetmojiezuo@163.com |

5楼2014-07-02 10:48:51
zidingxiang
金虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 774.8
- 散金: 69
- 红花: 1
- 帖子: 114
- 在线: 31.7小时
- 虫号: 958621
- 注册: 2010-03-01
- 性别: MM
- 专业: 玻璃材料
送红花一朵 |
结果应在初值附近,但数量级好像差很远呢!这位老师能否给一个包含“每个自变量取值范围”的完整程序呢?我想把每个变量的取值范围都定义,这样结果范围就缩小了。不胜感激哦!发邮箱也可以:violetmojiezuo@163.com |

6楼2014-07-02 10:49:23
|
本帖内容被屏蔽 |
7楼2017-03-03 10:59:07







回复此楼