Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 80

Programming

Dynamic Simulation

  • Previously, we use Euler's Method to simulate the state variables

  • However,is there any existed tool we can use?








Differential Equation Solver

result = desolve_odeint(x_prime,ics,times,dvars)
x_prime(x)=-2*x+3 timeRange = srange(0,5,0.5) #The important line!!!!!################### result = desolve_odeint(x_prime,5,timeRange,x) ################################################ fig1 = list_plot(zip(timeRange,result[:,0]),plotjoined=True) show(fig1)

The result is better than what you get from Euler's method

Simulation For Multiple State Variables

x_prime(x,y) = -x+5*y y_prime(y)=-3*y timeRange = srange(0,15,0.1) #######################Important########################## result = desolve_odeint([x_prime,y_prime],[15,15],timeRange,[x,y]) ##########################################################

What did we get?

result
array([[ 1.50000000e+01, 1.50000000e+01], [ 1.97232809e+01, 1.11122734e+01], [ 2.24029277e+01, 8.23217476e+00], [ 2.36465943e+01, 6.09854490e+00], [ 2.38970195e+01, 4.51791316e+00], [ 2.34754788e+01, 3.34695234e+00], [ 2.26139028e+01, 2.47948325e+00], [ 2.14786126e+01, 1.83684634e+00], [ 2.01878475e+01, 1.36076925e+00], [ 1.88247005e+01, 1.00808267e+00], [ 1.74466556e+01, 7.46806009e-01], [ 1.60926131e+01, 5.53247504e-01], [ 1.47880565e+01, 4.09855835e-01], [ 1.35488475e+01, 3.03628673e-01], [ 1.23840065e+01, 2.24933655e-01], [ 1.12977460e+01, 1.66634952e-01], [ 1.02909517e+01, 1.23446212e-01], [ 9.36225700e+00, 9.14512053e-02], [ 8.50881983e+00, 6.77487202e-02], [ 7.72687879e+00, 5.01894877e-02], [ 7.01214915e+00, 3.71812882e-02], [ 6.36010104e+00, 2.75445769e-02], [ 5.76615200e+00, 2.04055252e-02], [ 5.22579733e+00, 1.51167853e-02], [ 4.73469557e+00, 1.11987904e-02], [ 4.28872176e+00, 8.29626830e-03], [ 3.88399779e+00, 6.14602692e-03], [ 3.51690670e+00, 4.55308891e-03], [ 3.18409576e+00, 3.37301132e-03], [ 2.88247208e+00, 2.49878835e-03], [ 2.60919322e+00, 1.85114799e-03], [ 2.36165472e+00, 1.37136468e-03], [ 2.13747588e+00, 1.01593180e-03], [ 1.93448474e+00, 7.52619935e-04], [ 1.75070279e+00, 5.57554192e-04], [ 1.58433001e+00, 4.13045994e-04], [ 1.43373045e+00, 3.05991903e-04], [ 1.29741843e+00, 2.26684304e-04], [ 1.17404569e+00, 1.67931796e-04], [ 1.06238933e+00, 1.24406862e-04], [ 9.61340631e-01, 9.21628173e-05], [ 8.69894766e-01, 6.82758765e-05], [ 7.87141330e-01, 5.05799949e-05], [ 7.12255668e-01, 3.74705641e-05], [ 6.44490944e-01, 2.77588589e-05], [ 5.83170904e-01, 2.05642607e-05], [ 5.27683287e-01, 1.52343648e-05], [ 4.77473826e-01, 1.12855285e-05], [ 4.32040811e-01, 8.36083472e-06], [ 3.90930121e-01, 6.19459305e-06], [ 3.53730745e-01, 4.58977406e-06], [ 3.20070699e-01, 3.39927530e-06], [ 2.89613341e-01, 2.51727055e-06], [ 2.62054020e-01, 1.86508741e-06], [ 2.37117048e-01, 1.38175250e-06], [ 2.14552946e-01, 1.02304972e-06], [ 1.94135955e-01, 7.57021667e-07], [ 1.75661785e-01, 5.61807444e-07], [ 1.58945585e-01, 4.16604934e-07], [ 1.43820084e-01, 3.08764315e-07], [ 1.30133920e-01, 2.28671588e-07], [ 1.17750134e-01, 1.69424644e-07], [ 1.06544796e-01, 1.25519547e-07], [ 9.64057701e-02, 9.30038934e-08], [ 8.72315868e-02, 6.88931028e-08], [ 7.89304324e-02, 5.10386634e-08], [ 7.14192300e-02, 3.78092605e-08], [ 6.46228076e-02, 2.80102929e-08], [ 5.84731462e-02, 2.07504093e-08], [ 5.29086994e-02, 1.53723865e-08], [ 4.78737776e-02, 1.13881595e-08], [ 4.33179902e-02, 8.43658871e-09], [ 3.91957444e-02, 6.25037374e-09], [ 3.54657807e-02, 4.63040889e-09], [ 3.20907628e-02, 3.42872054e-09], [ 2.90369224e-02, 2.53944467e-09], [ 2.62736935e-02, 1.88187902e-09], [ 2.37734218e-02, 1.39579407e-09], [ 2.15110819e-02, 1.03418040e-09], [ 1.94640317e-02, 7.65507009e-10], [ 1.76117842e-02, 5.67379342e-10], [ 1.59358015e-02, 4.21220235e-10], [ 1.44193093e-02, 3.12463360e-10], [ 1.30471287e-02, 2.30387958e-10], [ 1.18055282e-02, 1.69171585e-10], [ 1.06820828e-02, 1.24624306e-10], [ 9.66554712e-03, 9.29262863e-11], [ 8.74574844e-03, 7.11288701e-11], [ 7.91347936e-03, 5.46908108e-11], [ 7.16041195e-03, 3.98268840e-11], [ 6.47900752e-03, 2.72837689e-11], [ 5.86244843e-03, 1.91511072e-11], [ 5.30456198e-03, 1.48276362e-11], [ 4.79976613e-03, 1.36877722e-11], [ 4.34300722e-03, 1.30157120e-11], [ 3.92971540e-03, 8.42551944e-12], [ 3.55575295e-03, 2.11868419e-12], [ 3.21737806e-03, -7.80912700e-13], [ 2.91120245e-03, -4.45766173e-13], [ 2.63416425e-03, 4.73528128e-12], [ 2.38349008e-03, 1.30332551e-11], [ 2.15667051e-03, 1.72194268e-11], [ 1.95143638e-03, 1.03297342e-11], [ 1.76573209e-03, -2.22697956e-12], [ 1.59770049e-03, -1.04149790e-11], [ 1.44565875e-03, -1.14948380e-11], [ 1.30808585e-03, -2.73552627e-12], [ 1.18360501e-03, 1.37778064e-11], [ 1.07096981e-03, 2.54106485e-11], [ 9.69053670e-04, 1.49183783e-11], [ 8.76835757e-04, -8.97542268e-12], [ 7.93393789e-04, -2.59542636e-11], [ 7.17892278e-04, -2.80333224e-11], [ 6.49575597e-04, -1.11220252e-11], [ 5.87760275e-04, 2.22720075e-11], [ 5.31827274e-04, 4.97425319e-11], [ 4.81217276e-04, 3.35428952e-11], [ 4.35423368e-04, -1.37987561e-11], [ 3.93987399e-04, -5.10585013e-11], [ 3.56494537e-04, -5.62533096e-11], [ 3.22569446e-04, -2.43431287e-11], [ 2.91872772e-04, 4.03646736e-11], [ 2.64097167e-04, 9.81670730e-11], [ 2.38965045e-04, 7.18074257e-11], [ 2.16224679e-04, -2.27904466e-11], [ 1.95648355e-04, -1.03835668e-10], [ 1.77030002e-04, -1.15768154e-10], [ 1.60183197e-04, -5.41115713e-11], [ 1.44939454e-04, 7.24680120e-11], [ 1.31146283e-04, 1.93282185e-10], [ 1.18666125e-04, 1.54382302e-10], [ 1.07373628e-04, 1.10536321e-10], [ 9.71557052e-05, 8.85208431e-11], [ 8.79101739e-05, 5.79619864e-11], [ 7.95444246e-05, 4.78603510e-11], [ 7.19747993e-05, 3.31780518e-11], [ 6.51255102e-05, 1.64728938e-11], [ 5.89279471e-05, 1.68381406e-11], [ 5.33201593e-05, 1.80503622e-11], [ 4.82460206e-05, 1.54651329e-11], [ 4.36547692e-05, 9.73997987e-12], [ 3.95003912e-05, 7.00330671e-12], [ 3.57414829e-05, 5.87011903e-12], [ 3.23408871e-05, 5.17938004e-12], [ 2.92636831e-05, 3.57929680e-12], [ 2.64798655e-05, 1.87952843e-12], [ 2.39603263e-05, 8.37303582e-13], [ 2.16809491e-05, 3.77004501e-13], [ 1.96181727e-05, 3.83968253e-13], [ 1.77516775e-05, 4.83719903e-13]])

We get an array!!!



So..........which is our desired state variable?

# Plot x v.s. time!!! fig1 = list_plot(zip(timeRange,result[:,0]),color='red',plotjoined=True,legend_label='X Variable') fig2 = list_plot(zip(timeRange,result[:,1]),plotjoined=True,legend_label='Y Variable') show(fig1+fig2)
fig4=list_plot(zip(result[:,0],result[:,1]),plotjoined=True)

Plotting Vector Field

v(x,y) = [-x+5*y, -3*y] fig5= plot_vector_field(v, (x,-20,25), (y,0,20), axes_labels=["X", "Y"]) show(fig5)
show(fig4+fig5)