vibrationren 发表于 2010-1-12 13:22

请教这个矩阵如何用c程序求解

[ x' ]   [ a0, a1, a2 ]    [ x ]
[ y' ] =[ a3, a4, a5 ] *[ y ]
[ z' ]   [ a6, a7, a8 ]    [ z ]

x,y,z和x',y',z'是已知的,而且有4组
求解a0--a8, 有什么思路?

大括号不好写,左边是3x1的,中间是3x3的,右边是3x1的

Rainyboy 发表于 2010-10-1 12:07

很早的帖子了……我认为有两种思路吧。
【第一种】是把十二个数据都用完,那么求解系数a0~8的方程就是:

然后就相当于一个求超定方程的最小二乘解的问题,将系数矩阵求广义逆(加号逆)左乘到右端就可以了:

加号广义逆的求法很多,翻一翻矩阵的书就知道了,这里给出一种:

这种思路多用在已知的XYZ等数据是通过实验测得的情况下,带有一定误差的情况下,通过求多组数据的最小二乘解来得到对原系数的较好估计。
【第二种】是只用9个数据构建方程,即取上述系数矩阵的任意9行就可以了。
这样,用正常的求解线性方程组的方法就可以得到a0~8的值了。
这种思路用于已知XYZ等输入输出数据的精确值的情况下。

初来乍到,敬请批评指正!
页: [1]
查看完整版本: 请教这个矩阵如何用c程序求解