matlab - 以符号方式求解矩阵方程

标签 matlab matrix solver

我正在尝试 Matlab,目前正在尝试求解我编写的一个简单的矩阵方程。这是我的脚本:

syms b1 b2 b3 

A = [1 2; 2 1; 3 3];

B = [b1; b2; b3];

X = linsolve(A, B)

输出为

Warning: System is inconsistent.
Solution does not exist. 

X =

 Inf
 Inf

我可能做错了什么?


编辑:

好的,我已经解决了。然而,现在我正在尝试完成其他事情。

这是我输入的内容:

C = [1 2 3 b1; 2 1 6 b2; 3 3 5 b3];

rref(C)

结果是:

[ 1, 0, 0, (3*b3)/4 - b2/12 - (13*b1)/12]
[ 0, 1, 0,               (2*b1)/3 - b2/3]
[ 0, 0, 1,            b1/4 + b2/4 - b3/4]

但是,我想要创建一个矩阵,使得第三行为 0 = f(b1, b2, b3),也就是说,我希望第三行在左侧和右侧为 0仅涉及 b1、b2 和/或 b3。我该怎么办?我尝试将每个条目都放入变量中,但这似乎不起作用。

这就是输出:

[ 1, 0, 0,  (a2*a6*b3 - a3*a5*b3 - a2*a9*b2 + a3*a8*b2 + a5*a9*b1 - a6*a8*b1)/(a1*a5*a9 - a1*a6*a8 - a2*a4*a9 + a2*a6*a7 + a3*a4*a8 - a3*a5*a7)]
[ 0, 1, 0, -(a1*a6*b3 - a3*a4*b3 - a1*a9*b2 + a3*a7*b2 + a4*a9*b1 - a6*a7*b1)/(a1*a5*a9 - a1*a6*a8 - a2*a4*a9 + a2*a6*a7 + a3*a4*a8 - a3*a5*a7)]
[ 0, 0, 1,  (a1*a5*b3 - a2*a4*b3 - a1*a8*b2 + a2*a7*b2 + a4*a8*b1 - a5*a7*b1)/(a1*a5*a9 - a1*a6*a8 - a2*a4*a9 + a2*a6*a7 + a3*a4*a8 - a3*a5*a7)]

最佳答案

您正在定义一个包含 3 个方程且只有 2 个未知数的方程组。一般来说,如果方程的数量大于未知数的数量,那么系统几乎总是没有解。尝试 A = [1 2; 2 1] 且 B = [b1; b2],你应该得到一个答案,因为这样你就有了与未知数相同数量的方程,在这种情况下,系统的解将存在,并且只要 A 是可逆的,它也是唯一的。

关于matlab - 以符号方式求解矩阵方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21489743/

相关文章:

Java,矩阵溢出

matrix - 如何比较两个单应矩阵?

c++ - Matlab矩阵逆函数在C++中的Eigen实现

MATLAB:保存为图后 plotyy 中未对齐的框

math - 投影-将3d转换为2d

python - Pyomo CBC 求解器错误 : Solver (cbc) returned non-zero return code (3221225781); Solver (cbc) did not exit normally

excel - 使用 VBA 将约束添加到求解器工具

z3 求解器背后的算法

matlab - 如何在Matlab的Classification Learner App中传递数据集

MATLAB:是否可以在 native 构造(单元、结构等)上重载运算符?