解方程我在一個單元陣列一些像這樣的線性方程(方程的數量每次不同):在單元陣列
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