我想在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')
但我看到错误 我怎么解决这个问题?
答案 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应该是三个数字的向量 - 这些是您的B0
,B1
和B2
。 M*B
应该返回约z
(对于随机数情况,它不是很好)。