Improved Eulers Method Problem

It is given the following problem:

X'=Z+(Y-\alpha)X
Y'=1-\beta Y-X^2
Z'=-X-\gamma Z

with initial conditions (X(0),Y(0),Z(0)=(1,2,3).

Where

X: interest rate

Υ:investment demand

Z: price index

\alpha: savings,
\beta: cost per investment,
\gamma: the absolute value of the elasticity of demand

\[Alpha]=0.9;
\[Beta]=0.2;
\[Gamma]=1.2;
f[x_,y_,z_]:=z+(y-\[Alpha])*x
g[x_,y_,z_]:=1-\[Beta]*y-x^2
h[x_,y_,z_]:=-x-\[Gamma]*z

I know how to define a system with two functions so I could use these

  • Method A: accuracy of order h

     S[a_, b_, h_, N_] := (u[0] = a; u[1] = a + h*b; 
     Do[u[n + 1] = 
     2 u[n] - u[n - 1] + h*h*f[n*h, u[n], (u[n] - u[n - 1])/h], {n, 1, 
     N}]) 
    
  • Method B: accuracy of order h^2

     Q[a_, b_, h_, N_] := (u[0] = a; v[0] = b; 
     Do[{u[n + 1] = 
     u[n] + h*
     F[u[n] + (h/2)*F[u[n], v[n]], 
     v[n] + (h/2)*
     G[u[n], v[
     n]]],                                                     \
     
     v[n + 1] = 
     v[n] + h*
     G[u[n] + (h/2)*F[u[n], v[n]], v[n] + (h/2)*G[u[n], v[n]]]}, {n,
     0, N}])
    

Athanasios,

you did not say so, but I am assuming that you want the above system of DGL get solved:

\[Alpha] = 0.9;
\[Beta] = 0.2;
\[Gamma] = 1.2;

eqs = {x'[t] == z[t] + (y[t] - \[Alpha])*x[t],
   y'[t] == 1 - \[Beta]*y[t] - x[t]^2,
   z'[t] == -x[t] - \[Gamma]*z[t]};

{fx, fy, fz} = NDSolveValue[{eqs, x[0] == 1, y[0] == 2, z[0] == 3}, {x, y, z}, {t, 0, 500}];
Plot[{fx[t], fy[t], fz[t]}, {t, 0, 50}, ImageSize -> Large, GridLines -> Automatic]
ParametricPlot3D[{fx[t], fy[t], fz[t]}, {t, 0, 500}, ImageSize -> Large, AxesLabel -> {"X", "Y", "Z"}]

I did not know that Euler was dealing with interest rates, etc., but interesting though!

Does that help? Regards – Henrik

Of course, it helps! But I am trying to use the Improved Euler Method to solve this problem, too

Athanasios,

sorry - obviously I misunderstood your question!

As far as I could understand on the quick the “improved Euler method” I simply would do it like so:

\[Alpha] = 0.9;
\[Beta] = 0.2;
\[Gamma] = 1.2;

f[{x_, y_, z_}] := {z + (y - \[Alpha])*x, 1 - \[Beta]*y - x^2, -x - \[Gamma]*z}

h = 0.1;
impEuler[v_List] := v + h/2 (f[v] + f[v + h f[v]])

data = NestList[impEuler, {1, 2, 3}, 1000];
Graphics3D[{Arrowheads[{.03, #} & /@ Range[0, 1, .05]], Arrow[data]}, 
 BoxRatios -> Automatic, Axes -> True, AxesLabel -> {"X", "Y", "Z"}]

I do hope that this now is more helpful! At least my “solution” above can be used as reference.

Best regards – Henrik
[1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=impEuler.png&userId=32203

Thank you that was very useful for sure. At my master with have an assignment and we study the Dynamic analysis and control of a new hyperchaotic finance system. For this reason we use Improved Euler’s Method

That works but it is not accurate as your solution

Another Way I have thought is the following

Hello,

impEuler[v_List] := v + h/2 (f[v] + f[v + h f[v]]) - Henrik Schachner, Radiation Therapy Center, Weilheim, Germany

So, initially we have a function with 3 parameters: x, y, and z (f[{x _, y _, z _}]), and then we call the function only with one single parameter: v (f[v]).
Could you explain what is the meaning of v _List, and how f[v] is related to f[{x _, y _, z _}]?

Formula for improved Euler method:

Capture1.PNG

Capture.PNG

So, initially we have a function with 3 parameters: x, y, and z (f[{x
, y , z _}])

No, it is a function that takes a single parameter, which is a List of 3 elements that are locally bound to the symbols x, y, and z.

f[{x_, y_, z_}]

If it took three parameters it would be

f[x_, y_, z_]

This question is unrelated to this thread. You should have asked a new question.