第一篇:用python模擬三體運(yùn)動(dòng)
用python模擬三體運(yùn)動(dòng)
知乎不讓傳動(dòng)圖,大家可以移步我的博客wend.blog.ustc.edu.cn,上面有動(dòng)圖大四就要有大四的樣子,最近閑來無事,想起來以前一直想做的一件事:模擬三體運(yùn)動(dòng)。正好可以練一練python。小試牛刀先從模擬二維正方形中,彈性小球的運(yùn)動(dòng)軌跡入手,熟悉相關(guān)操作。物理情景很簡單,就是彈性小球位于正方形空間中,有某初速度,未與邊界碰撞時(shí)進(jìn)行勻速直線運(yùn)動(dòng),與邊界碰撞時(shí)發(fā)生彈性碰撞。模擬思路很簡單,在t時(shí)間,位于r處,取小時(shí)間微元dt,認(rèn)為小球在此微元內(nèi)進(jìn)行勻速直線運(yùn)動(dòng),計(jì)算t+dt時(shí)刻的位置和速度,繼續(xù)迭代。代碼如下import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animation def simData(): dt = 0.0001 d1 = 0.25 d2 = 0.25 v1 = 12 v2 = 5 while True: d1+=v1*dt d2+=v2*dt if(d1>1)or(d11)or(d2無限模擬下去,可以發(fā)現(xiàn)如果小球的初始條件不是那么特殊,小球最終將遍歷正方形中所有點(diǎn)。這里吐槽一下python的動(dòng)畫模塊,太不直觀,幫助簡直不知所云,在用動(dòng)畫展示數(shù)據(jù)這方面,mathematica就做的非常好。知乎不能發(fā)動(dòng)圖,所以我將圖片存放在請(qǐng)輸入提取碼 訪問密碼 b684 可以下載
模擬三體為了簡單,假設(shè)三個(gè)物體質(zhì)量相同,有著相同的引力系數(shù),三個(gè)物體的在t時(shí)刻的位置r、速度v都保存下來,取小時(shí)間微元dt,計(jì)算每個(gè)球所受的引力,然后計(jì)算加速度(按照xyz三個(gè)分量計(jì)算),推出t+dt時(shí)刻的位置和速度,繼續(xù)迭代。
代碼如下import numpy as npimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3d.axes3d as p3import matplotlib.animation as animationx1=[]x2=[]y1=[]y2=[]z1=[]z2=[]x3=[]y3=[]z3=[]dt=0.00002d11 =-10d12 = 0d13=0v11 =-23v12 = 20v13=0d21 = 100d22 = 0d23=5v21 = 14v22 = 38v23=0d31=0d32=100d33=45v31=0v32=-30v33=34g=1000000for i in range(5000000): d11+=v11*dt d12+=v12*dt d21+=v21*dt d22+=v22*dt d13+=v13*dt d23+=v23*dt d31+=v31*dt d32+=v32*dt d33+=v33*dt x1.append(d11)y1.append(d12)z1.append(d13)x2.append(d21)y2.append(d22)z2.append(d23)x3.append(d31)y3.append(d32)z3.append(d33)r12=pow(np.sqrt(pow(d11-d21,2)+pow(d12-d22,2)+pow(d13-d23,2)),3)+.1 r13=pow(np.sqrt(pow(d11-d31,2)+pow(d12-d32,2)+pow(d13-d33,2)),3)+.1 r23=pow(np.sqrt(pow(d31-d21,2)+pow(d32-d22,2)+pow(d33-d23,2)),3)+.1 a121=g*(d21-d11)/r12 a122=g*(d22-d12)/r12 a123=g*(d23-d13)/r12 a211=-a121 a212=-a122 a213=-a123 a131=g*(d31-d11)/r13 a132=g*(d32-d12)/r13 a133=g*(d33-d13)/r13 a311=-a131 a312=-a132 a313=-a133 a321=g*(d21-d31)/r23 a322=g*(d22-d32)/r23 a323=g*(d23-d33)/r23 a231=-a321 a232=-a322 a233=-a323 v11=v11+(a121+a131)*dt v12=v12+(a122+a132)*dt v13=v13+(a123+a133)*dt v31=v31+(a321+a311)*dt v32=v32+(a322+a312)*dt v33=v33+(a323+a313)*dt v21=v21+(a211+a231)*dt v22=v22+(a212+a232)*dt v23=v23+(a213+a233)*dt'''fig = plt.figure()ax = fig.gca(projection='3d')ax.plot(x2, y2, z2)ax2 = fig.gca(projection='3d')ax2.plot(x1, y1, z1)ax3 = fig.gca(projection='3d')ax3.plot(x3, y3, z3)#ani = animation.FuncAnimation(fig, blit=False,interval=0.01, repeat=True)plt.show()'''輸出動(dòng)畫的代碼如下import matplotlib.pyplot as pltimport mpl_toolkits.mplot3d.axes3d as p3import matplotlib.animation as animationdef update_lines(num, dataLines, lines): for line, data in zip(lines, dataLines): # NOTE: there is no.set_data()for 3 dim data...line.set_data(data[0:2, :num])line.set_3d_properties(data[2, :num])return lines# Attaching 3D axis to the figurefig = plt.figure()ax = p3.Axes3D(fig)# Fifty lines of random 3-D lines#data = [Gen_RandLine(25, 3)for index in range(1)]data=[np.array([x1,y1,z1])[:,0:1000000:1000],np.array([x2,y2,z2])[:,0:1000000:1000],np.array([x3,y3,z3])[:,0:1000000:1000]]# Creating fifty line objects.# NOTE: Can't pass empty arrays into 3d version of plot()lines = [ax.plot(dat[0, 0:1], dat[1, 0:1], dat[2, 0:1])[0] for dat in data]# Setting the axes propertiesax.set_xlim3d([-200,200])ax.set_xlabel('X')ax.set_ylim3d([-200,200])ax.set_ylabel('Y')ax.set_zlim3d([-200,200])ax.set_zlabel('Z')ax.set_title('3D Test')# Creating the Animation objectline_ani = animation.FuncAnimation(fig, update_lines, fargs=(data, lines),interval=.1, blit=False)line_ani.save('3body2.gif')plt.show()由于gif能保存的信息太少,只能保存前段的運(yùn)動(dòng)情況,所以最后的運(yùn)動(dòng)情況給出靜態(tài)圖。最后的樣子如圖所示可以發(fā)現(xiàn)在初期運(yùn)動(dòng)相當(dāng)沒有規(guī)律,幾乎陷入混沌,但是一段時(shí)間以后,有一個(gè)物體遠(yuǎn)離其他兩個(gè),剩下的兩個(gè)糾纏在一起進(jìn)行二體運(yùn)動(dòng)比翼齊飛,我試過不少初始條件,發(fā)現(xiàn)最后幾乎都會(huì)發(fā)生這種情況,可能這就是三個(gè)質(zhì)量差不多的物體的最終歸宿吧。兩個(gè)人相濡以沫,小三只好相忘于江湖。寫到這里我突然發(fā)現(xiàn),上周的GRE考試由個(gè)題大意是宇宙中沒有質(zhì)量相近的三星系統(tǒng),但是卻被觀測到了,要你用邏輯解釋這個(gè)問題。呵呵呵,直接用數(shù)學(xué)物理解釋了。如果早早寫程序的話,也許可以當(dāng)場把模擬扔到GRE出題人身邊。。
等有時(shí)間繼續(xù)嘗試一個(gè)超大質(zhì)量物體和兩個(gè)小質(zhì)量物體的運(yùn)動(dòng)情況。另一組混亂之治鎮(zhèn)樓??梢钥吹竭@組雖然初始的時(shí)候運(yùn)動(dòng)極其混亂,但是最后仍然是雙星相伴,另外一個(gè)遠(yuǎn)離。
另外補(bǔ)充一句,如果隨機(jī)產(chǎn)生初始條件的話,最終形成幾個(gè)行星繞著一個(gè)大質(zhì)量恒星轉(zhuǎn)的概率基本為0,大多數(shù)情況是星體們擦肩而過,永不回頭??梢娢覀兩钤谌绱朔€(wěn)定的太陽系是多么的幸運(yùn)。
第二篇:用Python模擬2018世界杯奪冠之路
用Python模擬2018世界杯奪冠之路
2018俄羅斯世界杯小組抽簽出爐,幾家歡喜幾家愁。世界杯從來就不乏看點(diǎn),東道主俄羅斯能走多遠(yuǎn)、德國能否衛(wèi)冕、西班牙是否有望東山再起、兩位球王誰更接近大力神杯...距世界杯開幕還有半年時(shí)間,一切都是未知數(shù),不過整個(gè)賽程已定,我完全按照賽程模擬了所有64場比賽比分1000次,得出了A~H組各自的出線形勢、每支隊(duì)伍進(jìn)四強(qiáng)的概率、以及最終的奪冠概率。一切結(jié)果,先賣個(gè)關(guān)子。做這件事分四個(gè)步驟:爬數(shù)據(jù)計(jì)算球隊(duì)進(jìn)球、失球均值,構(gòu)建泊松模型模擬1000次世界杯賽事統(tǒng)計(jì)出線概率、奪冠概率、四強(qiáng)概率爬數(shù)據(jù)上一篇文章用Python分析本賽季英超爭四形勢提到從OPTA抓取數(shù)據(jù),由于接口權(quán)限不對(duì)外公開,現(xiàn)在我改用公開的免費(fèi)數(shù)據(jù),方便大家自行抓取。這次所有比賽數(shù)據(jù)、賽程數(shù)據(jù)是我從球探網(wǎng)上抓的。利用selenium庫,我將每只參賽國家隊(duì)最近一年的比賽數(shù)據(jù)都抓取下來,保存成Pandas庫的數(shù)據(jù)框。舉個(gè)例子,這是葡萄牙國家隊(duì)的頁面,以及下面一張截圖是抓下來存儲(chǔ)的干凈數(shù)據(jù)框。葡萄牙國家隊(duì)葡萄牙國家隊(duì)的Pandas數(shù)據(jù)框計(jì)算球隊(duì)進(jìn)球、失球均值,構(gòu)建泊松模型泊松模型是模擬比賽的核心算法,理論在用Python分析本賽季英超爭四形勢文章中介紹過。針對(duì)國家隊(duì),我做了以下修改:若進(jìn)球數(shù) 4' eeimg='1'>,強(qiáng)制
。這是因?yàn)闊嵘碣愲p方實(shí)力差距過大,德國8:0馬來西亞,這種差距在世界杯決賽圈幾乎不存在。亞洲球隊(duì)與歐洲球隊(duì)水平存在一個(gè)差異值,需要整體乘以一個(gè)系數(shù)。韓國場均進(jìn)2球,相比德國場均1.5球,韓國的對(duì)手亞洲球隊(duì)居多,德國打過歐洲杯對(duì)手實(shí)力不俗,韓國的場均2球必須打折扣。得到計(jì)算結(jié)果,按進(jìn)攻實(shí)力排序,歐洲豪強(qiáng)與南美雙雄占據(jù)前列。(尾部的球隊(duì)沒有列出來)模擬1000次世界杯賽事先解決如何模擬一場比賽。淘汰賽與小組賽不同,如果打成平局必須進(jìn)行點(diǎn)球大戰(zhàn),決出勝負(fù)。點(diǎn)球大戰(zhàn)就設(shè)定各自50%概率晉級(jí),下面這個(gè)simulate_match函數(shù)傳入knockout參數(shù)為True時(shí),就會(huì)激發(fā)這個(gè)機(jī)制,返回晉級(jí)的球隊(duì)名。如果不是knockout,就是小組賽,就是輸出模擬的比分。import scipy as spimport pandas as pd# 讀取球隊(duì)進(jìn)球率、失球率參數(shù)team_strength = pd.read_csv('球隊(duì)攻防參數(shù).csv')# 每一場球生成幾次泊松隨機(jī)數(shù),次數(shù)越多隨機(jī)因素越小n_sim = 5def simulate_match(team_A, team_B, knockout=False): '''模擬一場比賽,返回主隊(duì)進(jìn)球數(shù)、客隊(duì)進(jìn)球數(shù)''' # 獲取比賽雙方進(jìn)球率、失球率 home_scoring_strength =(team_strength.loc[team_A, 'alpha'] + team_strength.loc[team_B, 'beta'])/ 2 away_scoring_strength =(team_strength.loc[team_A, 'beta'] + team_strength.loc[team_B, 'alpha'])/ 2 # 模擬n次比賽進(jìn)球數(shù)取眾數(shù) fs_A = sp.stats.mode(poisson.rvs(home_scoring_strength, size=n_sim))[0][0] fs_B = sp.stats.mode(poisson.rvs(away_scoring_strength, size=n_sim))[0][0] print(team_A, fs_A, team_B, fs_B)# 進(jìn)入淘汰賽,若平局,點(diǎn)球大戰(zhàn)晉級(jí)概率50%:50% if knockout: if fs_A == fs_B: return [team_A, team_B][sp.random.randint(0, 2)] elif fs_A > fs_B: return team_A else: return team_B return fs_A, fs_B# 例如:simulate_match('阿根廷', '尼日利亞', knockout=True)>> 阿根廷接下來是賽程,小組賽有6場每個(gè)組,8組共48場。按照賽程我手動(dòng)寫入列表里,比如A組的比賽按順序,對(duì)戰(zhàn)雙方分別是這樣:# 小組每場比賽對(duì)陣雙方:[主隊(duì), 客隊(duì)]fixture_A = [['俄羅斯', '沙特阿拉伯'], ['埃及', '烏拉圭'], ['俄羅斯', '埃及'], ['烏拉圭', '沙特阿拉伯'], ['沙特阿拉伯', '埃及'], ['俄羅斯', '烏拉圭']]然后建了一個(gè)類,每個(gè)組分別各自初始化自己的類,傳入?yún)?shù)fixture就是上面創(chuàng)建的賽程,只需調(diào)用play函數(shù)就可以模擬該小組6場比賽比分。self.table是小組積分榜,保存下來每次模擬的小組頭兩名球隊(duì)名,后面統(tǒng)計(jì)每支隊(duì)在1000次模擬里出線的次數(shù),即出線概率。class Group: '''模擬小組賽階段,直接調(diào)用.play方法。''' def __init__(self, group_teams, group_name, fixture): self.group_teams = group_teams self.group_name = group_name self.table = pd.DataFrame(0, columns=['場次', '積分', '進(jìn)球', '失球', '凈勝球'], index=self.group_teams)self.fixture = fixture self.result = None def play(self): result = [] for [team_A, team_B] in self.fixture: fs_A, fs_B = simulate_match(team_A, team_B)self.table.loc[team_A, '場次'] += 1 self.table.loc[team_B, '場次'] += 1 self.table.loc[team_A, '進(jìn)球'] += fs_A self.table.loc[team_B, '進(jìn)球'] += fs_B self.table.loc[team_A, '失球'] += fs_B self.table.loc[team_B, '失球'] += fs_A if fs_A > fs_B: self.table.loc[team_A, '積分'] += 3 elif fs_A == fs_B: self.table.loc[team_A, '積分'] += 1 self.table.loc[team_B, '積分'] += 1 elif fs_A fs_B: self.table.loc[team_B, '積分'] += 1 else: raise ValueError('比賽比分模擬有誤!')result.append([team_A, team_B, fs_A, fs_B])self.result = pd.DataFrame(result, columns=['主隊(duì)', '客隊(duì)', '主隊(duì)進(jìn)球', '客隊(duì)進(jìn)球'])self.table['凈勝球'] = self.table['進(jìn)球']-self.table['失球'] self.table.sort_values(by=['積分', '凈勝球', '進(jìn)球'], ascending=[False, False, False], inplace=True)隨后淘汰賽,16進(jìn)8、8進(jìn)
4、半決賽和決賽。賽程球探網(wǎng)給出了,包括進(jìn)入16強(qiáng)的對(duì)陣形勢,每場由哪組第一對(duì)陣哪組第二都寫清楚了,只要繼續(xù)用上面模擬比賽的方式繼續(xù)按照賽程模擬就行。至此,我可以完整模擬一屆世界杯的所有64場比賽的比分。最重要的,我記錄下每組的出線球隊(duì)、以及冠亞軍、季軍、殿軍分別是哪個(gè)國家。接下來就可以輕松循環(huán)1000次,并進(jìn)行統(tǒng)計(jì)。統(tǒng)計(jì)出線概率、奪冠概率、四強(qiáng)概率A~H組各自的出線概率我已經(jīng)統(tǒng)計(jì)完成,東道主俄羅斯的FIFA世界排名已跌至65位,不過俄羅斯抽簽抽到上上簽,有望小組出線進(jìn)入下一輪。(由于32球隊(duì)太多,圖片拆分4波展示。)A組B組出線形勢C組D組出線形勢E組F組出線形勢G組H組出線形勢以下是奪冠概率、及打進(jìn)四強(qiáng)的概率。列出了所有奪冠熱門球隊(duì)。最后,韓國隊(duì)在1000次模擬中11次進(jìn)入四強(qiáng),并有1次奪冠。這種小概率事件不禁讓我想起2015/16賽季英超,以賽季前1賠5000逆天奪冠的萊斯特城。所以,足球是圓的,任何事情都有它的可能性存在,中國國足什么時(shí)候再進(jìn)世界杯呢?
第三篇:三體運(yùn)動(dòng)的matlab演示
三體運(yùn)動(dòng)的matlab演示
figure('name','三體運(yùn)動(dòng)');%設(shè)置標(biāo)題名字
N=3;%x=zeros(1,N);y=zeros(1,N);vx=zeros(1,N);vy=zeros(1,N);ax=zeros(1,N);ay=zeros(1,N);ke=ones(1,N);x=[0,2,3];y=[0,2,0];%設(shè)置三個(gè)質(zhì)點(diǎn)的初始位置
vx=[-1.5,1,-0.8];vy=[1.2,1,0.6];%設(shè)置三個(gè)質(zhì)點(diǎn)的初始速度 ax=zeros(1,N);ay=zeros(1,N);ke=[1.5,6,2];%設(shè)置三個(gè)質(zhì)點(diǎn)的電荷相對(duì)值 M=[1,5,1];%設(shè)置三個(gè)質(zhì)點(diǎn)的質(zhì)量相對(duì)值
dt=0.005;pausetime=0.002;%設(shè)置時(shí)間微小元長度,越小演示越精細(xì),但越慢;設(shè)置暫停時(shí)間;
set(gcf,'doublebuffer','on')%消除抖動(dòng)
set(gca,'xlim',[-7 7],'ylim',[-7 7]);%設(shè)置坐標(biāo)軸范圍 hold on;axis equal;for m=1:N
p(m)=plot(x(m),y(m),'color','k','marker','.','markersize',15);%所有質(zhì)點(diǎn)初始位置以及大小設(shè)置 end
for jj=1:5000 %設(shè)定運(yùn)行距離 for m=1:N
ax(m)=0;ay(m)=0;
for n=1:N
if m~=n
ax(m)=ax(m)+ke(n)*ke(m)*(x(n)-x(m))*((x(n)-x(m))^2+(y(n)-y(m))^2)^(-1.5)/M(m);%按吸引力的格式寫的加速度,如果要改為排斥力,需要將等號(hào)后面的m和n交換位置
ay(m)=ay(m)+ke(n)*ke(m)*(y(n)-y(m))*((x(n)-x(m))^2+(y(n)-y(m))^2)^(-1.5)/M(m);
else
end
end
x(m)=x(m)+vx(m)*dt+0.5*ax(m)*dt^2;%計(jì)算質(zhì)點(diǎn)的新位置 y(m)=y(m)+vy(m)*dt+0.5*ay(m)*dt^2;vx(m)=vx(m)+ax(m)*dt;vy(m)=vy(m)+ay(m)*dt;
set(p(m),'xdata',x(m),'ydata',y(m));%設(shè)置質(zhì)點(diǎn)的運(yùn)動(dòng)過程 plot(x(m),y(m),'color','b');%畫出三個(gè)質(zhì)點(diǎn)的運(yùn)動(dòng)軌跡
if abs(x(m))>10||abs(y(m))>10 %如果質(zhì)點(diǎn)已經(jīng)運(yùn)動(dòng)到邊框外面則停止運(yùn)行,跳出該層循環(huán)
break;
end end
if abs(x(m))>10||abs(y(m))>10 %如果質(zhì)點(diǎn)已經(jīng)運(yùn)動(dòng)到邊框外面則停止運(yùn)行,停止運(yùn)行 break;end
% pause(pausetime);%暫停一會(huì) drawnow end
運(yùn)行結(jié)果
說明:更改不同的參數(shù)得到不同的運(yùn)行結(jié)果。
以上程序只是平面內(nèi)的演示,希望讀者根據(jù)平面內(nèi)的模擬程序得到空間內(nèi)的演示程序。也可以添加更多的質(zhì)點(diǎn),得到更多體的運(yùn)動(dòng),不過會(huì)使得運(yùn)行變慢,較好的計(jì)算機(jī)才能做到。如要添加到四個(gè)質(zhì)點(diǎn),則需要N=4;且x,y,vx,vy,ke,M都要相應(yīng)的有四個(gè)初始值。
程序目前存在的問題:
當(dāng)兩個(gè)質(zhì)點(diǎn)運(yùn)動(dòng)到一點(diǎn)(即發(fā)生碰撞時(shí)),會(huì)產(chǎn)生速度的突變,如何能較好解決這個(gè)問題? 如果能夠,希望能得到空間內(nèi)的演示。
見文庫內(nèi)本人所編寫其他的matlab模擬。
第四篇:三體書評(píng)
文明的靈魂史詩——三體書評(píng)(朱星光)
在多年以后,我都會(huì)記得看完《三體》的那個(gè)夜晚。合上書頁,從桌前的小窗向外眺望,夜空如往常般靜默,漆黑的天幕上綴著點(diǎn)點(diǎn)繁星,而此時(shí)此刻坐在屋內(nèi)的我,心情卻如洶涌的波濤,久久難平。
康德有句話屢屢被人們引用:“有兩種事物,我們?cè)绞浅了迹礁械剿鼈兊某绺吲c神圣,越是增加虔誠與信仰,這就是頭上的星空和心中的道德法則?!币?yàn)槲覀儗?duì)道德法則的虔誠與信仰,人類幾十萬年的文明綿延至今;因?yàn)槲覀儗?duì)頭上星空的敬畏,伴隨著現(xiàn)代科學(xué)技術(shù)的發(fā)展,人類進(jìn)入了太空時(shí)代,對(duì)自身的好奇和宇宙的探索使我們清楚地明白了這樣一個(gè)事實(shí),那就是我們周圍的一切并非理所當(dāng)然,而是奇跡。
我們居住在一個(gè)罕有的星球上,這里有合適的溫度、適宜的光照、大氣層和地磁場的庇護(hù),微生物的存在改變了空氣的結(jié)構(gòu),而昆蟲們忙忙碌碌地把生命連綴在一起,這里有季候、洋流,有一個(gè)個(gè)精妙絕倫、生機(jī)勃勃、巧奪天工的生態(tài)系統(tǒng),人類這個(gè)藍(lán)色星球上的唯一智慧生命,在這里繁衍生息,代代相傳,發(fā)展出了高度的文明。然而,越是向更高層次發(fā)展,越是向宇宙更深處前進(jìn),越是有一個(gè)問題縈繞在我們心頭:在這個(gè)浩瀚的宇宙之中,我們究竟是不是孤獨(dú)的?
《三體》這部小說,確切地說,應(yīng)該是劉慈欣的《三體》“地球往事”三部曲完美地回答了上述問題,并給我們帶來了科學(xué)與藝術(shù)上的多重思考和無窮享受。《三體》的故事起源于“文革”年代,然而這僅僅是它的起點(diǎn),由此宇宙的恢弘圖景緩緩展現(xiàn)在我們面前。
人類在無意和偶然中發(fā)現(xiàn),宇宙中我們并不孤獨(dú),半人馬星系存在著智慧生命三體文明。由于三體星系擁有三顆太陽,其不規(guī)則運(yùn)動(dòng)使三體世界的生存條件極為嚴(yán)酷,三體人的生活形態(tài)是地球文明完全難以想象的,對(duì)于這個(gè)奇異的世界,劉慈欣發(fā)揮了他在硬科幻上的特長,賦予了這個(gè)世界完全真實(shí)的物理規(guī)律和演化進(jìn)程。地球文明就像個(gè)發(fā)現(xiàn)了新大陸的孩子,好奇地向宇宙中的其他文明揮了揮手。
然而故事的發(fā)展卻出乎人類的期望,三體文明對(duì)地球文明進(jìn)行了嚴(yán)苛的技術(shù)封鎖,鎖死了地球基礎(chǔ)科學(xué)發(fā)展的同時(shí),向太陽系派出了龐大的艦隊(duì)。地球文明這時(shí)才發(fā)現(xiàn),宇宙絕不是人類所想象的那般美麗,其他文明也并不那么友好,甚至深藏禍心。我們熄滅了尋友的篝火,在黑暗中瑟瑟發(fā)抖。《三體》寫到了這里,完全可以圓滿地結(jié)束,然而劉慈欣在《三體Ⅱ·黑暗森林》中又帶領(lǐng)讀者到達(dá)了一個(gè)新的高潮,面對(duì)三體文明的進(jìn)攻,人類舉全球之力,制訂了“面壁計(jì)劃”,憑借著人類對(duì)三體人天然的思維方式上的優(yōu)勢,四位“面壁人”獨(dú)立設(shè)計(jì)的四套方案氣勢磅礴,構(gòu)思獨(dú)特,令人拍案叫絕。它們中的每一個(gè),都讓讀者以為這是終極的解決方案,然而,這些都還只是鋪墊和浮云。
假如人類在宇宙中并不孤獨(dú),那么我們與其他文明之間是什么關(guān)系?由此而生的“宇宙社會(huì)學(xué)”正是為了解決這個(gè)疑問。借由書中主人公提出的三條公理,看似平淡無奇,然而卻是對(duì)抗三體文明入侵的最后底牌,我從中讀到的是多年來未曾在類似文學(xué)作品中體會(huì)過的啟示性的震撼,一種極致的滿足,在它面前,我們只有驚嘆。
如果說前兩部著重的是對(duì)于宇宙叢林法則的冷酷描寫和人類文明的掙扎抵抗,那么《三體Ⅲ·死神永生》則是對(duì)地球文明的本質(zhì)思考。當(dāng)人類苦心經(jīng)營,想盡辦法對(duì)抗三體世界卻一次次失敗,人類和三體人最終發(fā)現(xiàn),我們都敵不過宇宙中其他極高文明的一次漫不經(jīng)心的清理操作,一片小小的“二向箔”最終終結(jié)了地球人類的全部努力、榮譽(yù)、夢(mèng)想、輝煌和光榮,那超乎一切之上的力量,要求宇宙歸零重生。此時(shí)此刻,每一個(gè)讀者都會(huì)有這樣的疑問:既然如此,我們苦苦生存的意義何在?
面對(duì)宇宙中其他文明的獸性進(jìn)攻,書中的主人公程心一次次地用近乎膽怯與懦弱的行為選擇了人性而不是獸性,救贖了這個(gè)世界,使人類仍然能在宇宙浩瀚的星河和文明中與別不同。
這也許就是地球人類文明存在的終極意義,是地球文明的靈魂史詩。
在整個(gè)《三體》“地球往事”三部曲中,劉慈欣熟練地運(yùn)用著各種前沿科技概念,在他的生花妙筆下,抽象的科學(xué)原理幻化成了具象的美麗。從三維空間進(jìn)入四維碎片的迷幻體驗(yàn),到太陽系被二維化的凄美壯麗;從跨度長達(dá)170億年的時(shí)空穿越,到一個(gè)人為了暗戀的對(duì)象買下一顆遙遠(yuǎn)的星星作為禮物那瓊瑤式的浪漫孤獨(dú);從三個(gè)隱喻深刻的童話故事,再到對(duì)人類未來世界的全景描述,細(xì)膩真摯卻又極其恢弘磅礴。
從《三體》中,我們知道,科幻文學(xué)不僅僅是人類對(duì)宇宙的莫名鄉(xiāng)愁,更是我們對(duì)命運(yùn)可能的推演和實(shí)驗(yàn)。在理性科學(xué)原理中間,隱藏著與其他文學(xué)相同的終極悲憫,并且往往因?yàn)槠浜甏蟮臄⑹嘛L(fēng)格而更顯人類命運(yùn)的悲愴。它能讓你完全沉浸在書桌旁的臺(tái)燈能夠照到的小小空間之中,摒除了喧嘩的世界,它能讓你了解自己的孤獨(dú)、悲涼和在永恒時(shí)光中的小小位置,當(dāng)人們發(fā)問:“科幻文學(xué)有什么用?”的時(shí)候,你可能很難回答,但是在夜闌人靜,手不釋卷之時(shí)你會(huì)發(fā)現(xiàn),世界上各種接近真知的努力都有唯一之核,就是對(duì)存在的追問。它的浩瀚之美讓我們的靈魂恐懼卻安寧。
劉慈欣的《三體》成功地奠立了一個(gè)新的科幻空間以及許多新的科幻定律,并樹立了一個(gè)嶄新的高度,它華麗又荒涼,它告訴我們,可以用來打破無限空間的永恒沉默的,除了坐標(biāo)廣播、引力波、空間曲率驅(qū)動(dòng)飛船外,目前可行的,就是我們的想象力和創(chuàng)造力。
文明的憂思
劉慈欣先生的長篇科幻小說《三體》終于推出了大結(jié)局,覬覦地球的外星文明和盤托出,并宣告了在四百年后等待人類的生存之戰(zhàn)。至此,《科幻世界》上大半年的連載終于告一段落?!度w》作為計(jì)劃中的《地球往事》的第一部,其完結(jié)篇不僅僅是一次漂亮的落幕,更是一場恢弘的開篇??我?guī)缀跻滩蛔∫褂酶嗟囊缑乐o。
《三體》的幻想源于經(jīng)典物理中的三體問題,即三個(gè)體積質(zhì)量相當(dāng)?shù)奶祗w,在遠(yuǎn)離其它星系以致其它星系的引力影響可忽略不計(jì)的情況下,三個(gè)天體在互相引力的作用下互相圍繞運(yùn)行,其運(yùn)行軌跡將產(chǎn)生不可預(yù)測的混沌。很多年來,數(shù)學(xué)家們一直希望能建立三體乃至多體問題的數(shù)學(xué)模型,可遺憾的是,得到的結(jié)果僅僅是三體問題在非限制條件下的不可解。劉慈欣正是基于這樣的科學(xué)事實(shí),用大膽的想象和嚴(yán)謹(jǐn)?shù)耐茢?,在三體星系的行星中構(gòu)建了一個(gè)外星文明形態(tài),并描繪了該文明在如同不可捉摸的命運(yùn)一般的“恒紀(jì)元”與“亂紀(jì)元”[注1]的輪替中,數(shù)百次的毀滅和重生。三體的故事有著廣袤的時(shí)間與空間緯度,其以明暗兩條線索發(fā)展,一條描述了科學(xué)家葉文潔在目睹了文革的瘋狂與愚昧之后,痛苦的思索著后工業(yè)時(shí)代對(duì)人本復(fù)歸的扼殺以及人類文明種種深入骨髓的病態(tài),在一次偶然的科學(xué)實(shí)驗(yàn)中,她利用太陽作為發(fā)射天線,向宇宙中發(fā)出了人類文明存在的信號(hào),多年后,她竟然收到了來自另外一個(gè)文明的回復(fù),該回復(fù)用急促的句子阻止著地球人進(jìn)一步的溝通,因?yàn)椤叭绻銈兊氖澜绫欢ㄎ唬敲茨銈儗⒈蝗肭帧?,但是出于?duì)人類文明的絕望以及對(duì)外來高等智慧道德觀念的美好幻想,葉文潔毅然的向太空中發(fā)射了回復(fù)的訊息,向外星文明表示“人類文明病入膏肓,我們需要你們的幫助改造”??于是,三體世界的艦隊(duì)開始向地球前進(jìn),并通過“智子”[注2]鎖死了地球科技的進(jìn)步,使地球文明不至于在四百年后三體艦隊(duì)到達(dá)地球時(shí)已經(jīng)遠(yuǎn)遠(yuǎn)的超過三體世界的文明水平,同時(shí),葉文潔也組織起所有地球上對(duì)人類文明深感厭倦的力量,成為地球上的三體叛軍。另一條暗線則描述了三體文明的大致形態(tài),由于三體星系運(yùn)行的混沌,該文明一直生活在朝不保夕的不可預(yù)測當(dāng)中,乃至于其文明經(jīng)歷了數(shù)百次的毀滅與重生,最后,他們拋棄了一切的人文情感,建立起一種機(jī)械般精確卻冰冷的社會(huì)形態(tài)。
劉在《后記》中介紹,他希望描述一個(gè)零道德的宇宙圖景,但是《三體》本身卻并非是零道德的,它充滿了對(duì)于人類社會(huì)的道德反思,從極權(quán)社會(huì)人性的泯滅,到人類追求利益的那條鮮血淋漓的途徑,再到后工業(yè)時(shí)代的人類沙文主義以及人類發(fā)展與環(huán)境的關(guān)系,他精確的描述了人類社會(huì)產(chǎn)生的罪惡以及現(xiàn)代主義所擔(dān)憂的科學(xué)、技術(shù)、工業(yè)給人文世界帶來的沖擊,并通過道德碰撞營造出戲劇沖突。劉本身在《三體》中未介入作任何的道德論斷——事實(shí)上,雖然作為“反派”出現(xiàn),葉文潔們所擁有的悲天憫人的情懷卻讓人不得不肅然起敬——但是這篇文章卻處處透射出對(duì)真理、美好、平等等普遍倫理的向往,并閃現(xiàn)出不少的個(gè)體光輝,值得我們獻(xiàn)上最高的贊禮。
《三體》的文字更像是一篇紀(jì)實(shí)文學(xué),在前半段,我甚至完全把《三體》看成是一次對(duì)歷史的控訴與批判,這增加了小說主題的厚度,《三體》雖然不是描述文革的小說,文革也差不多只占了六分之一的篇幅,但是這個(gè)精彩的開篇卻加深了小說的道德寓意,乃至于其始終縈繞全篇。這類扎根在現(xiàn)實(shí)基礎(chǔ)上的科學(xué)幻想,需要更為深厚的科普功底,乃至于劉自己都說,很容易寫成“即無小說的生動(dòng),又無科普的正確”,不過劉的確做到了“小說的生動(dòng)”與“科普的正確”,其在小說中涉及知識(shí)面可謂龐雜,包括基本粒子、天體研究、經(jīng)典物理、納米材料、計(jì)算機(jī)、數(shù)學(xué)、歷史??細(xì)節(jié)上的優(yōu)秀舉不勝舉,包括那個(gè)三體星系的外星文明,簡直就是《1984》的外星版!劉展現(xiàn)出的底蘊(yùn)不得不讓人驚嘆,我得說,這一篇硬科幻即使不能稱上最好,也已然擠身最優(yōu)秀的作品之列。不過,個(gè)人以為,《三體》最高明之處并不在于其情節(jié)之“懸”與科幻之“硬”,而是在于其對(duì)零道德宇宙的構(gòu)想,他將相對(duì)主義從人類社會(huì)之間升級(jí)到智慧文明與智慧文明之間,由于文明彼此都采用利于自身利益的道德觀念,從而導(dǎo)致了全宇宙范圍內(nèi)普遍倫理觀念的缺失——即零道德的宇宙。這是一個(gè)如此顯而易見的隱寓,當(dāng)我們將范圍再縮小的人類文明的程度,這豈不就是一個(gè)零道德的世界誕生的深刻內(nèi)因?
然而劉卻并沒有因此絕望。在《三體》里,有一個(gè)無足輕重的三體人在收到葉文潔的訊號(hào)以后,發(fā)出了阻止地球人進(jìn)一步聯(lián)絡(luò)的警告信號(hào),其對(duì)人類世界的同情與其個(gè)人英雄主義般的正直感超越了文明、種族的界限,這樣的個(gè)體也正是道德宇宙能夠建立,文明能和平共存的希望所在。而樹立這樣的個(gè)體范本,顯然也正是作者最終的期望。
在結(jié)尾處,三體人成功的鎖死了地球人的科技進(jìn)步,三體的艦隊(duì)將在四百年后到達(dá)地球,面對(duì)四百年后被毀滅的命運(yùn),科學(xué)家意志消沉,小說中的人物大史為了讓他們振作起來,帶他們來到一處郊外,那里正鬧蝗災(zāi),大史告訴科學(xué)家,相比人類與三體人,蝗蟲與人類的技術(shù)差距更大,人類自文明誕生以來就希望滅絕蝗蟲,但是蝗蟲依然傲然于天地間。三體人與人類同樣沒有意識(shí)到的是,“蟲子從未被消滅過”!
至此,《三體》展現(xiàn)出更為宏大的精神內(nèi)涵,體現(xiàn)出包括人類在內(nèi)的所有生命在追求生存與平等時(shí)那強(qiáng)大的生命的尊嚴(yán)!
我真是覺得沒有比這個(gè)更好的結(jié)局了。
第五篇:《三體》讀后感
《三體》讀后感
一直想看,一直又懼怕看,許多年不看小說,不是因?yàn)椴幌矚g看小說,而是時(shí)間太碎片,不利于看小說。后來開始在飛機(jī)上,為打發(fā)路上的時(shí)光,我在微信讀書上下載了該書,就這么看了起來。斷斷續(xù)續(xù)看了一年,終于于近日將《三體》看完。權(quán)且談一談自己的感受。
一個(gè)受文革迫害的女科學(xué)家在對(duì)人間徹底失望之后企圖借助外星文明來改造這個(gè)落后的世界,后來事情失控,人類開始傾全地球之力防御入侵,好不容易采取魚死網(wǎng)破的方式躲過一劫,卻發(fā)現(xiàn)真的天外有天人外有人,然后在默默等待到了一個(gè)萬萬沒想到的滅世過程……
首先還是很佩服給作者構(gòu)建的世界,描述一個(gè)有三個(gè)恒星的宇宙,以及那個(gè)世界人的生活方式,用技術(shù)鎖死給自己描述未來世界留下余地,全息化的未來城市估計(jì)不久就會(huì)到來,而居住在樹形結(jié)構(gòu)的設(shè)想可能也是一個(gè)人口膨脹的解決方案,當(dāng)然結(jié)構(gòu)什么的問題不是我等考慮的了,交通擁堵的解決只能依靠人工智能大數(shù)據(jù),這個(gè)現(xiàn)在已經(jīng)開始體現(xiàn),扯的有點(diǎn)遠(yuǎn)。當(dāng)然,最令人佩服的是作者構(gòu)建了外太空社會(huì)學(xué),探討了人們面向未知的恐懼,個(gè)體、群體在災(zāi)難面前的反應(yīng),社會(huì)變化。想象了一個(gè)更宏偉的銀河以及黑暗森林的生存法則,將宇宙的演化變成一個(gè)黑暗森林生存斗爭的結(jié)果,變成一個(gè)長時(shí)間軸上的多維空間的遞減循環(huán),當(dāng)然,整體基本沒逃脫佛家的所謂輪回吧。
第一部《地球往事》用一個(gè)游戲介紹一個(gè)陌生的三體世界,用一個(gè)案件的偵查貫穿全文還是挺佩服的。但有點(diǎn)過于炫耀自己的歷史和物理知識(shí)儲(chǔ)備了,而且采用對(duì)話形式交代故事背景的最大壞處就是語言敘事性太強(qiáng),導(dǎo)致語言不能體現(xiàn)人物性格,造成人物沒有性格,特別是對(duì)兩個(gè)關(guān)鍵人物性格的描述太缺失。讓我沒想到的是作者將文革的浩劫通過一個(gè)個(gè)體的遭遇和對(duì)這個(gè)個(gè)體的后續(xù)影響描寫了出來,看來經(jīng)歷了那個(gè)時(shí)代的文人不會(huì)放棄任何反思那段歷史的機(jī)會(huì)。
第二部《黑暗森林》是我最喜歡的一部,不管什么作品終究要去探討人性這個(gè)東西,在地球進(jìn)入三體人入侵倒計(jì)時(shí)的極端條件下人內(nèi)心的變化和社會(huì)的表現(xiàn)都是值得探討的,希望、失望、絕望,面壁、破壁、執(zhí)劍、潛伏......所謂黑暗森林的宇宙社會(huì)學(xué)構(gòu)想,也基本能說得通,雖然這個(gè)構(gòu)想基本原理出現(xiàn)的很突然,畢竟葉文潔為什么將自己悟出的宇宙社會(huì)學(xué)基本原理傳給突然出現(xiàn)的羅輯交代得不太夠,僅僅因?yàn)樗桥畠旱哪信笥衙矗窟€有章北海這個(gè)用了大筆墨描寫的一個(gè)人就這么掛了有些許可惜。
三艘戰(zhàn)艦在外太空的互相殺戮真的描寫的很棒,處于一個(gè)完全未知的太空,生存和道德的撞擊以及最后做出的盡可能體面的選擇都讓人即興奮又心寒。破壁人是自己老婆的設(shè)置也讓人眼前一亮,所謂朝夕相處的那個(gè)最信任的人居然是要?dú)⑺雷约旱娜耍蚁胂6魉古R死前的心里一定是跟王寶強(qiáng)類似的。
另外,人類對(duì)付三體人的終極武器居然是爾虞我詐的城府,這個(gè)設(shè)置也是棒棒噠。當(dāng)然,這一部另一個(gè)亮點(diǎn)就是描述了不久未來城市的樣子以及哪個(gè)城市環(huán)境下人的狀態(tài),充滿想象,也充滿期許。
第三部《死神永生》是作者炫耀寫作技巧和功底的一部,通過三則童話故事和一本回憶錄串聯(lián)整個(gè)故事,技巧滿分,可惜可讀性降低很多。這一部我最喜歡的幾個(gè)部分。
一是三體控制地球后在澳洲設(shè)置保留區(qū)(也就是集中營)的描述,讓人不得不去跟曾經(jīng)的納粹集中營類比,所謂文明的星際殖民也都逃不脫人類曾經(jīng)經(jīng)歷的影子。二是預(yù)警誤報(bào)時(shí)人們逃離的情景,不管什么時(shí)代,一旦求生成為第一要?jiǎng)?wù),人們會(huì)做出各種利己的選擇,當(dāng)然諷刺的是作者將這次逃離設(shè)置成了誤報(bào),人們?cè)诏偪襁^后居然沒有迎來末日,必須馬上去面對(duì)當(dāng)時(shí)的瘋狂,很有意思。三是雖然拗口,但是描寫了一個(gè)宇宙的黑暗生存現(xiàn)實(shí),人們?yōu)榱松婊ハ鄠?,將多維宇宙慢慢的降維,最后居然要變成0維重新爆炸重生循環(huán),當(dāng)然盡最大的想象力將太陽系變成二維的過程詳盡的描寫,對(duì)人類太空城的建設(shè)也費(fèi)了大量筆墨,充滿想象。
《三體》電影的新聞伴隨著一次次跳票而來,雖然文中引用了很多他們的劇照,但對(duì)影片本身的期待還是比較低,我認(rèn)為未來世界的構(gòu)建需要很強(qiáng)的想象力和團(tuán)隊(duì),單單一個(gè)未來城市就應(yīng)該會(huì)讓他們煞費(fèi)苦心,更別說宇宙戰(zhàn)艦和外太空城市群以及外太空,更不用說多維空間怎么視覺展現(xiàn)的問題,每一個(gè)環(huán)節(jié)不滿低于了粉絲的想象都會(huì)被反水,片方很辛苦,需要大量的人力、物力及金錢的投入。也許,看完電影,還會(huì)有觀后感。