In[]:=
Clear[U]
In[]:=
n=2;
In[]:=
vecU=Table[U[i],{i,0,n}];
In[]:=
ODEeqn
0
1
2
(1+4)
2
t
′′
vecU[[1]]
ODEeqn
1
1
2
(1+4)
2
t
′′
vecU[[2]]
ODEeqn
2
1
2
(1+4)
2
t
′′
vecU[[3]]
In[]:=
ODETable=Table[0,{i,0,n}];(*Print[ODETable];*)
ODEeqn
i
In[]:=
step=1.0;
In[]:=
t0=0;tf=15;IClist1=Table[U[i][0]0.01,{i,0,n}];IClist2=Table[U[i]'[0]0,{i,0,n}];IClist=Join[IClist1,IClist2];ODEandICTable=Join[ODETable,IClist];Vars=Table[U[i],{i,0,n}];currentSolU=AbsoluteTiming[NDSolve[ODEandICTable,(*WhenEvent[Mod[t,step]0,Print["t =",t]],*)Vars,{t,t0,tf},AccuracyGoalMachinePrecision/2,PrecisionGoal1+MachinePrecision/2,InterpolationOrderAll,MaxSteps1000000,CompiledFalse]];Print["Final Time = ",tf," ","Comp. time = ",currentSolU[[1]]]
Final Time = 15 Comp. time = 0.003651
In[]:=
For[i=0,i<n+1,i++,U[i][t_]=U[i][t]/.currentSolU[[2]]];
In[]:=
Plot[{U[0][t],U[1][t],U[2][t]},{t,0,tf},PlotRangeAll,AxesLabel{"t","[t]"},PlotStyle->{Black,Blue,Green}]
u
j