Google ClassroomGoogle Classroom
GeoGebraClasse GeoGebra

1階線形は積微分と部分積分で

このワークシートはMath by Codeの一部です。 今回も、方程式のタイプに応じた解法となる、基本的な視点をふやそう。 微分方程式で式が単純なのは、もちろん微分が1階(1回)だけで、式も線形のものだ。 だから、1階線形のタイプについて、さらに視点をふやしてみよう。 yのn階微分をy(n)と書き、Akがxの関数、ΣAk*y(k)=0のとき、線形同次Akが定数なら、特に、定数線形同次というね。 線形だとしても、さらに、=0ではなく、=B(x)のとき、それぞれ非同次という。

微分方程式y'=-y+e^2xは1階線形

1.1階線形

<定数変化法> 定数変化法は同次方程式の一般解の定数を変数として変化させて、非同次方程式の解を求める方法。 たとえば、dy/dx-y=xはdy/dx=x+yとなり、y/xの式ではないので、同次ではないね。 そこでx=0としておきあとで復活させる。 ・dy/dx=y。1/y dy=1 dxで変数分離すると、∫1/y dy=∫1 dxによって、log|y|=x+c   Cを定数とする一般解はy=Cex ・このCをxの関数として、c(x)とおき、もとの式に代入しよう。y=c(x)exとおく。 このyを最初の式に入れると、dy/dx-y=(c(x))'ex+c(x)(ex)'-c(x)(ex)=(c(x))'ex=x。 最後の等式を変形して、dc(x)/dx=x/ex=x・e-x 。c(x)=∫e-x x dxとなる。 部分積分する。∫Gf = FG- ∫fGとして、 f,G=e-x,xとするとF,g=-e-x,1 から、Fg=-e-xとなり積分はe-xだから、c(x)=x・(-e-x)-e-x+D。 つまり非同次の一般解はy=(x・(-e-x)-e-x+D)ex  y=-x-1+Dex <1階線形微分方程式> 上と同様にしてdy/dx+p(x)y=q(x)についても、 いったんq(x)=0として、∫1/ydy=-∫p(x)dx=r(x)とおくと、(r(x))'=-p(x)となる。 log|y|=r(x)+C、Cを定数とする一般解がy=Cer(x) 。C=c(x)として、y=c(x)er(x) 積の微分(FG)'= fG+Fgから、 dy/dx+p(x)y=(c'(x)er(x)+c(x)(er(x) )')+p(x)c(x)er(x)=q(x) r(x)'=-p(x)によって相殺される部分がある。 c'(x)er(x)=q(x) だから、c(x)=∫ q(x)・e-r(x)dx+D。 つまり、 y=er(x)(∫ q(x)・e-r(x)dx+D)   r(x)=-∫p(x)dxとするとき (別解) dy/dx+p(x)y=q(x) r=∫p(x)dxとおき、両辺にerをかけると、 dy/dx er + p(x) y er = q(x) er 左辺は積の微分法則を逆算すると、y' (er) + y (p(x) er )=(yer )' だから、(yer )' =q(x) er つまり、yer = ∫q(x) er dx+c r=∫p(x)dxとするときy=1/er (∫ q(x)・erdx+c)    (例) y'+y=e2x p(x)=1,q(x)=e2xから、∫p(x)dx=∫1dx=xだから、 y=1/ex (∫e2xex+c)=1/ex (∫e3x+c)=1/ex (1/3e3x+c) y=1/3e2x+c/ex

微分方程式y'+y = xy^2はベルヌーイ型

微分方程式y'+y = xy^3はベルヌーイ型

2.ベルヌーイ型

