人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

時系列 a(t) と g(t) 及び定数 C が与えられたとき、以下の常微分方程式を r(t) について解きたいと思っています。

dr(t)/dt = 1/C*{ a(t)-g(t)*r(t) }

(つまりコンダクタンスと入力が可変の RC 回路です。)

質問:
(1) これを解析的に解くことはできるでしょうか? 出来るとしたらどういう式になるでしょうか?
つまり r(t) = f( a(t), g(t), C) という形の式が欲しいのです。無理ならなぜ無理かということも合わせて教えていただくとありがたいです。工学系の一般教養として基礎的な解析学は履修したはずですが、ほとんど忘れています。

(2) もし無理なら、 Runge-Kutta 法で数値解を求めるより効率の良い解法はあるでしょうか?
a(t), g(t) はそれぞれ数万点の離散サンプルで、そのまま解くと結構時間がかかるのでこれを出来るだけ高速に解きたいと思っています。

●質問者: satehasateha
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:DT RC ほと クタ 一般教養
○ 状態 :終了
└ 回答数 : 1/2件

▽最新の回答へ

1 ● LaLaLa
●60ポイント ベストアンサー

定数変化法で解けるようです。

まず、a(t) = 0 の場合の解が r(t) = r(0) exp[-G(t)] となることに注意します。ここで G(t) は g(t)/C の時刻0からtまでの定積分です。

G(t) = int_0^t g(u)/C du (*)

次に、a(t)がゼロでない一般の場合の解を r(t) = X(t) exp[-G(t)] と仮定します。ここで、X(t) は未知関数でこれから決めます。(定数 r(0) を未知関数で置き換えたので「定数変化法」。)この r(t) の式を常微分方程式に代入すると、 X(t) が満たすべき条件

dX(t)/dt = (a(t)/C) exp[G(t)]

が得られます。初期条件より X(0) = r(0) なので

X(t) = r(0) + int_0^t (a(u)/C) exp[G(u)] du (**)

よって、求める解は次のようになります。

r(t) = r(0) exp[-G(t)] + int_0^t (a(u)/C) exp[G(u)-G(t)] du

時刻0から時刻tまでの効果の足し合わせ(積分)でr(t)が決まる、というイメージの解です。

数値解を得るには、定積分(*)と(**)を台形則などで実行すれば良さそうです。G(u)がおとなしい関数なら、(**)の積分は exp[G(u)] exp[-G(t)] のように、積の形にばらして行った方が速いと思います。

◎質問者からの返答

早速のご回答ありがとうございました。助かります。

> 定数変化法で解けるようです。

言われてみると確かにそんな解法を習った気がします。使わないと忘れるものですね・・・。

> r(t) = r(0) exp[-G(t)] + int_0^t (a(u)/C) exp[G(u)-G(t)] du

なるほど今度は数値積分をする必要が出てくるわけですね。でも微分の形よりはこちらの方が最適化しやすそうです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