wwb624 发表于 2009-6-18 14:56

Matlab如何求解二元二次超定方程组?

在Matlab中如果求解一个二元二次方程,现在只有两个方程可以用solve求解出所有的解。但是当存在多余2个方程的时候(即为超定方程组时),该如何求解呢??还能用Solve函数吗?

比如下面的方程:
a1*x^2+b1*x+c1*y^2+d1*y=e1
a2*x^2+b2*x+c2*y^2+d2*y=e2
a3+b3*x+c3*y=e3

x,y为未知数,其他的为已知数,求解x,y.

VibrationMaster 发表于 2009-6-18 19:33

用fmin求e1^2+e2^2+e3^2的最小解

[ 本帖最后由 friendchj 于 2009-6-18 22:06 编辑 ]

wwb624 发表于 2009-6-19 11:43

回复 沙发 VibrationMaster 的帖子

你的意思是将方程转换成:
a1*x^2+b1*x+c1*y^2+d1*y-e1=f1
a2*x^2+b2*x+c2*y^2+d2*y-e2=f2
a3+b3*x+c3*y-e3=f3
再用fminsearch求解最小值min(f1+f2+f3),得到最终的未知数的值是不是??
很有道理。
但是这个fminsearch是需要初始解才能得到最终的解的。假如不知道初始解该如何求解呢??

[ 本帖最后由 ChaChing 于 2009-6-19 13:19 编辑 ]

VibrationMaster 发表于 2009-6-19 16:51

1.fminsearch求解最小值min(f1^2+f2^2+f3^2)
2.一般非线性问题的数值解往往都是迭代法,因而需要初值
3.初值可以试出来或者对原始方程作简化然后定性分析出一个解的大体范围来确定初值。
4.非线性问题很少有一劳永逸的一统天下的解法
5.正因为如此,才让我们有事做,有饭吃
页: [1]
查看完整版本: Matlab如何求解二元二次超定方程组?