2012-02-14 43 views
1

我試圖解決在s域中的方程組。因此,建立這個矩陣形式的方程組:在matlab中使用未指定的常量

a=[.4*s+s+5 -5; -5 .5*s+5] 
c=[3/s; 3/(2*s)] 
(1/s)*a*b=c 

我只是得到s是未定義的錯誤。 我怎樣才能解決b的問題?

回答

5

Matlab不會(自然地)做符號計算---這是你的代碼試圖做的。 Matlab的變量需要是具體的數字,數組或結構等。它們不能只是任意數字的佔位符。

(除非:您可以使用symbolic computing toolbox Matlab的我還沒有真正用這個,因爲我喜歡做象徵性的計算環境中,如楓木或數學你甚至可以解決Wolfram Alpha的網站上你的問題。)

但如果你挑s的具體數值,計算你想要的很簡單:

s = 5; 
a=[.4*s+s+5 -5; -5 .5*s+5]; 
c=[3/s; 3/(2*s)]; 
b = s*(a\c); 

如果我已經使用了backslash operator做線性反轉。

您現在應該有一個

(1/s)*a*b-c 

是零向量。

編輯:我看着符號工具箱。看起來這是你想要的(但你需要有象徵性的工具箱許可並安裝了它的工作):

syms s; 
a=[.4*s+s+5 -5; -5 .5*s+5]; 
c=[3/s; 3/(2*s)]; 
b = simple(s*(a\c)) 
+0

正是我在找的,謝謝! – 2012-02-15 02:15:49

1

執行使用符號運算符的計算的代碼是:

syms s;       %This defines 's' as a symbolic token 
a=[.4*s+s+5 -5; -5 .5*s+5];  %a and c inherit the symbolic properties from s 
c=[3/s; 3/(2*s)];     
result = solve('(1/s)*a*b=c','b') %Solve is the general symbolic toolbox algebraic solver. 

這產生

result = 
(c*s)/a 

一般來說,Matlab的效果最好爲數值工具箱。因此,根據您的應用程序,我會採用另一種方法,例如Ian Hincks在另一個答案中演示的方法。但有時這種情況需要一個象徵性的解決方案。