2020iypt,第十三題摩擦振子(二)結(jié)果調(diào)參代碼
代碼允許轉(zhuǎn)載,但是放在附錄時(shí)一定要記得把出處和制作人標(biāo)清楚!!?。。。。。。。。。。。。。。。。。。。。。。。。?/strong>
后續(xù)的仿真動畫代碼也會發(fā)出。
常見問題:1.代碼復(fù)制一定要復(fù)制到編輯器中,而不是命令行
2.一定保證符號全英文
3.對代碼修改后尤其是方程部分修改后,求解錯(cuò)誤是正?,F(xiàn)象,請一定要首先檢查方程是否正確
4.這個(gè)代碼求解方程是歐拉法求解的方程,如果不了解數(shù)值計(jì)算的可以先了解一下數(shù)值計(jì)算??!
使用軟件:matlab
代碼:
%摩擦振子結(jié)果輸出動畫
%當(dāng)使用調(diào)整變量x:兩軸間間距時(shí)使用fun1并注釋fun2
%當(dāng)使用調(diào)整變量u:兩軸間間距時(shí)使用fun2并注釋fun1
%制作人:茤一分問候 時(shí)間2020年/1/14/0:30引用時(shí)(這部分請不要刪除)
loops=100;
F(loops) = struct('cdata',[],'colormap',[]);
v = VideoWriter('參數(shù)u變動.avi');%創(chuàng)建動畫
open(v);
for i=0.40:0.0006:0.46
? ? j=round((i-0.4+0.0006)/0.0006);%在改變參數(shù)u兩軸間間距時(shí)使用
? ? %j=round((i-0.2+0.0006)/0.0006);%在改變參數(shù)x兩軸間間距時(shí)使用
? ? figure(j)
? ? fun2(i)%在改變參數(shù)u兩軸間間距時(shí)使用
? ? %fun1(i)%在改變參數(shù)x兩軸間間距時(shí)使用
? ? F(j) = getframe(gcf);%保存幀
writeVideo(v,F(j));%寫入動畫
close
end
close(v);
function y=fun2(u,y)
%摩擦系數(shù)變量調(diào)用函數(shù)
x=0.20;%兩軸的一半間距
l=0.8;%重物的長度
p=1.5*10^3;%重物的密度
d=0.05;%重物的寬度
h=0.01;%重物的高度
g=9.8;%重力加速度
m=p*h*l*d;%重物的質(zhì)量
%u=0.44;%動摩擦因數(shù)
%——————————————————————————
a2=zeros(10000,1);
v2=zeros(10000,1);
x2=zeros(10000,1);
x2(1,1)=0.1;%重心偏移原點(diǎn)的位置
t=0.001;%時(shí)間步長
G=m*g;%重力
for i=2:10000
G=m*g;%重力
N1=((x*G-G*x2(i-1,1))/2+x2(i-1,1)*G)/x;%受力分析的方程
N2=(x*G-G*x2(i-1,1))/(2*x);? ? ?%受力分析的方程
a2(i,1)=(N2*u-N1*u)/m;? ? ? ? ? ? %受力分析的方程
v2(i,1)=v2(i-1,1)+a2(i,1)*t;? %離散速度
x2(i,1)=x2(i-1,1)+v2(i,1)*t;? %離散位移
end
hold on
axis([0 10000 -2.5 2.5])
plot(x2,'Color','b') %繪制位移
plot(v2,'Color','r') %繪制速度
plot(a2,'Color','k') %繪制加速度
end
%-------------------------------------------------
function y=fun1(x,y)
%兩軸間間距調(diào)用變量
%x=0.20;兩軸的一半間距
l=0.8;%重物的長度
p=1.5*10^3;%重物的密度
d=0.05;%重物的寬度
h=0.01;%重物的高度
g=9.8;%重力加速度
m=p*h*l*d;%重物的質(zhì)量
u=0.44;%動摩擦因數(shù)
%——————————————————————————
a2=zeros(10000,1);
v2=zeros(10000,1);
x2=zeros(10000,1);
x2(1,1)=0.1;%重心偏移原點(diǎn)的位置
t=0.001;%時(shí)間步長
G=m*g;%重力
for i=2:10000
G=m*g;%重力
N1=((x*G-G*x2(i-1,1))/2+x2(i-1,1)*G)/x;%受力分析的方程
N2=(x*G-G*x2(i-1,1))/(2*x);? ? ?%受力分析的方程
a2(i,1)=(N2*u-N1*u)/m;? ? ? ? ? ? %受力分析的方程
v2(i,1)=v2(i-1,1)+a2(i,1)*t;? %速度
x2(i,1)=x2(i-1,1)+v2(i,1)*t;? %位移
end
hold on
axis([0 10000 -2.5 2.5])
plot(x2,'Color','b')
plot(v2,'Color','r')
plot(a2,'Color','k')
end