我有一个存储在单元格数组中的公式列表,我解决了矩阵中的未知数。
For example, consider a 2*2 matrix:
[2x+y, 4q+z; 3x+0.5y, 2q+12z ]
如何通过设置每个单元格等于20来解决q,x,y,z? (即,q = 4,x = 5,y = 10,z = 1)
答案 0 :(得分:4)
您要求解决线性系统问题。编写线性系统的规范方法是A*x = b
,其中A
是矩阵,x
是要求解的向量,b
也是向量。使用矩阵编写问题(在数学中),系统是:
[0 2 1 0 [q [20
4 0 0 1 * x = 20
0 3 .5 0 y 20
2 0 0 12] z] 20]
在MATLAB中以数字方式求解系统:
A = [0, 2, 1, 0; 4, 0, 0, 1;, 0, 3, .5, 0; 2, 0, 0, 12];
b = [20; 20; 20; 20];
xsol = linsolve(A, b);
你也可以xsol = A \ b
。需要注意的是:如果系统超定,则linsolve
和\
都将以最小二乘意义求解系统(通常,如果A是m乘以n,则m> n时系统超定)。
xsol(1)
将给出q的值,xsol(2)
将为x等提供值...
解决方案是[4.7826; 5.0000; 10.0000; 0.8696]
答案 1 :(得分:2)
实现所需目标的一种方法是使用符号工具箱。这是一个用于求解q,x,y和z的示例代码。
Bank 0 Current assets: 446.0 millions.
Bank 1 Current assets: 250.0 millions.
Bank 2 Current assets: 269.0 millions.
Bank 3 Current assets: 200.0 millions.
Bank 4 Current assets: 375.0 millions.
Bank 5 Current assets: 250.0 millions.
Bank 6 Current assets: 280.0 millions.
Adding Bank: 3 to the list of unsafe banks.
[
[25.0, 1.0, 100.5, 4.0, 320.5],
[125.0, 2.0, 40.0, 3.0, 0],
[69.0, 0.0, 125.0, 3.0, 0],
[250.0, 2.0, 125.0],
[100.0, 0.0, 80.0, 4.0, 70.0],
[150.0, 1.0, 10.0, 2.0, 80.0, 3.0, 0]
]
The current unsafe banks are: [3]
Current assets of the banks which are not yet in unsafe list:
Bank 0 Current assets: 446.0 millions.
Bank 1 Current assets: 165.0 millions.
Bank 2 Current assets: 194.0 millions.
Bank 3 Current assets: 375.0 millions.
Bank 4 Current assets: 250.0 millions.
Bank 5 Current assets: 240.0 millions.
输出:
syms q x y z
A = [2*x+y==20, 4*q+z==20; 3*x+0.5*y==20, 2*q+12*z==20];
S = solve(A,[q x y z]);
disp([S.q S.x S.y S.z]);