⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 模拟一个小球的下落过程.txt

📁 这是一个用MATLAB编的模拟一个小球的下落过程 ,很不错,希望和大家分享.
💻 TXT
字号:
摘要: 地面有山峰,有山谷.考虑一下小球自由下落,其中
不计空寂阻力.

程序:

close all;clc;clear;
figure;
x=linspace(-3.7,3.7,400);
y=cos(pi*x)/2+exp(x.^2/8);
Fun=inline('cos(pi*x)/2+exp(x.^2/8)-y','x','y');
Df=inline('-sin(pi*x)*pi/2+x*exp(x^2/8)/4','x');
% \copyright: zjliu
% Author's email: zjliu2001@163.com 
plot(x,y);hold on;
plot(xlim,[5.3,5.3],'r');
set(gcf,'DoubleBuffer','on');
title('\itfalling ball','fontsize',16,...
    'fontname','times new roman');
Td=text(-4.2,1.8,'t=0 s','fontsize',14,'color',[0.4,0.3,0.9]);
Te=text(-4.2,1.2,'h=5.3 m','fontsize',14,'color',[0.4,0.3,0.8]);
Tf=text(-4.2,0.6,'v=0 m/s','fontsize',14,'color',[0.4,0.3,0.8]);
dz=x+i*y;
qz=0.5+5.3*i;
tp=linspace(0,pi*2,100);
qa=qz+0.08*exp(i*tp);
hF=fill(real(qa),imag(qa),'k');
axis([-4,4,0,7]);
axis equal;
g=9.8;% 重力加速度
v=0;
t=0;dt=0.014;
while t<20;
    qz=qz+v*dt-0.5*g*dt^2*i;
    v=v-g*dt*i;
    qa=qz+0.08*exp(i*tp);
    set(hF,'XData',real(qa),'YData',imag(qa));
    Dd=abs(qz-dz);
    if min(Dd)<0.18;
        zy=linspace(-0.09,0.09,200)*exp(i*angle(v))+qz;
        Fxy=Fun(real(zy),imag(zy));
        [qq,Ka]=min(abs(Fxy));
        zp=zy(Ka);
        An=atan(Df(real(zp)))-pi/2;
        An=An+pi*(An<0);
        Am=angle(v);
        Am=Am+pi*(Am<0);
        Ak=2*An-Am;
        v=abs(v)*exp(i*Ak);
    end
    t=t+dt;
    set(Td,'String',['t=',num2str(t),' s']);
    set(Te,'String',['h=',num2str(imag(qz)),' m']);
    set(Tf,'String',['v=',num2str(abs(v)),' m/s']);
    pause(0.1);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -