s ドメインの連立方程式を解こうとしています。したがって、この連立方程式を行列形式で設定します。
a=[.4*s+s+5 -5; -5 .5*s+5]
c=[3/s; 3/(2*s)]
(1/s)*a*b=c
s が未定義であるというエラーが表示されます。b を s で解くにはどうすればよいですか?
s ドメインの連立方程式を解こうとしています。したがって、この連立方程式を行列形式で設定します。
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 は (自然に) シンボリック計算を行いません --- これはコードが行おうとしていることです。Matlab の変数は、具体的な数値、配列、または構造体などである必要があります。任意の数値の単なるプレースホルダーにすることはできません。
(ただし、Matlab のシンボリック コンピューティング ツールボックスを使用している場合を除きます。Maple や Mathematica などの環境でシンボリック コンピューティングを行うことを好むため、これは実際には使用していません。Wolfram Alpha Web サイトで問題を解決することもできます)。
しかし、s の特定の値を選択すると、必要なものを簡単に計算できます。
s = 5;
a=[.4*s+s+5 -5; -5 .5*s+5];
c=[3/s; 3/(2*s)];
b = s*(a\c);
線形反転を行うためにバックスラッシュ演算子を使用した場所。
あなたは今それを持っているはずです
(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 が別の回答で示したような別のアプローチを使用します。しかし、状況によっては象徴的な解決策が必要になることもあります。