使用matlab求解具有n变量和m未知的方程

时间:2013-12-16 12:18:05

标签: matlab variables

我想在matlab中求解n变量和m未知的方程; 首先,我使用下面的代码生成n变量:

 clear;close all;clc;
M=rand(10,3);
x=M(:,1);y=M(:,2);z=M(:,3);
fu=[];
syms B0 B1 B2 e 

for i=1:10
eval(['fu' '= B0+B1*x+B2*y+e-z'])  
end

现在我有10个变量,4个未知它们是B0,B1,B2,e

我想解决这个方程, 使用solve

solve('fu=0','B0','B1','B2','e')

但我看到错误 我怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

仅仅因为你有4个未知数的10个方程并不意味着a)有一个解决方案可以完全适合所有这些方程,并且b)MATLAB可以找到它。对于所有情况,solve绝对不是最好的工具。

如果您需要数值解法,可以使用linsolve。你的每个方程都可以用下面的形式写出来(我把e和B0合并成一个单独的常数值,B0,因为如果两者都不知道的话,就没有办法解决这两个问题):

B0*1 + B1*x + B2*y = z

构造一个包含1,x和y值的矩阵:

M = [ones(length(x),1),x,y]; 
B = linsolve(M,z);

B应该是三个数字的向量 - 这些是您的B0B1B2M*B应该返回约z(对于随机数情况,它不是很好)。