解方程我在一个单元阵列一些像这样的线性方程(方程的数量每次不同):在单元阵列
equs = { '2*X1+X2+6', '3*X2-X1' }
如何解决这些方程用Matlab? 我可以简单地通过这个功能让我的答案是:
ans = solve(equs(1), equs(2));
但是,由于方程的数目每一次不同,我想这是自动完成的。
解方程我在一个单元阵列一些像这样的线性方程(方程的数量每次不同):在单元阵列
equs = { '2*X1+X2+6', '3*X2-X1' }
如何解决这些方程用Matlab? 我可以简单地通过这个功能让我的答案是:
ans = solve(equs(1), equs(2));
但是,由于方程的数目每一次不同,我想这是自动完成的。
我假设你想要的公式等于0,而且没有等号出现在方程。
解析表达式来查找系数 - 放入矩阵(A)。 我在这里使用近把戏,假设变量始终X1,X2等,还必须写*作乘法符号。 FindCoeffs函数通过为变量分配1和0来查找系数。 然后,您可以使用linsolve来求解方程。
function FindEquations()
a = {'x1+x2 - 6 ','x1 - x2 - 2'};
A = [];
B = [];
for i=1:numel(a)
[b,l] = FindCoeefs(a{i}, numel(a));
A(end+1,:) = l;
B(end+1) = -b;
end
linsolve(A,transpose(B))
end
function [b,p] = FindCoeefs(expr, n)
for j=1:n
eval(sprintf('x%d=0;',j));
end
b = eval([expr ';']);
p = zeros(1,n);
for i=1:n
for j=1:n
eval(sprintf('x%d=0;',j));
end
eval(sprintf('x%d=1;',i));
p(i) = eval([expr ';']) - b;
end
end
可以通过使用解决存储在单元阵列的等式:
solve(equs{:})
Works为未知,太(如果它们没有适当通过symvar
测定):
uvar={x,y}
solve(equs{:},uvar{:})
在这种情况下,“解决”是什么意思?你期望答案是你的榜样? – 2012-01-14 19:18:30
我想X1和X2 ...例如X1 = 1和X2 = 2 – 2012-01-14 19:20:39
但你没有任何方程。等式涉及'='。 – 2012-01-14 19:24:24