在Matlab中求解矩阵的未知数

时间:2015-11-22 17:20:40

标签: matlab matrix

我有一个存储在单元格数组中的公式列表,我解决了矩阵中的未知数。

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)

2 个答案:

答案 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]);