MATLAB を使用した逆ラプラス変換

Ammar Ali 2021年11月29日
MATLAB を使用した逆ラプラス変換

このチュートリアルでは、MATLAB で ilaplace() 関数を使用して逆ラプラス変換を見つける方法について説明します。

MATLAB で ilaplace() 関数を使用して逆ラプラス変換を見つける

逆ラプラス変換を使用して、ラプラスドメイン関数を時間ドメイン関数に変換します。Matlab では、ilaplace() 関数を使用して、ラプラスドメイン関数を時間ドメイン関数に変換できます。ilaplace() 関数は、3つの入力変数を除きます。最初の変数は必須であり、これはラプラスドメイン関数であり、2 番目の変数はオプションであり、ラプラスドメインの独立変数です。デフォルトでは、Matlab は変数 s を独立変数として使用し、3 番目の変数は時間領域の変換変数です。デフォルトでは、Matlab は変数 t を変換変数として使用します。たとえば、Matlab の ilaplace() 関数を使用して、関数の逆ラプラス変換を見つけましょう。以下のコードを参照してください。

syms s
fun = 1/s^2;
Output = ilaplace(fun)

出力:

Output =
 
t

上記のコードでは、見てわかるように、ilaplace() 関数にのみ関数を提供しています。ただし、変換変数を変更する場合は、その変数を 2 番目の引数として ilaplace() 関数に渡す必要があります。たとえば、変換変数 t を x に置き換えてみましょう。以下のコードを参照してください。

syms s
fun = 1/s^2;
Output = ilaplace(fun,x)

出力:

Output =
 
x

上記のコードでは見てわかるように、変換変数 t が x に変更されています。ここで、独立変数と変換変数を変更する別の例を考えてみましょう。以下のコードを参照してください。

syms a s
Fun = 1/(s-a);
Output = ilaplace(Fun)

出力:

Output =
 
exp(a*t)

上記のコードでは、ilaplace() 関数にのみ関数を提供したため、独立変数と変換変数のデフォルト値が使用されます。次に、これらの変数の両方を変更しましょう。代わりに、a を独立変数として使用し、x を変換変数として使用します。以下のコードを参照してください。

syms a s
Fun = 1/(s-a);
Output = ilaplace(Fun,a,x)

出力:

Output =
 
-exp(s*x)

上記のコードでは、見てわかるように、出力と出力の変数が変更されています。したがって、独立変数を変更すると、結果が変わります。ilaplace() 関数を使用して、行列または配列の逆ラプラス変換を見つけることもできます。独立変数と変換変数は、ラプラスドメイン関数行列と同じ次元の行列として定義できます。行列の引数が非スカラーの場合、ilaplace() 関数は要素ごとに機能します。たとえば、行列の逆ラプラス変換を見つけましょう。以下のコードを参照してください。

syms a b c d w x y z
Matrix = [1/x 1; sin(y) i*z];
var = [w x; y z];
tVars = [a b; c d];
Output = ilaplace(Matrix,var,tVars)

出力:

Output =
 
[             dirac(a)/x,       dirac(b)]
[ ilaplace(sin(y), y, c), dirac(1, d)*1i]

行列の出力も同じ次元の行列になります。多項式の逆ラプラス変換を見つけたいが、方程式全体を Matlab で記述したくないとします。その場合、分子と分母の多項式係数のみを書くことができます。次に、poly2sym() 関数を使用して、多項式係数をシンボリック多項式に変換できます。poly2sym() 関数は 2つの入力引数を除き、最初の引数は多項式係数ベクトルであり、2 番目の引数は多項式に追加するシンボルです。たとえば、多項式の逆ラプラス変換を見つけましょう。以下のコードを参照してください。

syms s t;
numerator=[1 1];
denominator=[1 3 5];
numS=poly2sym(numerator,s);
denS=poly2sym(denominator,s);           
Fun=numS./denS

Output = ilaplace(Fun,s,t)
NumericOutput = vpa(Output)

出力:

Fun =
 
(s + 1)/(s^2 + 3*s + 5)
 
 
Output =
 
exp(-(3*t)/2)*(cos((11^(1/2)*t)/2) - (11^(1/2)*sin((11^(1/2)*t)/2))/11)
 
 
NumericOutput =
 
exp(-1.5*t)*(cos(1.6583123951776999245574663683353*t) - 0.30151134457776362264681206697006*sin(1.6583123951776999245574663683353*t))

Fun は上記の出力の多項式であり、変数 Output はその逆ラプラス変換です。見てわかるように、変数 Output には、解決されていない累乗と除算が含まれています。簡略化された数値結果を取得するには、関数 vpa() を使用して結果を数値形式に変換します。この例では、数値結果は変数 NumericOutput に格納されます。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook