如何寫出三體的MATLAB程序-理論分析篇

如何寫出三體的MATLAB程序-理論分析篇

寫在前面

之所以寫這個程序房揭,是因為某天晚上無聊棚瘟,室友正在學習MATLAB蝇棉,于是提議寫一個三體運動的物理模擬程序來練練手。就此澜倦,我也寫一份該程序來為室友做一個參考標準聚蝶,希望可以幫助室友進步的更快。

做出來的效果圖大概這樣子

效果圖

本系列所有代碼均在我的Github中存有備份藻治,可下載后直接運行碘勉,點擊Github: HanpuLiang/Three-Body-by-MATLAB即可進入。

三體簡介

三體一般指的就是三個物體受到相互之間的引力作用的影響而運動桩卵。一般來說验靡,因為其運動方程太過于復(fù)雜倍宾,所以并沒有解析解,并且因為對初值的敏感性胜嗓,略微變化一點初始條件就會對未來長遠的結(jié)果產(chǎn)生巨大的影響高职。

在沒有解析解的情況下,只能通過數(shù)值解的方法對微分方程組求解辞州。所以數(shù)值解的誤差也受計算步長的影響怔锌,計算步長越小越精確,但是因為數(shù)據(jù)一定會有精度变过,并不能真正的無窮小埃元,所以實際上在時間足夠長以后依舊會產(chǎn)生很大的誤差。

綜合很多原因媚狰,才會有了大劉《三體》的劇情岛杀,不然憑借三體人那么厲害的科技水平還怎么還是選擇來搞地球。

不過說到底崭孤,解不開這樣的問題還是目前人類的數(shù)學水平不行类嗤,或許以后就有辦法了呢?

但是我們這里并不用分析力學的方法求解裳瘪,因為手頭沒有演草紙土浸,推方程有點麻煩,所以直接用經(jīng)典力學的方法去模擬整個運動彭羹,這樣子相信有點物理基礎(chǔ)的大家也是可以看懂的黄伊。

運動過程分析

我們首先需要思考:

  • 三個小球到底是怎么運動的?引力作用派殷。
  • 小球運動还最,哪些量在變化?位置改變導(dǎo)致引力大小改變毡惜,引力導(dǎo)致加速度改變拓轻,加速度導(dǎo)致速度改變,速度導(dǎo)致位置改變经伙。

也就是說扶叉,我們只需要集中在三個物理量上面就好:坐標,速度(大小與方向)帕膜,加速度(大小與方向)枣氧。這就是我們所需要,隨著時間變化的垮刹,計算的所有數(shù)據(jù)达吞。

接下來就要開始引進物理公式了。

兩個物體之間的加速度

首先荒典,兩個物體之間的萬有引力可以通過公式

F=G\dfrac{m_1m_2}{r^2}

來計算酪劫,其中m_1是物體1的質(zhì)量吞鸭,m_2是物體2的質(zhì)量,G是引力系數(shù)(模擬中為方便可以設(shè)為1)覆糟,r為物體1與物體2之間的直線距離刻剥。

根據(jù)力與加速度的公式F=ma就可以得到,在t時刻滩字,物體之間相對距離為r(t-1)時(用上一次時間的距離算)透敌,加速度為

\text{物體1的加速度: }\quad a_1(t)=G\dfrac{m_2}{r(t-1)^2}

\text{物體2的加速度: }\quad a_2(t)=G\dfrac{m_1}{r(t-1)^2}

兩個物體之間的速度

在單位時間\Delta t內(nèi),兩個小球之間的速度變化量\Delta v\Delta v=a\Delta t踢械,所以可以得到t時刻的速度為

\text{物體1的速度: }\quad v_1(t)=v_1(t-1) + a_1(t)\Delta t

\text{物體2的速度: }\quad v_2(t)=v_2(t-1) + a_2(t)\Delta t

兩個小球的位置

令兩個小球的坐標分別為(x_1, y_1), (x_2, y_2),則相對距離為

r = \sqrt{(x_1-x_2)^2+(y_1-y_2)^2}

同理魄藕,在t時刻内列,受到速度由v(t-1)變化到v(t)的影響,可以簡單的得到此時刻的距離為

r(t) = r(t-1) + \Delta r

其中

\Delta r = \dfrac12(v(t-1) + v(t))\Delta t.

矢量的正交分解

眾所周知背率,位置话瞧、速度、加速度均為矢量寝姿,即存在方向和大小這兩種屬性交排,也就是說我們需要考慮矢量方向不一致時的情況。

將矢量正交分解為x軸與y軸是最簡單方便的做法饵筑。

正交分解示意圖

首先是坐標埃篓,這個已經(jīng)是分解到了x軸與y軸這個坐標系上了,畢竟我們寫出來的就是兩個點的坐標根资,如果誰還不會用坐標點繪圖就可以點右上角退出界面了架专。

其次是速度與加速度。我們以物體自身為原點建立坐標系玄帕,速度大小為v部脚,方向相對x軸正方向為\theta度,可以得到一個矢量如圖所示裤纹。根據(jù)高中知識委刘,就可以得到其在x軸與y軸上的分解為

v_x(t) = v(t)\cos\theta

v_y(t) = v(t)\sin\theta,

同樣的,加速度也可以這樣子分解鹰椒,得到

a_x(t) = a(t)\cos\theta

a_y(t) = a(t)\sin\theta.

而且挠他,x軸上的加速度只會影響x軸上的速度,所以我們分解后余佛,在計算時滨嘱,只需要分別計算xy軸的坐標變化即可,不需要再考慮方向灿椅,即

v_x(t) = v_x(t-1) + a_x(t)\Delta t.

這樣子套蒂,我們就將方向成功分解為xy軸分解進行計算钞支,大大化簡了繁瑣的方向變化問題。

矢量的疊加

但是這只是兩個物體之間的相互作用操刀,如果是三個物體的話烁挟,其中一個物體就要受到兩個力的作用。

實際上兩個力是沒有受到干擾的骨坑,所以當其分解到xy軸后撼嗓,直接將其對應(yīng)軸上的加速度直接相加即可得到總的加速度,也就是

a_{1x}(t) = a_{12x}(t) + a_{13x}(t),

其中a_{1x}就是物體1在x軸上的總的加速度欢唾,它由兩個分加速度組成:來自物體2對物體1的力的且警、在x軸的加速度a_{12x}和來自物體3對物體1的x_{13x}

其他同理礁遣,這樣子就可以完美解決所有問題了斑芜。

代碼思路

根據(jù)上面的公式分析,加速度祟霍、速度杏头、距離之間如何變化已經(jīng)很清楚了,三個物體之間的各個物理量的正交分解也很明確了沸呐,已經(jīng)可以轉(zhuǎn)化為了代碼可以實現(xiàn)的情況醇王,下面我們就需要將公式化成代碼。

不過因為這一篇博客已經(jīng)比較長了崭添,所以將本篇作為理論分析篇寓娩,下一篇博客中我們再進行詳細解釋代碼。

如果這一篇我講的比較不錯的話滥朱,還希望可以點個贊根暑、加個收藏、來個關(guān)注噢徙邻。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末排嫌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缰犁,更是在濱河造成了極大的恐慌淳地,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帅容,死亡現(xiàn)場離奇詭異颇象,居然都是意外死亡,警方通過查閱死者的電腦和手機并徘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門遣钳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人麦乞,你說我怎么就攤上這事蕴茴∪捌溃” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵倦淀,是天一觀的道長蒋畜。 經(jīng)常有香客問我,道長撞叽,這世上最難降的妖魔是什么姻成? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮愿棋,結(jié)果婚禮上科展,老公的妹妹穿的比我還像新娘。我一直安慰自己糠雨,他們只是感情好辛润,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著见秤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪真椿。 梳的紋絲不亂的頭發(fā)上鹃答,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音突硝,去河邊找鬼测摔。 笑死,一個胖子當著我的面吹牛解恰,可吹牛的內(nèi)容都是我干的锋八。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼护盈,長吁一口氣:“原來是場噩夢啊……” “哼挟纱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腐宋,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤紊服,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胸竞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欺嗤,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年卫枝,在試婚紗的時候發(fā)現(xiàn)自己被綠了煎饼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡校赤,死狀恐怖吆玖,靈堂內(nèi)的尸體忽然破棺而出筒溃,到底是詐尸還是另有隱情,我是刑警寧澤衰伯,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布铡羡,位于F島的核電站,受9級特大地震影響意鲸,放射性物質(zhì)發(fā)生泄漏烦周。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一怎顾、第九天 我趴在偏房一處隱蔽的房頂上張望读慎。 院中可真熱鬧,春花似錦槐雾、人聲如沸夭委。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽株灸。三九已至,卻和暖如春擎值,著一層夾襖步出監(jiān)牢的瞬間慌烧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工鸠儿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屹蚊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓进每,卻偏偏與公主長得像汹粤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子田晚,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

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