24小时热门版块排行榜    

查看: 1483  |  回复: 7

RK1224

新虫 (初入文坛)

[求助] 非线性方程组的系数的数量级差很大,结果发散 已有3人参与

小生最近做点东西,模型简化为非线性方程组,输入一组参数后,发现方程的系数数量级相差很大,用牛顿迭代结果发散。请问各位大神有遇到过这种情况吗?有什么好的方法吗?
简化后的方程代入一组参数如下:
(4.1018e-07)*x1^4+38716e*x1-38708*x2-(9.2333e-08)*x3^4-297.7296)=0;

38708*x1-38943*x2+1174.2e=0;

-23679*x2+47828e*x3-24149e*x4=0;

(9.2333e-08)*x1^4+23914e*x2-47834*x3-(9.2333e-08)*x3^4+23914*x4 -5.3514*x5+4613.8=0;

5.3514*x3-83.6514*x5+1566=0;
回复此楼

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

matlab编程绘图

» 猜你喜欢

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

hsdwlxhx

金虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
5维迭代,你也太bug了

[ 发自小木虫客户端 ]
BringLightonChip
2楼2015-08-10 20:09:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

RK1224

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by hsdwlxhx at 2015-08-10 20:09:31
5维迭代,你也太bug了

我是菜鸟。。。希望你指点一下
3楼2015-08-10 20:43:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hsdwlxhx

金虫 (正式写手)

【答案】应助回帖

引用回帖:
3楼: Originally posted by RK1224 at 2015-08-10 20:43:33
我是菜鸟。。。希望你指点一下...

指点谈不上,你的方程可以简化,先用数值方法跑一跑,看看有没有解,大概在什么区间,然后再用迭代计算,matlab有fsolve函数可以直接用

[ 发自小木虫客户端 ]
BringLightonChip
4楼2015-08-10 22:02:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
1:第一个公式左右括号不匹配;
2:第2、第3公式中的“e”是什么?应该是“e+0”吧!
5楼2015-08-10 23:28:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

RK1224

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by dingd at 2015-08-10 23:28:57
1:第一个公式左右括号不匹配;
2:第2、第3公式中的“e”是什么?应该是“e+0”吧!

谢谢你的回复,确实是我没写清楚,我改了一下如下:
(4.1018e-07)*x1^4+38716*x1-38708*x2-(9.2333e-08)*x3^4-297.7296=0;

38708*x1-38943*x2+1174.2=0;

-23679*x2+47828*x3-24149*x4=0;

(9.2333e-08)*x1^4+23914*x2-47834*x3-(9.2333e-08)*x3^4+23914*x4 -5.3514*x5+4613.8=0;

5.3514*x3-83.6514*x5+1566=0;
请问你遇到过这种问题么?主要的问题就是矩阵奇异
6楼2015-08-11 13:32:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
6楼: Originally posted by RK1224 at 2015-08-11 13:32:07
谢谢你的回复,确实是我没写清楚,我改了一下如下:
(4.1018e-07)*x1^4+38716*x1-38708*x2-(9.2333e-08)*x3^4-297.7296=0;

38708*x1-38943*x2+1174.2=0;

-23679*x2+47828*x3-24149*x4=0;

(9.2333e-08)*x ...

解:
x1: 6.06356999532981
x2: 6.05713138122965
x3: 15.5431308164225
x4: 24.8445089532369
x5: 19.7148823600203
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
7楼2015-08-11 14:29:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

引用回帖:
6楼: Originally posted by RK1224 at 2015-08-11 13:32:07
谢谢你的回复,确实是我没写清楚,我改了一下如下:
(4.1018e-07)*x1^4+38716*x1-38708*x2-(9.2333e-08)*x3^4-297.7296=0;

38708*x1-38943*x2+1174.2=0;

-23679*x2+47828*x3-24149*x4=0;

(9.2333e-08)*x ...

MATLAB代码:
CODE:
function solve_eq
clear all;clc
format long

x0=[0 0 0 0 0];

options=optimset('TolFun',1e-9);
[x fval]=fsolve(@fun,x0,options);
[x;fval]'

function f=fun(u)



x1=u(1);
x2=u(2);
x3=u(3);
x4=u(4);
x5=u(5);

f(1)=(4.1018e-07)*x1^4+38716*x1-38708*x2-(9.2333e-08)*x3^4-297.7296;

f(2)=38708*x1-38943*x2+1174.2;

f(3)=-23679*x2+47828*x3-24149*x4;

f(4)=(9.2333e-08)*x1^4+23914*x2-47834*x3-(9.2333e-08)*x3^4+23914*x4 -5.3514*x5+4613.8;

f(5)=5.3514*x3-83.6514*x5+1566;

计算结果:
           x1~x5                         方程残差
   6.063569995329909     -0.000000000031662
   6.057131381229750     -0.000000000011596
  15.543130816422794     -0.000000000116415
  24.844508953237408      0.000000000042746
  19.714882360020336  -0.000000000000227
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
8楼2015-08-11 14:34:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 RK1224 的主题更新
信息提示
请填处理意见