第一次做高等数学题,比赛的时候不会解微分方程,模拟积分过程,精度不够。。其实我感觉这种题,如果让手动分微元模拟积分,才能体现出计算机的作用,不然就是纯数学题。
后来发现,解微分方程是相对复杂的,可以巧妙列积分方程去解。
设前进方向与y轴反方向的夹角
θ
是时间
t
的函数,即
对水平方向,在水流的作用下时刻
以船为参照物,坐标原点方向(必须注意到,如果考虑竖直方向,会引入余弦函数,给求解带来不便),在水的作用下时刻
t
的速度为
联立以上2个方程,消去其中对
sin(θ(t))
的积分,得到
T=v1av21−v22
,这就是题目的解(当
v1<v2
时无解)。
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
double a,v1,v2;
while(cin>>a>>v1>>v2){
if(a==0){
puts("0");
}else{
if(v1<=v2){
puts("Infinity");
}else{
double ans = v1*a/(v1*v1-v2*v2);
printf("%.8f\n",ans);
}
}
}
return 0;
}