欢迎光临散文网 会员登陆 & 注册

2020iypt,第十三题摩擦振子(二)结果调参代码

2020-07-04 22:42 作者:茤一份问候  | 我要投稿

代码允许转载,但是放在附录时一定要记得把出处和制作人标清楚!!!!!!!!!!!!!!!!!!!!!!!!!!!

后续的仿真动画代码也会发出。

常见问题:1.代码复制一定要复制到编辑器中,而不是命令行

2.一定保证符号全英文

3.对代码修改后尤其是方程部分修改后,求解错误是正常现象,请一定要首先检查方程是否正确

4.这个代码求解方程是欧拉法求解的方程,如果不了解数值计算的可以先了解一下数值计算!!

使用软件:matlab

代码:

%摩擦振子结果输出动画

%当使用调整变量x:两轴间间距时使用fun1并注释fun2

%当使用调整变量u:两轴间间距时使用fun2并注释fun1

%制作人:茤一分问候 时间2020年/1/14/0:30引用时(这部分请不要删除)

loops=100;

F(loops) = struct('cdata',[],'colormap',[]);

v = VideoWriter('参数u变动.avi');%创建动画

open(v);

for i=0.40:0.0006:0.46

    j=round((i-0.4+0.0006)/0.0006);%在改变参数u两轴间间距时使用

    %j=round((i-0.2+0.0006)/0.0006);%在改变参数x两轴间间距时使用

    figure(j)

    fun2(i)%在改变参数u两轴间间距时使用

    %fun1(i)%在改变参数x两轴间间距时使用

    F(j) = getframe(gcf);%保存帧

writeVideo(v,F(j));%写入动画

close

end

close(v);

function y=fun2(u,y)

%摩擦系数变量调用函数

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;%重物的质量

%u=0.44;%动摩擦因数

%——————————————————————————

a2=zeros(10000,1);

v2=zeros(10000,1);

x2=zeros(10000,1);

x2(1,1)=0.1;%重心偏移原点的位置

t=0.001;%时间步长

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)

%两轴间间距调用变量

%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;%重物的质量

u=0.44;%动摩擦因数

%——————————————————————————

a2=zeros(10000,1);

v2=zeros(10000,1);

x2=zeros(10000,1);

x2(1,1)=0.1;%重心偏移原点的位置

t=0.001;%时间步长

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



2020iypt,第十三题摩擦振子(二)结果调参代码的评论 (共 条)

分享到微博请遵守国家法律