如何求解矩阵方程的最接近解(算法,C库均可)我有一个矩阵方程A=BC,其中A是一个3X1矩阵(3阶向量),B是一个3X4矩阵,C是4X1矩阵(4阶向量),其中A和C有许多已知,B是未知的,要解出B的所有参数.

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 12:57:21
如何求解矩阵方程的最接近解(算法,C库均可)我有一个矩阵方程A=BC,其中A是一个3X1矩阵(3阶向量),B是一个3X4矩阵,C是4X1矩阵(4阶向量),其中A和C有许多已知,B是未知的,要解出B的所有参数.

如何求解矩阵方程的最接近解(算法,C库均可)我有一个矩阵方程A=BC,其中A是一个3X1矩阵(3阶向量),B是一个3X4矩阵,C是4X1矩阵(4阶向量),其中A和C有许多已知,B是未知的,要解出B的所有参数.
如何求解矩阵方程的最接近解(算法,C库均可)
我有一个矩阵方程A=BC,其中A是一个3X1矩阵(3阶向量),B是一个3X4矩阵,C是4X1矩阵(4阶向量),其中A和C有许多已知,B是未知的,要解出B的所有参数.请问应该如何求解B的最接近的解(描述一下算法,或者提供可以解这个问题的算法的名称,或者已经存在的C++库等等)?
(其中A和C有很多,比如A1=B*C1, A2=B*C2,..., 但是有一定误差,所以不能解出一个B就停下,所以需要是能随着A和C的对应数量能提升B的解的精确度,比如有20对A和C求解出的B,与200对A和C解出的B的精确度应该是后者更为精确)
高分求助,能帮忙解决问题的追加加分,谢谢~~~

如何求解矩阵方程的最接近解(算法,C库均可)我有一个矩阵方程A=BC,其中A是一个3X1矩阵(3阶向量),B是一个3X4矩阵,C是4X1矩阵(4阶向量),其中A和C有许多已知,B是未知的,要解出B的所有参数.
本人学过点计算数学,跟你的问题有点相像,但是这个只是理论,不知道实际能不能解决.当然了你这个问题应该叫反问题,如果你不限定条件,会有无数组解.我只是提供一种解法,如果有实际背景会有约束条件.
利用矩阵的拉直(下面设为vec(.),一般是按列拉直,就是把第一列第二列.,按顺序放到一个向量里),可以将矩阵方程变为向量方程.下面矩阵大写,向量小写
a(3*1)=B(3*4)c(4*1)其中ai,ci,i=1...N.那么按照i列放第i个向量成矩阵A=(ai)3*N,C=(ci)4*N.方程就变成A(3*N)=B(3*4)C(4*N).一般我会把未知量写右面,所以转置这个矩阵方程,还用原来的符号变成C(N*4)B(4*3)=A(N*3).拉直有个性质:vec(ABC)=(A⊙C)vec(B)
所以那个方程就变成(C(N*4)⊙I(3*3))(3N*12)vec(B)(12*1)=vec(A)(3N*1),这是一个向量方程矩阵的规模是:3N*12*12*1=3N*1,一般都是3N>>12,所以要解个超定方程,一般我用最小二乘法.这个你会吧.推导就不说了,直接上方程
(C⊙I)'(C⊙I)vec(B)=(C⊙I)'vec(A)
这种方程求解规模比较大,如果有特殊结构可以快速计算,比如(C⊙I)是什么结构我就忘了,可以用fft2算.当年用的是matlab,应该可以算出来一组解.对于N=20,200..会更精确我不敢保证.这个相当于拟合,你认为在平面上拟合直线会因为点多而收敛到比较好的结果吗,估计每次结果都不太一样.废话多了,大致步骤如下:
1.用矩阵拉直的性质,把矩阵方程(求B)化为向量方程(求vec(B‘)):
(C’⊙I)vec(B‘)=vec(A’)
2.用最小二乘法求那个向量方程得到结果,即求下面这个方程:(C⊙I)'(C⊙I)vec(B)=(C⊙I)'vec(A)
还是不知道讲明白没,具体细节可以hi我,工作日白天都在.

