【運動學】基於matlab嫦娥奔月模擬【含Matlab原始碼 1238期】
阿新 • • 發佈:2021-08-22
一、簡介
嫦娥奔月的故事以鮮明的態度和絢麗的色彩歌頌、讚美了娥娥,與古文獻有關嫦娥的記載相比較,可見人們對嫦娥奔月的故事做了很多加工,修飾,使娥娥的形象與 月同美,使之符合人們對美的追求。 與現代流傳甚廣的“嫦娥奔月”相左,《全上古文》輯《靈憲》則記載了“嫦娥化蟾”的故事:“嫦娥,羿妻也,竊王母不死藥服之,奔月。將往,枚佔於有黃。有 黃佔之:曰:‘吉,翩翩歸妹,獨將西行,逢天晦芒,毋驚毋恐,後且大昌。’嫦娥遂託身於月,是為蟾蜍。”嫦娥變成癩蛤蟆後,在月宮中終日被罰搗不死藥,過 著寂寞清苦的生活,李商隱曾有詩感嘆嫦娥:“嫦娥應悔偷靈藥,碧海青天夜夜心。”
本文采用嫦娥奔月的主題進行matlab模擬。
二、部分原始碼
function TaiYang_DiQiu_YueLiang_ChangE clf;cla;clear all;close all; figure('color','k'); hold on; axis equal ; axis off; set(gcf,'doublebuffer','on'); axis([-70 70 -70 70]); theta=0:0.01*pi:2*pi; t=0.005; R1=42;%設定太陽,地球,月亮,嫦娥之間的距離 R2=20; R3=6; W1=5;%設定地球,月亮,嫦娥的角速度 W2=25; W3=65; state1=0;state2=0;state3=0; plot(0,0,'marker','o','markersize',20,'markerfacecolor','r','markeredgecolor','r');%作太陽 X_DiQiu_GuiJi=R1*cos(theta); Y_DiQiu_GuiJi=R1*sin(theta); plot(X_DiQiu_GuiJi,Y_DiQiu_GuiJi,'-b','linewidth',2);%作地球軌跡 %做地球,月亮,嫦娥的初始位置 H_DiQiu=plot(R1*cos(state1),R1*sin(state1),'marker','o','markersize',12,'markerfacecolor','b'); %作月亮運動軌跡線 H_YueQiu=plot(R1*cos(state1)+R2*cos(state2),R1*sin(state1)+R2*sin(state2),'marker','o','markersize',8,'markerfacecolor','m','markeredgecolor','m'); xx2=R1*cos(state1)+R2*cos(state2);yy2=R1*sin(state1)+R2*sin(state2); YueLiang_GuiJi=plot(xx2,yy2,'color','w'); %作嫦娥運動軌跡線 H_ChangE=plot(R1*cos(state1)+R2*cos(state2)+R3*cos(state3),R1*sin(state1)+R2*sin(state2)+R3*sin(state3),'marker','o','markersize',4,'markerfacecolor','c','markeredgecolor','c'); xx3=R1*cos(state1)+R2*cos(state2)+R3*cos(state3);yy3=R1*sin(state1)+R2*sin(state2)+R3*sin(state3); ChangE_GuiJi=plot(xx3,yy3,'color','m'); %儲存GIF檔案 f=getframe(gcf); f=frame2im(f); [f map]=rgb2ind(f,256); imwrite(f,map,'ChangE_GuiJi.gif','delaytime',0.1,'loopcount',inf); for i=1:1.3*length(theta) x1=R1*cos(state1);y1=R1*sin(state1); x2=R1*cos(state1)+R2*cos(state2);y2=R1*sin(state1)+R2*sin(state2); xx2=[xx2 x2];yy2=[yy2 y2]; x3=R1*cos(state1)+R2*cos(state2)+R3*cos(state3);y3=R1*sin(state1)+R2*sin(state2)+R3*sin(state3); xx3=[xx3 x3];yy3=[yy3 y3]; set(H_DiQiu,'xdata',x1,'ydata',y1) ; set(H_YueQiu,'xdata',x2,'ydata',y2) ; set(H_ChangE,'xdata',x3,'ydata',y3) ; set(YueLiang_GuiJi,'xdata',xx2,'ydata',yy2) ; set(ChangE_GuiJi,'xdata',xx3,'ydata',yy3) ; state1=state1+W1*t; state2=state2+W2*t; state3=state3+W3*t; pause(0.1); drawnow; %儲存GIF檔案 f=getframe(gcf); f=frame2im(f); [f map]=rgb2ind(f,256); imwrite(f,map,'ChangE_GuiJi.gif','delaytime',0.1,'writemode','append'); end
三、執行結果
四、matlab版本及參考文獻
1 matlab版本
2014a
2 參考文獻
[1] 門雲閣.MATLAB物理計算與視覺化[M].清華大學出版社,2013.
[2]梅中磊,李月娥,馬阿寧.MATLAB電磁場與微波技術模擬[M].清華大學出版社,2020.
[3]徐國保,張冰,石麗梅,吳凡.MATLAB/Simulink權威指南——開發環境、程式設計、系統模擬與案例實戰[M].清華大學出版社,2019.
[4]周群益,侯兆陽,劉讓蘇.MATLAB視覺化大學物理學(第2版)[M].清華大學出版社,2015.