第一篇:用python模拟三体运动
用python模拟三体运动
知乎不让传动图,大家可以移步我的博客wend.blog.ustc.edu.cn,上面有动图大四就要有大四的样子,最近闲来无事,想起来以前一直想做的一件事:模拟三体运动。正好可以练一练python。小试牛刀先从模拟二维正方形中,弹性小球的运动轨迹入手,熟悉相关操作。物理情景很简单,就是弹性小球位于正方形空间中,有某初速度,未与边界碰撞时进行匀速直线运动,与边界碰撞时发生弹性碰撞。模拟思路很简单,在t时间,位于r处,取小时间微元dt,认为小球在此微元内进行匀速直线运动,计算t+dt时刻的位置和速度,继续迭代。代码如下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无限模拟下去,可以发现如果小球的初始条件不是那么特殊,小球最终将遍历正方形中所有点。这里吐槽一下python的动画模块,太不直观,帮助简直不知所云,在用动画展示数据这方面,mathematica就做的非常好。知乎不能发动图,所以我将图片存放在请输入提取码 访问密码 b684 可以下载
模拟三体为了简单,假设三个物体质量相同,有着相同的引力系数,三个物体的在t时刻的位置r、速度v都保存下来,取小时间微元dt,计算每个球所受的引力,然后计算加速度(按照xyz三个分量计算),推出t+dt时刻的位置和速度,继续迭代。
代码如下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()'''输出动画的代码如下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能保存的信息太少,只能保存前段的运动情况,所以最后的运动情况给出静态图。最后的样子如图所示可以发现在初期运动相当没有规律,几乎陷入混沌,但是一段时间以后,有一个物体远离其他两个,剩下的两个纠缠在一起进行二体运动比翼齐飞,我试过不少初始条件,发现最后几乎都会发生这种情况,可能这就是三个质量差不多的物体的最终归宿吧。两个人相濡以沫,小三只好相忘于江湖。写到这里我突然发现,上周的GRE考试由个题大意是宇宙中没有质量相近的三星系统,但是却被观测到了,要你用逻辑解释这个问题。呵呵呵,直接用数学物理解释了。如果早早写程序的话,也许可以当场把模拟扔到GRE出题人身边。。
等有时间继续尝试一个超大质量物体和两个小质量物体的运动情况。另一组混乱之治镇楼。可以看到这组虽然初始的时候运动极其混乱,但是最后仍然是双星相伴,另外一个远离。
另外补充一句,如果随机产生初始条件的话,最终形成几个行星绕着一个大质量恒星转的概率基本为0,大多数情况是星体们擦肩而过,永不回头。可见我们生活在如此稳定的太阳系是多么的幸运。
第二篇:用Python模拟2018世界杯夺冠之路
用Python模拟2018世界杯夺冠之路
2018俄罗斯世界杯小组抽签出炉,几家欢喜几家愁。世界杯从来就不乏看点,东道主俄罗斯能走多远、德国能否卫冕、西班牙是否有望东山再起、两位球王谁更接近大力神杯...距世界杯开幕还有半年时间,一切都是未知数,不过整个赛程已定,我完全按照赛程模拟了所有64场比赛比分1000次,得出了A~H组各自的出线形势、每支队伍进四强的概率、以及最终的夺冠概率。一切结果,先卖个关子。做这件事分四个步骤:爬数据计算球队进球、失球均值,构建泊松模型模拟1000次世界杯赛事统计出线概率、夺冠概率、四强概率爬数据上一篇文章用Python分析本赛季英超争四形势提到从OPTA抓取数据,由于接口权限不对外公开,现在我改用公开的免费数据,方便大家自行抓取。这次所有比赛数据、赛程数据是我从球探网上抓的。利用selenium库,我将每只参赛国家队最近一年的比赛数据都抓取下来,保存成Pandas库的数据框。举个例子,这是葡萄牙国家队的页面,以及下面一张截图是抓下来存储的干净数据框。葡萄牙国家队葡萄牙国家队的Pandas数据框计算球队进球、失球均值,构建泊松模型泊松模型是模拟比赛的核心算法,理论在用Python分析本赛季英超争四形势文章中介绍过。针对国家队,我做了以下修改:若进球数 4' eeimg='1'>,强制
。这是因为热身赛双方实力差距过大,德国8:0马来西亚,这种差距在世界杯决赛圈几乎不存在。亚洲球队与欧洲球队水平存在一个差异值,需要整体乘以一个系数。韩国场均进2球,相比德国场均1.5球,韩国的对手亚洲球队居多,德国打过欧洲杯对手实力不俗,韩国的场均2球必须打折扣。得到计算结果,按进攻实力排序,欧洲豪强与南美双雄占据前列。(尾部的球队没有列出来)模拟1000次世界杯赛事先解决如何模拟一场比赛。淘汰赛与小组赛不同,如果打成平局必须进行点球大战,决出胜负。点球大战就设定各自50%概率晋级,下面这个simulate_match函数传入knockout参数为True时,就会激发这个机制,返回晋级的球队名。如果不是knockout,就是小组赛,就是输出模拟的比分。import scipy as spimport pandas as pd# 读取球队进球率、失球率参数team_strength = pd.read_csv('球队攻防参数.csv')# 每一场球生成几次泊松随机数,次数越多随机因素越小n_sim = 5def simulate_match(team_A, team_B, knockout=False): '''模拟一场比赛,返回主队进球数、客队进球数''' # 获取比赛双方进球率、失球率 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次比赛进球数取众数 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)# 进入淘汰赛,若平局,点球大战晋级概率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场每个组,8组共48场。按照赛程我手动写入列表里,比如A组的比赛按顺序,对战双方分别是这样:# 小组每场比赛对阵双方:[主队, 客队]fixture_A = [['俄罗斯', '沙特阿拉伯'], ['埃及', '乌拉圭'], ['俄罗斯', '埃及'], ['乌拉圭', '沙特阿拉伯'], ['沙特阿拉伯', '埃及'], ['俄罗斯', '乌拉圭']]然后建了一个类,每个组分别各自初始化自己的类,传入参数fixture就是上面创建的赛程,只需调用play函数就可以模拟该小组6场比赛比分。self.table是小组积分榜,保存下来每次模拟的小组头两名球队名,后面统计每支队在1000次模拟里出线的次数,即出线概率。class Group: '''模拟小组赛阶段,直接调用.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=['场次', '积分', '进球', '失球', '净胜球'], 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, '进球'] += fs_A self.table.loc[team_B, '进球'] += 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=['主队', '客队', '主队进球', '客队进球'])self.table['净胜球'] = self.table['进球']-self.table['失球'] self.table.sort_values(by=['积分', '净胜球', '进球'], ascending=[False, False, False], inplace=True)随后淘汰赛,16进8、8进
4、半决赛和决赛。赛程球探网给出了,包括进入16强的对阵形势,每场由哪组第一对阵哪组第二都写清楚了,只要继续用上面模拟比赛的方式继续按照赛程模拟就行。至此,我可以完整模拟一届世界杯的所有64场比赛的比分。最重要的,我记录下每组的出线球队、以及冠亚军、季军、殿军分别是哪个国家。接下来就可以轻松循环1000次,并进行统计。统计出线概率、夺冠概率、四强概率A~H组各自的出线概率我已经统计完成,东道主俄罗斯的FIFA世界排名已跌至65位,不过俄罗斯抽签抽到上上签,有望小组出线进入下一轮。(由于32球队太多,图片拆分4波展示。)A组B组出线形势C组D组出线形势E组F组出线形势G组H组出线形势以下是夺冠概率、及打进四强的概率。列出了所有夺冠热门球队。最后,韩国队在1000次模拟中11次进入四强,并有1次夺冠。这种小概率事件不禁让我想起2015/16赛季英超,以赛季前1赔5000逆天夺冠的莱斯特城。所以,足球是圆的,任何事情都有它的可能性存在,中国国足什么时候再进世界杯呢?
第三篇:三体运动的matlab演示
三体运动的matlab演示
figure('name','三体运动');%设置标题名字
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];%设置三个质点的初始位置
vx=[-1.5,1,-0.8];vy=[1.2,1,0.6];%设置三个质点的初始速度 ax=zeros(1,N);ay=zeros(1,N);ke=[1.5,6,2];%设置三个质点的电荷相对值 M=[1,5,1];%设置三个质点的质量相对值
dt=0.005;pausetime=0.002;%设置时间微小元长度,越小演示越精细,但越慢;设置暂停时间;
set(gcf,'doublebuffer','on')%消除抖动
set(gca,'xlim',[-7 7],'ylim',[-7 7]);%设置坐标轴范围 hold on;axis equal;for m=1:N
p(m)=plot(x(m),y(m),'color','k','marker','.','markersize',15);%所有质点初始位置以及大小设置 end
for jj=1:5000 %设定运行距离 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);%按吸引力的格式写的加速度,如果要改为排斥力,需要将等号后面的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;%计算质点的新位置 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));%设置质点的运动过程 plot(x(m),y(m),'color','b');%画出三个质点的运动轨迹
if abs(x(m))>10||abs(y(m))>10 %如果质点已经运动到边框外面则停止运行,跳出该层循环
break;
end end
if abs(x(m))>10||abs(y(m))>10 %如果质点已经运动到边框外面则停止运行,停止运行 break;end
% pause(pausetime);%暂停一会 drawnow end
运行结果
说明:更改不同的参数得到不同的运行结果。
以上程序只是平面内的演示,希望读者根据平面内的模拟程序得到空间内的演示程序。也可以添加更多的质点,得到更多体的运动,不过会使得运行变慢,较好的计算机才能做到。如要添加到四个质点,则需要N=4;且x,y,vx,vy,ke,M都要相应的有四个初始值。
程序目前存在的问题:
当两个质点运动到一点(即发生碰撞时),会产生速度的突变,如何能较好解决这个问题? 如果能够,希望能得到空间内的演示。
见文库内本人所编写其他的matlab模拟。
第四篇:三体书评
文明的灵魂史诗——三体书评(朱星光)
在多年以后,我都会记得看完《三体》的那个夜晚。合上书页,从桌前的小窗向外眺望,夜空如往常般静默,漆黑的天幕上缀着点点繁星,而此时此刻坐在屋内的我,心情却如汹涌的波涛,久久难平。
康德有句话屡屡被人们引用:“有两种事物,我们越是沉思,越感到它们的崇高与神圣,越是增加虔诚与信仰,这就是头上的星空和心中的道德法则。”因为我们对道德法则的虔诚与信仰,人类几十万年的文明绵延至今;因为我们对头上星空的敬畏,伴随着现代科学技术的发展,人类进入了太空时代,对自身的好奇和宇宙的探索使我们清楚地明白了这样一个事实,那就是我们周围的一切并非理所当然,而是奇迹。
我们居住在一个罕有的星球上,这里有合适的温度、适宜的光照、大气层和地磁场的庇护,微生物的存在改变了空气的结构,而昆虫们忙忙碌碌地把生命连缀在一起,这里有季候、洋流,有一个个精妙绝伦、生机勃勃、巧夺天工的生态系统,人类这个蓝色星球上的唯一智慧生命,在这里繁衍生息,代代相传,发展出了高度的文明。然而,越是向更高层次发展,越是向宇宙更深处前进,越是有一个问题萦绕在我们心头:在这个浩瀚的宇宙之中,我们究竟是不是孤独的?
《三体》这部小说,确切地说,应该是刘慈欣的《三体》“地球往事”三部曲完美地回答了上述问题,并给我们带来了科学与艺术上的多重思考和无穷享受。《三体》的故事起源于“文革”年代,然而这仅仅是它的起点,由此宇宙的恢弘图景缓缓展现在我们面前。
人类在无意和偶然中发现,宇宙中我们并不孤独,半人马星系存在着智慧生命三体文明。由于三体星系拥有三颗太阳,其不规则运动使三体世界的生存条件极为严酷,三体人的生活形态是地球文明完全难以想象的,对于这个奇异的世界,刘慈欣发挥了他在硬科幻上的特长,赋予了这个世界完全真实的物理规律和演化进程。地球文明就像个发现了新大陆的孩子,好奇地向宇宙中的其他文明挥了挥手。
然而故事的发展却出乎人类的期望,三体文明对地球文明进行了严苛的技术封锁,锁死了地球基础科学发展的同时,向太阳系派出了庞大的舰队。地球文明这时才发现,宇宙绝不是人类所想象的那般美丽,其他文明也并不那么友好,甚至深藏祸心。我们熄灭了寻友的篝火,在黑暗中瑟瑟发抖。《三体》写到了这里,完全可以圆满地结束,然而刘慈欣在《三体Ⅱ·黑暗森林》中又带领读者到达了一个新的高潮,面对三体文明的进攻,人类举全球之力,制订了“面壁计划”,凭借着人类对三体人天然的思维方式上的优势,四位“面壁人”独立设计的四套方案气势磅礴,构思独特,令人拍案叫绝。它们中的每一个,都让读者以为这是终极的解决方案,然而,这些都还只是铺垫和浮云。
假如人类在宇宙中并不孤独,那么我们与其他文明之间是什么关系?由此而生的“宇宙社会学”正是为了解决这个疑问。借由书中主人公提出的三条公理,看似平淡无奇,然而却是对抗三体文明入侵的最后底牌,我从中读到的是多年来未曾在类似文学作品中体会过的启示性的震撼,一种极致的满足,在它面前,我们只有惊叹。
如果说前两部着重的是对于宇宙丛林法则的冷酷描写和人类文明的挣扎抵抗,那么《三体Ⅲ·死神永生》则是对地球文明的本质思考。当人类苦心经营,想尽办法对抗三体世界却一次次失败,人类和三体人最终发现,我们都敌不过宇宙中其他极高文明的一次漫不经心的清理操作,一片小小的“二向箔”最终终结了地球人类的全部努力、荣誉、梦想、辉煌和光荣,那超乎一切之上的力量,要求宇宙归零重生。此时此刻,每一个读者都会有这样的疑问:既然如此,我们苦苦生存的意义何在?
面对宇宙中其他文明的兽性进攻,书中的主人公程心一次次地用近乎胆怯与懦弱的行为选择了人性而不是兽性,救赎了这个世界,使人类仍然能在宇宙浩瀚的星河和文明中与别不同。
这也许就是地球人类文明存在的终极意义,是地球文明的灵魂史诗。
在整个《三体》“地球往事”三部曲中,刘慈欣熟练地运用着各种前沿科技概念,在他的生花妙笔下,抽象的科学原理幻化成了具象的美丽。从三维空间进入四维碎片的迷幻体验,到太阳系被二维化的凄美壮丽;从跨度长达170亿年的时空穿越,到一个人为了暗恋的对象买下一颗遥远的星星作为礼物那琼瑶式的浪漫孤独;从三个隐喻深刻的童话故事,再到对人类未来世界的全景描述,细腻真挚却又极其恢弘磅礴。
从《三体》中,我们知道,科幻文学不仅仅是人类对宇宙的莫名乡愁,更是我们对命运可能的推演和实验。在理性科学原理中间,隐藏着与其他文学相同的终极悲悯,并且往往因为其宏大的叙事风格而更显人类命运的悲怆。它能让你完全沉浸在书桌旁的台灯能够照到的小小空间之中,摒除了喧哗的世界,它能让你了解自己的孤独、悲凉和在永恒时光中的小小位置,当人们发问:“科幻文学有什么用?”的时候,你可能很难回答,但是在夜阑人静,手不释卷之时你会发现,世界上各种接近真知的努力都有唯一之核,就是对存在的追问。它的浩瀚之美让我们的灵魂恐惧却安宁。
刘慈欣的《三体》成功地奠立了一个新的科幻空间以及许多新的科幻定律,并树立了一个崭新的高度,它华丽又荒凉,它告诉我们,可以用来打破无限空间的永恒沉默的,除了坐标广播、引力波、空间曲率驱动飞船外,目前可行的,就是我们的想象力和创造力。
文明的忧思
刘慈欣先生的长篇科幻小说《三体》终于推出了大结局,觊觎地球的外星文明和盘托出,并宣告了在四百年后等待人类的生存之战。至此,《科幻世界》上大半年的连载终于告一段落。《三体》作为计划中的《地球往事》的第一部,其完结篇不仅仅是一次漂亮的落幕,更是一场恢弘的开篇„„我几乎要忍不住要使用更多的溢美之辞。
《三体》的幻想源于经典物理中的三体问题,即三个体积质量相当的天体,在远离其它星系以致其它星系的引力影响可忽略不计的情况下,三个天体在互相引力的作用下互相围绕运行,其运行轨迹将产生不可预测的混沌。很多年来,数学家们一直希望能建立三体乃至多体问题的数学模型,可遗憾的是,得到的结果仅仅是三体问题在非限制条件下的不可解。刘慈欣正是基于这样的科学事实,用大胆的想象和严谨的推断,在三体星系的行星中构建了一个外星文明形态,并描绘了该文明在如同不可捉摸的命运一般的“恒纪元”与“乱纪元”[注1]的轮替中,数百次的毁灭和重生。三体的故事有着广袤的时间与空间纬度,其以明暗两条线索发展,一条描述了科学家叶文洁在目睹了文革的疯狂与愚昧之后,痛苦的思索着后工业时代对人本复归的扼杀以及人类文明种种深入骨髓的病态,在一次偶然的科学实验中,她利用太阳作为发射天线,向宇宙中发出了人类文明存在的信号,多年后,她竟然收到了来自另外一个文明的回复,该回复用急促的句子阻止着地球人进一步的沟通,因为“如果你们的世界被定位,那么你们将被入侵”,但是出于对人类文明的绝望以及对外来高等智慧道德观念的美好幻想,叶文洁毅然的向太空中发射了回复的讯息,向外星文明表示“人类文明病入膏肓,我们需要你们的帮助改造”„„于是,三体世界的舰队开始向地球前进,并通过“智子”[注2]锁死了地球科技的进步,使地球文明不至于在四百年后三体舰队到达地球时已经远远的超过三体世界的文明水平,同时,叶文洁也组织起所有地球上对人类文明深感厌倦的力量,成为地球上的三体叛军。另一条暗线则描述了三体文明的大致形态,由于三体星系运行的混沌,该文明一直生活在朝不保夕的不可预测当中,乃至于其文明经历了数百次的毁灭与重生,最后,他们抛弃了一切的人文情感,建立起一种机械般精确却冰冷的社会形态。
刘在《后记》中介绍,他希望描述一个零道德的宇宙图景,但是《三体》本身却并非是零道德的,它充满了对于人类社会的道德反思,从极权社会人性的泯灭,到人类追求利益的那条鲜血淋漓的途径,再到后工业时代的人类沙文主义以及人类发展与环境的关系,他精确的描述了人类社会产生的罪恶以及现代主义所担忧的科学、技术、工业给人文世界带来的冲击,并通过道德碰撞营造出戏剧冲突。刘本身在《三体》中未介入作任何的道德论断——事实上,虽然作为“反派”出现,叶文洁们所拥有的悲天悯人的情怀却让人不得不肃然起敬——但是这篇文章却处处透射出对真理、美好、平等等普遍伦理的向往,并闪现出不少的个体光辉,值得我们献上最高的赞礼。
《三体》的文字更像是一篇纪实文学,在前半段,我甚至完全把《三体》看成是一次对历史的控诉与批判,这增加了小说主题的厚度,《三体》虽然不是描述文革的小说,文革也差不多只占了六分之一的篇幅,但是这个精彩的开篇却加深了小说的道德寓意,乃至于其始终萦绕全篇。这类扎根在现实基础上的科学幻想,需要更为深厚的科普功底,乃至于刘自己都说,很容易写成“即无小说的生动,又无科普的正确”,不过刘的确做到了“小说的生动”与“科普的正确”,其在小说中涉及知识面可谓庞杂,包括基本粒子、天体研究、经典物理、纳米材料、计算机、数学、历史„„细节上的优秀举不胜举,包括那个三体星系的外星文明,简直就是《1984》的外星版!刘展现出的底蕴不得不让人惊叹,我得说,这一篇硬科幻即使不能称上最好,也已然挤身最优秀的作品之列。不过,个人以为,《三体》最高明之处并不在于其情节之“悬”与科幻之“硬”,而是在于其对零道德宇宙的构想,他将相对主义从人类社会之间升级到智慧文明与智慧文明之间,由于文明彼此都采用利于自身利益的道德观念,从而导致了全宇宙范围内普遍伦理观念的缺失——即零道德的宇宙。这是一个如此显而易见的隐寓,当我们将范围再缩小的人类文明的程度,这岂不就是一个零道德的世界诞生的深刻内因?
然而刘却并没有因此绝望。在《三体》里,有一个无足轻重的三体人在收到叶文洁的讯号以后,发出了阻止地球人进一步联络的警告信号,其对人类世界的同情与其个人英雄主义般的正直感超越了文明、种族的界限,这样的个体也正是道德宇宙能够建立,文明能和平共存的希望所在。而树立这样的个体范本,显然也正是作者最终的期望。
在结尾处,三体人成功的锁死了地球人的科技进步,三体的舰队将在四百年后到达地球,面对四百年后被毁灭的命运,科学家意志消沉,小说中的人物大史为了让他们振作起来,带他们来到一处郊外,那里正闹蝗灾,大史告诉科学家,相比人类与三体人,蝗虫与人类的技术差距更大,人类自文明诞生以来就希望灭绝蝗虫,但是蝗虫依然傲然于天地间。三体人与人类同样没有意识到的是,“虫子从未被消灭过”!
至此,《三体》展现出更为宏大的精神内涵,体现出包括人类在内的所有生命在追求生存与平等时那强大的生命的尊严!
我真是觉得没有比这个更好的结局了。
第五篇:《三体》读后感
《三体》读后感
一直想看,一直又惧怕看,许多年不看小说,不是因为不喜欢看小说,而是时间太碎片,不利于看小说。后来开始在飞机上,为打发路上的时光,我在微信读书上下载了该书,就这么看了起来。断断续续看了一年,终于于近日将《三体》看完。权且谈一谈自己的感受。
一个受文革迫害的女科学家在对人间彻底失望之后企图借助外星文明来改造这个落后的世界,后来事情失控,人类开始倾全地球之力防御入侵,好不容易采取鱼死网破的方式躲过一劫,却发现真的天外有天人外有人,然后在默默等待到了一个万万没想到的灭世过程……
首先还是很佩服给作者构建的世界,描述一个有三个恒星的宇宙,以及那个世界人的生活方式,用技术锁死给自己描述未来世界留下余地,全息化的未来城市估计不久就会到来,而居住在树形结构的设想可能也是一个人口膨胀的解决方案,当然结构什么的问题不是我等考虑的了,交通拥堵的解决只能依靠人工智能大数据,这个现在已经开始体现,扯的有点远。当然,最令人佩服的是作者构建了外太空社会学,探讨了人们面向未知的恐惧,个体、群体在灾难面前的反应,社会变化。想象了一个更宏伟的银河以及黑暗森林的生存法则,将宇宙的演化变成一个黑暗森林生存斗争的结果,变成一个长时间轴上的多维空间的递减循环,当然,整体基本没逃脱佛家的所谓轮回吧。
第一部《地球往事》用一个游戏介绍一个陌生的三体世界,用一个案件的侦查贯穿全文还是挺佩服的。但有点过于炫耀自己的历史和物理知识储备了,而且采用对话形式交代故事背景的最大坏处就是语言叙事性太强,导致语言不能体现人物性格,造成人物没有性格,特别是对两个关键人物性格的描述太缺失。让我没想到的是作者将文革的浩劫通过一个个体的遭遇和对这个个体的后续影响描写了出来,看来经历了那个时代的文人不会放弃任何反思那段历史的机会。
第二部《黑暗森林》是我最喜欢的一部,不管什么作品终究要去探讨人性这个东西,在地球进入三体人入侵倒计时的极端条件下人内心的变化和社会的表现都是值得探讨的,希望、失望、绝望,面壁、破壁、执剑、潜伏......所谓黑暗森林的宇宙社会学构想,也基本能说得通,虽然这个构想基本原理出现的很突然,毕竟叶文洁为什么将自己悟出的宇宙社会学基本原理传给突然出现的罗辑交代得不太够,仅仅因为他是女儿的男朋友么?还有章北海这个用了大笔墨描写的一个人就这么挂了有些许可惜。
三艘战舰在外太空的互相杀戮真的描写的很棒,处于一个完全未知的太空,生存和道德的撞击以及最后做出的尽可能体面的选择都让人即兴奋又心寒。破壁人是自己老婆的设置也让人眼前一亮,所谓朝夕相处的那个最信任的人居然是要杀死自己的人,我想希恩斯临死前的心里一定是跟王宝强类似的。
另外,人类对付三体人的终极武器居然是尔虞我诈的城府,这个设置也是棒棒哒。当然,这一部另一个亮点就是描述了不久未来城市的样子以及哪个城市环境下人的状态,充满想象,也充满期许。
第三部《死神永生》是作者炫耀写作技巧和功底的一部,通过三则童话故事和一本回忆录串联整个故事,技巧满分,可惜可读性降低很多。这一部我最喜欢的几个部分。
一是三体控制地球后在澳洲设置保留区(也就是集中营)的描述,让人不得不去跟曾经的纳粹集中营类比,所谓文明的星际殖民也都逃不脱人类曾经经历的影子。二是预警误报时人们逃离的情景,不管什么时代,一旦求生成为第一要务,人们会做出各种利己的选择,当然讽刺的是作者将这次逃离设置成了误报,人们在疯狂过后居然没有迎来末日,必须马上去面对当时的疯狂,很有意思。三是虽然拗口,但是描写了一个宇宙的黑暗生存现实,人们为了生存互相伤害,将多维宇宙慢慢的降维,最后居然要变成0维重新爆炸重生循环,当然尽最大的想象力将太阳系变成二维的过程详尽的描写,对人类太空城的建设也费了大量笔墨,充满想象。
《三体》电影的新闻伴随着一次次跳票而来,虽然文中引用了很多他们的剧照,但对影片本身的期待还是比较低,我认为未来世界的构建需要很强的想象力和团队,单单一个未来城市就应该会让他们煞费苦心,更别说宇宙战舰和外太空城市群以及外太空,更不用说多维空间怎么视觉展现的问题,每一个环节不满低于了粉丝的想象都会被反水,片方很辛苦,需要大量的人力、物力及金钱的投入。也许,看完电影,还会有观后感。