- 締切済み
非線形微分方程式ax'+bx+cxx'+d=0
線形微分方程式にはある程度決まった解法があるのですが、 非線形微分方程式は、これといった解き方がなく、 ケースバイケースで解いていかなければいけません。 非線形微分方程式ax'+bx+cxx'+d=0は解けるものなのでしょうか。 ただし、xはt(時間)の関数です。x'=dx/dtを意味します。 解き方が分かる方がいらっしゃいましたらよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- inara1
- ベストアンサー率78% (652/834)
他でも「 alogy+by=ct+d 」の解を質問されていますが、訂正させてください。 その質問(http://sanwa.okwave.jp/qa5169605.html)の ANo.2 さんが LambertのW関数をグラフ化されていますが、W(x) の値は、-1/e < x < 0 のとき値が1つに定まりません。したがって [1] の説明にある「単調増加関数」というのは間違いです。
- inara1
- ベストアンサー率78% (652/834)
y = x + (d/b) でなく、y = x - (d/b) とおいたほうがいいと思います。 問題の微分方程式の解もケースバイケースです。h07m さんのように y = x + (d/b) とおくことができるのは b ≠ 0 の場合です。ちゃんと場合分けすればそれぞれの解が得られます。補足質問にある「ここから y = ? の形に変換できません」の解き方は最後に書いてあります。 (A) b ≠ 0 の場合 問題の微分方程式を変形して x' = -( d + b*x )/( a + c*x ) --- (1) y = x - (d/b) とおくと、式(1)は y' = -y/{ ( a*b - c*d )/b^2 + ( c/b )*y } → { ( a*b - c*d )/( b^2*y ) + c/b }*y' = -1 → ( a*b - c*d )/( b^2 )*ln(y) + (c/b)*y = -t + C(定数) --- (2) となります。この解は a*b - c*d が = 0 か≠ 0 かで異なります。 (A-1) a*b - c*d = 0 の場合 c = 0 のとき、a*b - c*d = 0 から a = 0 となります(b ≠ 0なので)。したがって元の微分方程式に a = 0、c = 0 を代入すれば b*x + d = 0 → x = -d/b c ≠ 0 のとき 式(2)に a*b - c*d = 0 を代入すれば (c/b)*y = -t + C → y = -(b/c)*t + C' = x - (d/b) → x = -(b/c)*t + C'' または x = -(d/a)*t + C'' (A-2) a*b - c*d ≠ 0 の場合 c = 0 のとき、式(2)から ( a/b )*ln(y) = -t + C → y = exp{ b*( -t + C )/a } = x - (d/b) ---- b ≠ 0 で a*b - c*d ≠ 0 で c=0 なので a ≠ 0 → x = d/b + C'*exp( -b*t/a ) c ≠ 0 のとき この解は初等関数では表わせません。LambertのW関数を使えば y = の形にできますが、計算が面倒なので後で説明します。 (B) b = 0 の場合 問題の微分方程式に b = 0 を代入して変形すれば x' = -d/( a + c*x ) --- (3) (B-1) d= 0 のとき x' = 0 なので x = C(定数)が解です。 (B-2) d ≠ 0 のとき 式(3)をの両辺に a + c*x をかければ ( a + c*x )*x' = -d 両辺を t で積分すれば a*x + (c/2)*x^2 = -d*t + C(定数) c が = 0 か≠ 0 かで場合分けしてxについて解きます。 【 (A-2)のc ≠ 0 のときの解について 】 b ≠ 0 で a*b - c*d ≠ 0 の場合の式(2) ( a*b - c*d )/( b^2 )*ln(y) + (c/b)*y = -t + C(定数) において、A = ( a*b - c*d )/( b^2 )、B = c/b とおけば A*ln(y) + B*y = -t + C --- (4) とすっきりします。この解 y は初等関数で表すことはできないのですが、LambertのW関数というのを使えば y = の形にできます。 式(4)の両辺を A で割ると(a*b - c*d ≠ 0 なので A ≠ 0 ) ln(y) + (B/A)*y = ( -t + C )/A (B/A)*y はln[ exp { (B/A)*y } ] と書けるのでこれを代入すれば ln(y) + ln[ exp { (B/A)*y } ] = ( -t + C )/A ln の和を1つにまとめれば ln[ y*exp { (B/A)*y } ] = ( -t + C )/A ln をはずせば y*exp { (B/A)*y } = exp{ ( -t + C )/A } 両辺に B/A をかければ(a*b - c*d ≠ 0 なので A ≠ 0 ) (B/A)*y*exp { (B/A)*y } = (B/A)*exp{ ( -t + C )/A } z = (B/A)*y とおくと z*exp(z) = (B/A)*exp{ ( -t + C )/A } -- (5) この解 z はLambertのW関数 [1] で表わされます。LambertのW関数というのは z*exp(z) = q の解 z = W(q) のことです。この関数Wを使えば式(5)の解zは z = W[ (B/A)*exp{ ( -t + C )/A } ] と書けます。z = (B/A)*y だったので y = (A/B)*z = ( A/B )*W[ (B/A)*exp{ ( -t + C )/A } ] c ≠ 0 なので B ≠ 0 です。A = ( a*b - c*d )/( b^2 )、B = c/b とおいたのでこれらを元に戻せば y = ( a/c - d/b )*W[ exp{ b^2*( -t + C )/( a*b - c*d ) }/( a/c - d/b ) ] したがって x = d/b + y = d/b + ( a/c - d/b )*W[ exp{ b^2*( -t + C )/( a*b - c*d ) }/( a/c - d/b ) ] となります。 ここで a/c - d/b の値ですが、これに b*c ( b≠0、c≠0 なのでb*c≠0 )をかけると a*b - c*d (≠ 0)なので、 a/c - d/b ≠ 0 です。また、LambertのW関数の定義域は -1/e < なので、-1/e < exp{ b^2*( -t + C )/( a*b - c*d ) }/( a/c - d/b ) が解の存在条件です。さらに、式(2)で y が ln の中にあるので、y > 0 つまり、x > d/b でなければなりません。 [1] LambertのW関数 y*exp(y) = x を満たすような関数 y = W(x) のことです。W(x) の定義域は -1/e < x で( e はネピア数)、W(0) = 0 の単調増加関数です。この関数の性質は[2]に出ています。 [2] http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%99%E3%83%AB%E3%83%88%E3%81%AEW%E9%96%A2%E6%95%B0
- Ae610
- ベストアンサー率25% (385/1500)
一般解の形によっては、y=の式に表現出来ないことは幾らでもあり得ます。
- Ae610
- ベストアンサー率25% (385/1500)
ax'+bx+cxx'+d=0 (a,b,c,dは定数・・・!?) であれば解ける。 x'(a+cx)=-(d+bx)であるから x'=-(d+bx)/(a+cx) となって、適当な変換を行う事で、変数分離形に出来る。
お礼
たしかに、変数分離になるのですが、 x' = -(d+bx)/(a+cx) (a+cx)/(d+bx)x' = -1 y = x-(d/b)とおく。 [[cy+{(ab+cd)/b}]/y](dy/dt) = -1 [c+{(ab+cd)/b}(1/y)]dy = -dt 両辺積分して cy+{(ab+cd)/b}logy = -t+A (A:積分定数) となるのですが、ここからy=?の形に変換できません。 どうしたら良いのでしょうか。 おねがいします。
補足
たしかに、変数分離になるのですが、 x'=-(d+bx)/(a+cx) (a+cx)/(d+bx)x'=-1 y=x-(d/b)とおく。 [[cy+{(ab+cd)/b}]/y](dy/dt)=-1 [c+{(ab+cd)/b}(1/y)]dy=-dt 両辺積分して cy+{(ab+cd)/b}logy=-t+A (A:積分定数) となるのですが、ここからy=?の形に変換できません。 どうしたら良いのでしょうか。 おねがいします。