最速落径.txt

来自「数学实验中的最速落径问题 A,B是不在一条铅垂线上的两点」· 文本 代码 · 共 43 行

TXT
43
字号
%数学实验中的最速落径问题
%A,B是不在一条铅垂线上的两点,在链接A,B两点的所有光滑曲线中,找出一条曲线,使得初速度为零的质点,在重力的作用下,自A点下滑到B点所需的时间最短

clear all
%赋初值
H=2.0;n=100;h=H/n;
g=9.8;f=1.0;
%求常数c
a=0;
b=2/(sqrt(2*g*(n-1)/n*H)+sqrt(2*g*H));
c=(a+b)/2;
i=1;
while abs(f)>1e-10
   s=0;
   for j=1:n
      v=(sqrt(2*g*j*h)+sqrt(2*g*(j-1)*h))/2;
      s=s+v/sqrt(1.0-c^2*v^2);
   end
   f=c-pi/(h*s);
   if f>0
      b=c;
   else a=c;
   end
   c=(a+b)/2;
   i=i+1;
end
%求各点横坐标
x(1)=sqrt(98*h/2)*c*h/sqrt(1.0-c*c*v*v);
for k=2:n
    v=(sqrt(2*g*k*h)+sqrt(2*g*(k-1)*h))/2;
    x(k)=x(k-1)+c*v*h/sqrt(1.0-c*c*v*v);
end
%画模拟计算出的最速落径(星点表示)
plot(x,-(0.02:.02:2),'r')
%画理论计算出的最速落径(虚线表示)
hold on
y=0:0.01:2;
x1=acos(1-y)-sqrt(2*y-y.^2);
plot(x1,-y,':b')
axis equal
grid on

⌨️ 快捷键说明

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