我試圖解決在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的問題?
我試圖解決在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的問題?
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))
執行使用符號運算符的計算的代碼是:
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在另一個答案中演示的方法。但有時這種情況需要一個象徵性的解決方案。
正是我在找的,謝謝! – 2012-02-15 02:15:49