24小时热门版块排行榜    

查看: 2292  |  回复: 12

huangbl2014

铜虫 (著名写手)

[求助] 如何解方程数量大于未知数量的方程组,注:各个方程的形式完全不一样。 已有4人参与

如题,就是怎么得到方程数量大于未知数量的最优解?各个方程的形式不一样,所以最小二乘法是不是不能用了?用Maple,Matlab,Mathematica好像方程形式要一样的,即只能有一个经验公式。所以怎么解比如:5a+7b=10, 9/a+10b=7,e^a+b=20, 这样形式的三个方程中的a,b?
回复此楼

» 猜你喜欢

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

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

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★
感谢参与,应助指数 +1
fegg7502: 金币+1, 鼓励交流 2015-05-12 09:43:15
huangbl2014: 金币+3, ★★★很有帮助 2015-05-12 11:29:24
方程(组)的求解问题,本质上可以看做是最优化问题。对于方程个数大于未知数个数的方程,求解方法上还是最优化方法,所以不存在什么技术上问题,只是说很可能找不到满足高容差限的解。
楼主给的例子,可解得:
a: 2.97565219910564
b: 0.397544545029516
这组解不能使得三个方程残差都很接近于0,只能使得三个方程的残差平方和最小。

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

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2015-05-11 20:39:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huangbl2014

铜虫 (著名写手)

送红花一朵
引用回帖:
2楼: Originally posted by 月只蓝 at 2015-05-11 20:39:08
方程(组)的求解问题,本质上可以看做是最优化问题。对于方程个数大于未知数个数的方程,求解方法上还是最优化方法,所以不存在什么技术上问题,只是说很可能找不到满足高容差限的解。
楼主给的例子,可解得:
a ...

你是怎么得到这个解的?用的什么程序,软件?其实这个例子我是随便写的一个,想不到你那么厉害!
3楼2015-05-11 20:44:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖


fegg7502: 金币+1, 鼓励交流 2015-05-12 09:43:25
引用回帖:
3楼: Originally posted by huangbl2014 at 2015-05-11 20:44:00
你是怎么得到这个解的?用的什么程序,软件?其实这个例子我是随便写的一个,想不到你那么厉害!...

1stOpt软件
获得链接:http://muchong.com/bbs/viewthread.php?tid=4586018
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2015-05-12 09:05:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

polypro

木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
huangbl2014: 金币+1, 有帮助 2015-05-12 11:29:46
这种情况比较直接的手段是枚举法,当然知道各参数的定义域会加快搜索。设N个方程组,m个变量,设置m重循环,打分函数为N个方程的残差和,可先粗扫,进一步细扫;在这个原理上的优化方法是通过快速傅里叶变换求取具有最小残差参数组合
泉涸,鱼相与处于陆,相呴以湿,相濡以沫,不如相忘于江湖。
5楼2015-05-12 09:42:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huangbl2014

铜虫 (著名写手)

引用回帖:
4楼: Originally posted by 月只蓝 at 2015-05-12 09:05:34
1stOpt软件
获得链接:http://muchong.com/bbs/viewthread.php?tid=4586018...

我用你这个软件怎么解的a=2.912295899,b=0.0584479866?

[ 发自小木虫客户端 ]
6楼2015-05-12 09:47:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
6楼: Originally posted by huangbl2014 at 2015-05-12 09:47:43
我用你这个软件怎么解的a=2.912295899,b=0.0584479866?
...

最好给出具体代码,代码相同算法相同,结果一般一致。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
7楼2015-05-12 09:52:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huangbl2014

铜虫 (著名写手)

引用回帖:
7楼: Originally posted by 月只蓝 at 2015-05-12 09:52:42
最好给出具体代码,代码相同算法相同,结果一般一致。...

MinFunction (5*a+7*b-10)^2+(9/a+10*b-7)^2+(exp(a)+b-20)^2;

[ 发自小木虫客户端 ]
8楼2015-05-12 10:02:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xzczd

木虫 (小有名气)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
huangbl2014: 金币+3, ★★★很有帮助 2015-05-12 11:30:17
这里的问题关键在于,这种情况下你要如何定义你的最优呢?以你给出的例子为例,三个公式可以利用分段函数统一为一个:
CODE:
FindFit[{{5, 7, 10}, {9, 10, 7}, {1, 1, 20}},
Piecewise[{{a x, 3 <= x <= 7}, {x/a, 7 < x < 11}}, E^a] + b y, {a, b}, {x, y}]

(*
{a -> 2.9123, b -> 0.058448}
*)

然后,你大概也发现了,这种“分段”是我自由选定的,我选了一种较为粗暴的分段方式,但是除此之外还有无数种统一公式的方法,关键还是那句话,你要怎么样定义“最优”?
小木虫Mathematica版块已毁(当然原本也不咋的),建议大家前往百度贴吧或Stackexchange。
9楼2015-05-12 10:11:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

引用回帖:
8楼: Originally posted by huangbl2014 at 2015-05-12 10:02:45
MinFunction (5*a+7*b-10)^2+(9/a+10*b-7)^2+(exp(a)+b-20)^2;
...

建议直接解方程组:

Parameters a,b;
Function (5*a+7*b-10)=0;
(9/a+10*b-7)=0;
(exp(a)+b-20)=0;
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
10楼2015-05-12 10:14:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 huangbl2014 的主题更新
信息提示
请填处理意见