| Download
All published worksheets from http://sagenb.org
Project: sagenb.org published worksheets
Views: 168738Image: ubuntu2004
desolve_in_japanese
system:sage
Hiroshi TAKEOTO ([email protected])
エンジニアにとって身近な微分方程式をsageを使って解いてみます。
RC回路
RC直列回路の放電
以下のような抵抗(R)とコンデンサー(C)の回路で、
- 抵抗の両端の電圧を
- コンデンサーの両端の電圧を
キルヒホッフの法則から回路を一周したときの電圧降下は0となります。 となり、コンデンサーからの電流が、であることから、
となります。これをsageを使って解くと以下のようになります。微分方程式の解法にはdesolve関数を使います。
desolve(微分方程式, [求める関数と変数のリスト], [初期値のリスト])
\newcommand{\Bold}[1]{\mathbf{#1}}e^{-\frac{t}{C R}}
RC直列回路の充電
つぎに、t=0から電圧V0を掛けて充電した場合のVcの変化を見てみましょう。 以下のような回路で、スイッチを1から2に入れたときの変化になります。
ここで、は、単位ステップ関数、 です。
式(1)では右辺が0であり、このような方程式は斉次方程式と呼ばれ、式(2)のように右辺が0でない方程式は非斉次方程式と呼ばれます。 非斉次方程式の解は、
非斉次方程式の一般解 = 斉次方程式の一般解 + 非斉次方程式の一つの解(特解)から求めることができます。
- 非斉次方程式の一つの解(特解)は、スイッチを入れて長い間放っておいた状態を表す解(定常状態の解)であり、特解はとなります。
- desolveの結果から、斉次方程式の一般解は、と求まりました。
ラブラス変換を使った微分方程式の解法
ラプラス変換を使用して微分方程式の解を求めることができます。ただし、求めることができるのは一般解ではなく「初期値問題」における特殊解です。ラブラス変換とは
ラプラス変換とは、関数に を掛け、t について0 から無限大まで積分したものです。その積分はs の関数になるが、これをもとの関数のラプラス変換とよび、と表します。 ここで、はに無関係な変数であり、は実変数である。逆にはの逆変換とよび、と表します。\newcommand{\Bold}[1]{\mathbf{#1}}\mathcal{L}\left(f\left(t\right), t, s\right)
一般的なラプラス変換の例
主な関数のラプラス変換をした結果を以下に示します。元の関数 | ラプラス変換結果 |
1 | |
\delta 1
1 1/s
t s^(-2)
t^2 2/s^3
t^{n} s^(-n - 1)*gamma(n + 1)
\cos\left(\omega t\right) s/(omega^2 + s^2)
\sin\left(\omega t\right) omega/(omega^2 + s^2)
e^{a t} -1/(a - s)
t e^{a t} (a - s)^(-2)
ラプラス変換の性質
ラプラス変換の性質で、特質すべきはラプラス変換の微分によってが掛けられる点です。 これをsageを使って表現すると以下のようになります。s*laplace(f(t), t, s) - f(0)
微分方程式の解法
ラブラス変換を使った微分方程式の解法は、以下の手順で行います。- 微分方程式にラプラス変換を施し、微分方程式を変数t領域から変数s領域へ移します
- 得られた方程式は演算子の代数方程式となるので、代数計算により解を求める
- 求めたs 関数の解を逆ラプラス変換を用いてt の関数に変換する
(s*laplace(V(t), t, s) - V(0))*C*R + laplace(V(t), t, s) == 0
\left[\mathcal{L}\left(V\left(t\right), t, s\right) = \frac{C R V\left(0\right)}{{(C R s + 1)}}\right]
C*R/(C*R*s + 1)
e^(-t/(C*R))
これで、ラプラス変換からもの解を得ることができました。
次に微分方程式(2)に対しても同様にやってみます。
\left[\mathcal{L}\left(V\left(t\right), t, s\right) = \frac{{(C R s V\left(0\right) + 1)}}{{(C R s^{2} + s)}}\right]
\frac{1}{C R s^{2} + s}
-e^(-t/(C*R)) + 1
微分方程式(1)と同様微分方程式(2)も期待した解を得ることができました。
maximaを使った微分方程式の解法
sageでもある程度の微分方程式は解くことができますが、初期値の柔軟性という点では、maximaに一日の長があるようです。次に以下の微分方程式をmaximaを使って解いてみます。 maximaを使った微分方程式の解法は以下の手順で行います。
- maximaインタフェースを使って微分方程式を定義する
- ode2関数を使って微分方程式を解く
- ic1またはic2を使って初期条件をセットする
y={{{\it c}-\cos x}\over{x^3}}
-(cos(x) + 1)/x^3
y=-(cos(x)+1)/x^3
このようにsageを使って微分方程式を様々な手法で解くことにより、解の検証も可能です。
是非、この機会にsageを使って微分方程式を解いてみてください。