布拉休斯數(shù)值解

布拉休斯方程如下:

f f^{''}+2f^{'''}=0 \\ f(0)=f^{'}(0)=0;f^{''}(0)=1
假設二階導數(shù)作為一階導數(shù)的斜率赚爵,做1階插值法迭代計算一階導數(shù)的值棉胀,叫做一階

這是一個非線性常微分方程,下面我們利用四階龍格庫塔方法來求解該方程冀膝,相當于找了3個值去插入斜率乘以微元量唁奢。

我們引入新的變量:

y_1=f \\ y_2=f^{'} \\ y_3=f^{''}

則四階布拉休斯方程可以等價的表示如下:

\begin{equation} \left\{ \begin{aligned} &y_1^{'} = y_2 \\ &y_2^{'} = y_3 \\ &y_3^{'} = -\frac{1}{2}y_1 y_3 \end{aligned} \right . \end{equation}

具有五階精度
利用四階龍格庫塔有:

\begin{equation} \left\{ \begin{aligned} &y_{n+1}=y_n+\frac{h}{6}(K_1+2K_2+2K_3+K_4) \\ &K_1 = f(x_n, y_n) \\ &K_2 = f(x_n+\frac{h}{2}, y_n+\frac{h}{2}K_1) \\ &K_3 = f(x_n+\frac{h}{2}, y_n+\frac{h}{2}K_2) \\ &K_4 = f(x_n+h, y_n+h K_3) \\ \end{aligned} \right . \end{equation}

對于(3)式中的第一式利用龍哥庫塔方法,有:

\begin{equation} \left\{ \begin{aligned} &y_1^{n+1}=y_1^{n}+\frac{h}{6}(K_{11}+2K_{12}+2K_{13}+K_{14}) \\ &K_{11} = y_2^{n} \\ &K_{12} = y_2^{n} + \frac{h}{2}K_{11} \\ &K_{13} = y_2^{n} + \frac{h}{2}K_{12} \\ &K_{14} = y_2^{n} + h K_{13} \\ \end{aligned} \right . \end{equation}

同理窝剖,對于(3)中的第二式:

\begin{equation} \left\{ \begin{aligned} &y_2^{n+1}=y_2^{n}+\frac{h}{6}(K_{21}+2K_{22}+2K_{23}+K_{24}) \\ &K_{21} = y_3^{n} \\ &K_{22} = y_3^{n} + \frac{h}{2}K_{21} \\ &K_{23} = y_3^{n} + \frac{h}{2}K_{22} \\ &K_{24} = y_3^{n} + h K_{23} \\ \end{aligned} \right . \end{equation}

對于(3)中的第三式:

\begin{equation} \left\{ \begin{aligned} &y_3^{n+1}=y_3^{n}+\frac{h}{6}(K_{31}+2K_{32}+2K_{33}+K_{34}) \\ &K_{31} = -\frac{1}{2}y_1^{n}y_3^{n} \\ &K_{32} = -\frac{1}{2}(y_1^{n} + \frac{h}{2}K_{31})(y_3^{n} + \frac{h}{2}K_{31}) \\ &K_{33} = -\frac{1}{2}(y_1^{n} + \frac{h}{2}K_{32})(y_3^{n} + \frac{h}{2}K_{32}) \\ &K_{34} = -\frac{1}{2}(y_1^{n} + hK_{33})(y_3^{n} + hK_{33}) \\ \end{aligned} \right . \end{equation}
可執(zhí)行代碼

import numpy

from matplotlib import pyplot

def GetEtaFun( eta, f1, f2, alpha ):
    eeta = []
    ff1  = []
    ff2  = []
    vv   = []
    n = len( eta )
    a13 = alpha **( 1.0/ 3.0 )
    a23 = alpha **( 2.0/ 3.0 )
    oa13 = 1.0 / a13
    for i in range( n ):
        my_eta = eta[ i ] * oa13
        my_f1 = a13 * f1[ i ]
        my_f2 = a23 * f2[ i ]
        
        v = 0.5 * ( my_eta * my_f2 - my_f1 )

        ff1.append( my_f1 )
        ff2.append( my_f2 )
        eeta.append( my_eta )
        vv.append( v )
    return eeta, ff1, ff2, vv

def RungeKutta():
    deta = 0.01
    eta  = 0

    etaN = 10.0
    n = int( etaN/deta )
    print("n=",n)
    
    f1 = 0.0
    f2 = 0.0
    f3 = 1.0
    ff1 =[f1]
    ff2 =[f2]
    ff3 =[f3]
    eeta=[eta]
    
    half = 0.5
    h = deta;
    y1 = [f1, f2, f3 ]
    y2 = [0, 0, 0]
    y3 = [0, 0, 0]
    y4 = [0, 0, 0]
    k1 = [0, 0, 0]
    k2 = [0, 0, 0]
    k3 = [0, 0, 0]
    k4 = [0, 0, 0]
    
    for i in range( n ):
        k1[0] = y1[1]
        k1[1] = y1[2]
        k1[2] = - half * y1[0] * y1[2]
       
        y2[0] = y1[0] + half * h * k1[0]
        y2[1] = y1[1] + half * h * k1[1]
        y2[2] = y1[2] + half * h * k1[2]
        
        k2[0] = y2[1]
        k2[1] = y2[2]
        k2[2] = - half * y2[0] * y2[2]
        
        y3[0] = y1[0] + half * h * k2[0]
        y3[1] = y1[1] + half * h * k2[1]
        y3[2] = y1[2] + half * h * k2[2]
        
        k3[0] = y3[1]
        k3[1] = y3[2]
        k3[2] = - half * y3[0] * y3[2]
        
        y4[0] = y1[0] + h * k3[0]
        y4[1] = y1[1] + h * k3[1]
        y4[2] = y1[2] + h * k3[2]
        
        k4[0] = y4[1]
        k4[1] = y4[2]
        k4[2] = - half * y4[0] * y4[2]        
        
        coef = 1.0 / 6.0 * h
       
        y1[0] = y1[0] + coef * ( k1[0] + 2 * k2[0] + 2 * k3[0] + k4[0] )
        y1[1] = y1[1] + coef * ( k1[1] + 2 * k2[1] + 2 * k3[1] + k4[1] )
        y1[2] = y1[2] + coef * ( k1[2] + 2 * k2[2] + 2 * k3[2] + k4[2] )
        
        
        eta += h
        
        print( eta, y1[0], y1[1], y1[2] )
        ff1.append(y1[0])
        ff2.append(y1[1])
        ff3.append(y1[2])
        eeta.append(eta)
    alpha = y1[1]**(-3/2.0)
    print( "alpha=", alpha, "nstep=", n )
    
    etaList, f1List, f2List, vList = GetEtaFun( eeta, ff1, ff2, alpha )
    
    #pyplot.plot( eeta, ff1 )
    #pyplot.plot( eeta, ff2 )
    #pyplot.plot( eeta, ff3 )
    pyplot.figure(1)
    pyplot.plot( etaList, f2List )
    pyplot.figure(2)
    pyplot.plot( etaList, vList )
    pyplot.figure(3)
    pyplot.plot( f2List, etaList )
    pyplot.figure(4)
    pyplot.plot( vList, etaList )
    pyplot.show()


def main():
    RungeKutta()
    
if __name__ == "__main__":
    main()

執(zhí)行發(fā)現(xiàn)結(jié)果接近0.332

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末麻掸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赐纱,更是在濱河造成了極大的恐慌脊奋,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疙描,死亡現(xiàn)場離奇詭異诚隙,居然都是意外死亡,警方通過查閱死者的電腦和手機起胰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門久又,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人效五,你說我怎么就攤上這事地消。” “怎么了畏妖?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵脉执,是天一觀的道長。 經(jīng)常有香客問我戒劫,道長半夷,這世上最難降的妖魔是什么婆廊? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮玻熙,結(jié)果婚禮上否彩,老公的妹妹穿的比我還像新娘疯攒。我一直安慰自己嗦随,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布敬尺。 她就那樣靜靜地躺著枚尼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砂吞。 梳的紋絲不亂的頭發(fā)上署恍,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音蜻直,去河邊找鬼盯质。 笑死,一個胖子當著我的面吹牛概而,可吹牛的內(nèi)容都是我干的呼巷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼赎瑰,長吁一口氣:“原來是場噩夢啊……” “哼王悍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起餐曼,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤压储,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后源譬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體集惋,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年踩娘,在試婚紗的時候發(fā)現(xiàn)自己被綠了芋膘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡霸饲,死狀恐怖为朋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情厚脉,我是刑警寧澤习寸,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站傻工,受9級特大地震影響霞溪,放射性物質(zhì)發(fā)生泄漏孵滞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一鸯匹、第九天 我趴在偏房一處隱蔽的房頂上張望坊饶。 院中可真熱鬧,春花似錦殴蓬、人聲如沸匿级。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痘绎。三九已至,卻和暖如春肖粮,著一層夾襖步出監(jiān)牢的瞬間孤页,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工涩馆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留行施,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓魂那,卻偏偏與公主長得像蛾号,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子冰寻,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容