那你应该先对这20对或者200对矩阵A和C先算出来一个能充分代表矩阵A或C的矩阵。举个例子来说吧,对于矩阵A,A的第一行第一列的值是这样所出来的:分别取出这20个矩阵A的第一行第一列的值进行处理,这样处理:算出这个20个值的平均值a作为新矩阵的第一行第一列的值,相应的位置也做如此处理。将新的到的矩阵A和C用来求B,那么B=A*(C的逆矩阵)
程序中的A和C的值如程序中所示,求B矩阵的具体程...

全部展开

那你应该先对这20对或者200对矩阵A和C先算出来一个能充分代表矩阵A或C的矩阵。举个例子来说吧,对于矩阵A,A的第一行第一列的值是这样所出来的:分别取出这20个矩阵A的第一行第一列的值进行处理,这样处理:算出这个20个值的平均值a作为新矩阵的第一行第一列的值,相应的位置也做如此处理。将新的到的矩阵A和C用来求B,那么B=A*(C的逆矩阵)
程序中的A和C的值如程序中所示,求B矩阵的具体程序如下:
using CCT;
using System;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
CCT.Matrix Mx = CCT.Matrix.Ins;
double[,] A = new double[,]{
{ 5,2,1},
{-1,4,2},
{ 2,-3,10}
};
double[,] C = new double[,] {
{ 35,12,11},
{-51,4,2},
{ 25,-12,16}
};
Mx.Display(Mx.Multiply(A,Mx.Invert(C)));
System.Console.ReadKey();
}
}
}
此程序需要引入:CCT.dll
程序的输出结果为:
0.140494137353434 -0.0172738693467337 -0.0319304857621441
0.230318257956449 0.152010050251256 -0.0523450586264657
0.141226968174204 0.298209798994975 0.490630234505863

收起

如何求解矩阵方程的最接近解(算法,C库均可)我有一个矩阵方程A=BC,其中A是一个3X1矩阵(3阶向量),B是一个3X4矩阵,C是4X1矩阵(4阶向量),其中A和C有许多已知,B是未知的,要解出B的所有参数. 如何求解矩阵方程 解符号矩阵方程:axb=cxa,其中a,b,c为列向量,x为行向量,求x的解,用a,b,c如何表示,或者MATLAB如何求解该符号方程 矩阵相乘的算法 该如何理解p q r是矩阵A B的行和列 矩阵C 的算法是 for(i=0;i 如何矩阵解方程 我是刚刚听说矩阵的菜鸟 求三阶矩阵A的逆矩阵C语言算法程序 线性代数求解矩阵方程 矩阵方程,求解 求解矩阵方程 矩阵方程AXB=C的matlab程序利用矩阵张量积求解矩阵方程AXB=C 其中X不是‘叉乘’是‘爱克斯’ 求助MATLAB解矩阵方程问题如何求解方程A=B*RA,B都是3×4的已知矩阵R是含有3个未知数的4×4矩阵谢谢各位啦 matlab求12*12的系数矩阵我的矩阵方程是这样的A*B=C;A是一个12*12的系数矩阵,B和C是一个12*1的列阵;请问用matlab如何求解系数矩阵A? 求解矩阵方程.谢谢了 二分法求解的算法用二分法求方程x^5-3x+1=0在(0,1)的近似解,精确到c=0.001,写出算法. 怎样用C语言代码写出矩阵的n次方算法? MATLAB求根请问要使图中矩阵的行列式为0,x的值是多少?怎么用MATLAB求解?不要手工展开行列式,因为真正要解的矩阵比较复杂.是超越方程该如何处理? MATLAB 求根请问要使图中矩阵的行列式为0,x的值是多少?如何用MATLAB求解?不要手工展开行列式,因为提问只是举个例子,真正要解的矩阵很复杂.是超越方程该如何处理? 求解矩阵方程的秩麻烦请写出解题过程,