ベルヌーイ型は線形1階に似ているけれど、xだけの項の代わりにxだけの項にynをかけた形 dy/dx+p(x)y=q(x)yn の微分方程式だ。 z=y1-n=y/ynと変数変換すると、1/(1-n)dz/dx+p(x)z=q(x)と、1階線形に直せる(理由) 合成関数の微分で、dz/dx=dz/dy dy/dx= (y1-n) dy/dx =(1-n)/yn dy/dx dy/dx= 1/(1-n) dz/dx yn と変形できる。もとの式に代入すると、 1/(1-n) dz/dx yn+p(x)y=q(x)yn 両辺をynで割る。 1/(1-n) dz/dx +p(x)z=q(x) これで、zの一階線形に変換できたね。 (例) y'+y = xy2 1-n=-1から、z=y-1とおくと - z' + z =x から、 z' - z =-x から、 p(x)=-1, q(x)=-x r=∫p(x)dx=∫(-1)dx=-xとおくと、1階線形と部分積分で(integral(e-x)=-e-x,(-x)'=-1)から、 z=1/er (∫ q(x)・erdx+c)=1/e-x (∫ (-x)・e-xdx+c)=ex (∫ (-x)・e-x dx+c)=ex {(-x)(-e-x)-∫(-1)(-e-x)+D)} z=x+1+exD=y-1 y=1/(x+1+exD) (例) y'+y = xy3 1-n=-2から、z=y-2とおくと (-1/2) z' + z =x から、 z' -2 z =-2x から、 p(x)=-2, q(x)=-2x r=∫p(x)dx=∫(-2)dx=-2xとおくと、1階線形, 部分積分で(integral(e-2x)=-1/2e-2x,(-2x)'=-2)から、 z=1/er (∫ q(x)・erdx+c)=1/e-2x (∫ (-2x)・e-2xdx+c)=e2x {(-2x)(-1/2e-2x)-∫(-2)(-1/2e-2x)+D)} =e2x {xe-2x+1/2e-2x+D)}= x + 1/2 + De2x =y-2 y2(x+1/2+e2xD)=1

ロジスティックモデル

3.ロジスティック

指数関数のグラフは時間とともに急激に増大してしまう 人口爆発予測の曲線として使われたりする。 でも、実際は人口が無限大ということはなく、 どこかで頭打ちがあるだろう。 それも表せるのが ロジスティックモデルだ。 y'- Ay=- By2(A,Bは正の定数) これは、ベルヌーイ型でもあるね。 y'-Ay = -By2 1-n=-1から、z=y-1とおくと - z' -A z =-B から、 z' + Az =B から、 p(x)=A, q(x)=B r=∫Adx=Axとおくと、1階線形と部分積分で(integral(eAx)=1/AeAx,(B)'=0)から、 z=1/er (∫ q(x)・erdx+c)=1/eAx (∫ (B)・e-Axdx+c)=1/eAx (∫ (B)・e-Ax dx+c) =1/eAx{(B)(1/AeAx)-∫(0)(1/Ae-Ax)+D)}=1/eAx {(B/A)eAx+D} z=(B/A) + D/eAx=y-1 y=1/(B/A+D/eAx)となるね。 これは、xが時間、yが人口で B=0なら指数型人口増加のモデルy=(1/D)eAx(Dは正)なる。 微分方程式はy'=Ayで、人口増加のスピードdy/dxは、そのときの人口y(x)に比例するというマルサスの法則にあてはまるね。 Bが正なら、制御項(- By2)が効いていて単調に変化して、極限値A/Bに収束する。 y(0)がA/Bより少ないときはDが正で単調増加し、y(0)がA/Bより多いときはDが負で単調減少する。

4.実装

質問:1階線形微分方程式をsympyで解くにはどうしたらよいでしょうか。 yが関数であることをy=Function('y')で宣言します。 y'+y=e2x は、y'をDerivative(y(x),x)、yをy(x)で、e^2xをexp(2*x)とします。 等式なので、eq=Eq(Derivative(y(x),x) +y(x), exp(2*x)と等式自体を変数にしましょう。 これをy(x)の陽関数としての微分方程式を解くために dsolve(eq,y(x))としましょう。 y=1/3e2x+c/ex が求められるはずです。 #[IN]========================== from sympy.abc import * from sympy import * y = Function('y') eq = Eq(Derivative(y(x), x)+y(x), exp(2*x)) dsolve(eq, y(x)) #[OUT]=========================
Image
だから、もちろん、ベルヌーイ型でも同じようにできるでしょう。 なれてきたら、1行でかけますね。yをy(x)として書くことだけ気をつけよう。 y'+y = xy2 y=1/(x+1+exD) #[IN]======================= dsolve( Eq(Derivative(y(x), x)+y(x), x*y(x)**2), y(x)) #[OUT]=========================
Image