Clear["Global`*"]
m=1;l=1;g=9.81;tmax=50;num=200;
func={2 θ1''[t]+θ2''[t]* Cos[θ1[t]-θ2[t]]+θ2'[t]^2*
Sin[θ1[t]-θ2[t]]+2*9.81*Sin[θ1[t]]==0,θ2''[t]+θ1''[t]
*Cos[θ1[t]-θ2[t]]-θ1'[t]^2*Sin[θ1[t]-θ2[t]]+
9.81*Sin[θ2[t]]==0};
ini={θ1[0]==Pi/2,θ2[0]==Pi/2,θ1'[0]==0,θ2'[0]==0};
sol=First@NDSolve[{func,ini},{θ1'[t],θ2'[t],θ1,θ2},{t,0,tmax}];
point1[t_]:=Evaluate[{l Sin[θ1[t]],-l Cos[θ1[t]]}/.sol]
point2[t_]:=Evaluate[{l (Sin[θ1[t]]+Sin[θ2[t]]),-l (Cos[θ1[t]]+Cos[θ2[t]])}/.sol]
data=Table[Show[Graphics[{Red,Thick,Line[{{{0,0},point1[t]},{point1[t],point2[t]}}]},PlotRange->{{-4.1,4.1},{-4.1,1.2}},ImageSize->300],ParametricPlot[point2[t0],{t0,0,t}]],{t,tmax/num,tmax,tmax/num}];
Animate[data[[i]],{i,1,Length[data],1},AnimationRate->num/20]
Export["Doublependulum.gif",data]
这个代码运行没错,只是我把苹果老师里面的微分方程组给改了,但是还是会出现初始时刻即t=0时两根杆子没有平行于水平方向的情况。和苹果老师的代码一样的问题