PatrickT

Dr. Patrick T

2168 Reputation

18 Badges

17 years, 174 days

MaplePrimes Activity


These are answers submitted by PatrickT

It would help if you formatted your expression in Maple style.

In the Maple Help menu you may want to have a look at Mathematics->Algebra and then see what best fits your needs.

If you cannot find an exact analytical form, you may have to develop approximate analytic results in order to develop a regression model. As Robert suggested, a Taylor series expansion is one way to go. This is a very common way in economics and finance. I'm saying this because your model looks like it might be some probability-based finance model.

Thanks acer, this is incredibly helpful. I understand every point and won't forget.

 

> restart: with(PDEtools): declare(prime):

     The prime differentiation variable has not been declared yet

> M := VectorCalculus[Jacobian]([(q-b1)*(b2-q)+(q-b)*(diff(f(x),x)-q)*eta(c)/(f(x)-c)],[x]);

  M :=

        [(q - b) f[x, x] eta(c)   (q - b) (f[x] - q) eta(c) f[x]]
        [---------------------- - ------------------------------]
        [       f(x) - c                             2          ]
        [                                  (f(x) - c)           ]

> M2 := simplify(subs( q-b=-mu*(f(x)-c), eta(c)=lambda*(f(x)-c)/(diff(f(x),x)-q), f(x)-c=eta(c)*(diff(f(x),x)-q)/lambda, diff(f(x),x,x)=(lambda*diff(f(x),x)-nu)/eta(c), M));

                            M2 := [mu nu]

 

I understand it would be a pain to attempt to copy the code in this picture, so here is the code below:

> restart: with(PDEtools): declare(prime):

     The prime differentiation variable has not been declared yet

> M := VectorCalculus[Jacobian]([(q-b1)*(b2-q)+(q-b)*(diff(f(x),x)-q)*eta(c)/(f(x)-c)],[x]);

  M :=

        [(q - b) f[x, x] eta(c)   (q - b) (f[x] - q) eta(c) f[x]]
        [---------------------- - ------------------------------]
        [       f(x) - c                             2          ]
        [                                  (f(x) - c)           ]

> M2 := subs( q-b=-mu*(f(x)-c), eta(c)=lambda*(f(x)-c)/(f[x]-q), f(x)-c=eta(c)*(f[x]-q)/lambda, eval(M));

             M2 := [-mu f[x, x] eta(c) + mu lambda f[x]]

> M2 := simplify(subs(f[x,x]=(lambda*f[x]-nu)/eta(c), eval(M2))): eval(M2);

        [                                                           2
        [- mu (-f[x, x] eta(c) f[x] + f[x, x] eta(c) q + lambda f[x]

                                     ]
         - lambda f[x] q)/(-f[x] + q)]

> restart: with(PDEtools): declare(prime):

     The prime differentiation variable has not been declared yet

> M := matrix(1,1,[(q-b)*f[x,x]*eta(c)/(f(x)-c)-(q-b)*(f[x]-q)*eta(c)/(f(x)-c)^2*f[x]]);

  M :=

        [(q - b) f[x, x] eta(c)   (q - b) (f[x] - q) eta(c) f[x]]
        [---------------------- - ------------------------------]
        [       f(x) - c                             2          ]
        [                                  (f(x) - c)           ]

> M2 := subs( q-b=-mu*(f(x)-c), eta(c)=lambda*(f(x)-c)/(f[x]-q), f(x)-c=eta(c)*(f[x]-q)/lambda, eval(M));
>

             M2 := [-mu f[x, x] eta(c) + mu lambda f[x]]

> M2 := simplify(subs(f[x,x]=(lambda*f[x]-nu)/eta(c), eval(M2))): eval(M2);

                               [mu nu]
 

P.S. Oh wow, that is actually readable math output. Didn't know that copy-paste from a worksheet worked.

It is beyond my ability to resize this image. The medium sized links don't seem to work. And resizing by hand has no effect. Apologies.

 

Since I'm also totally unable to combine text with an image, I will post the image below. Hopefully. And no, I am completely unable to make maple tags work.


The weird thing about the following is that if I define the matrix via the matrix command the subs works, while if I derive the matrix from a VectorCalculus[Jacobian] command, it doesn't work anymore. As you can see from the output, the two matrices look exactly the same. Any suggestions on how to deal with this?

Thanks again!

 

www.mapleprimes.com/files/9249_mapleprimes_post13_image.jpg

 

Insert/Edit Image won't work today. I swear I managed to use it yesterday. Isn't that an image posted right under my name? Oh well, it's just one of those days...

perhaps, but it does the job. So I'm HAPPY.

The matrix:

M := matrix(2,2,[(q-b)*f[x,x]*eta(c)/(f(x)-c)-(q-b)*(f[x]-q)*
> eta(c)/(f(x)-c)^2*f[x],(q-b)*(f[x]-q)*eta[c]/(f(x)-c)+(q-b)*
> (f[x]-q)*eta(c)/(f(x)-c)^2,1+(f[x]-q)*eta(c)/(f(x)-c)-(q-b)*
> eta(c)/(f(x)-c),0]);

The first series of substitutions involving lambda and mu:

M2 := subs( q-b=-mu*(f(x)-c), eta(c)=lambda*(f(x)-c)/(f[x]-q), f(x)-c=eta(c)*(f[x]-q)/lambda, eval(M));
 
The second series of substitution, a little contrived perhaps, but does the trick:


M2[1,1] := simplify(subs(f[x,x]=(lambda*f[x]-nu)/eta(c), eval(M2[1,1]))): eval(M2);

looks like:


<maple>matrix([[mu*nu, -mu*(f[x]-q)*eta[c]-lambda*mu], [1+lambda+mu*eta(c), 0]]) ;</maple>

 

[The above is basically the same image I posted above of the matrix after all the tranformations have been made.]

 

P.S. Sorry about the Maple tags. Once again I have forgotten how to use them. I am so afraid to toggle this nightmarish Source button, was that what I was supposed to do...

thanks for taking the trouble to explain that acer. A  few years back I used to keep an old version, I think it was version 5, because there had been some major changes to Maple and my older simulations would have had to be rewritten. In any case I don't do that anymore.

Hey thanks Jakubi, I'll remember this nifty trick in the future.

How about this:

M := matrix(2,2,[(q-b)*f[x,x]*eta(c)/(f(x)-c)-(q-b)*(f[x]-q)*eta(c)/(f(x)-c)^2*f[x],(q-b)*(f[x]-q)*eta[c]/(f(x)-c)+(q-b)*(f[x]-q)*eta(c)/(f(x)-c)^2,1+(f[x]-q)*eta(c)/(f(x)-c)-(q-b)*eta(c)/(f(x)-c),0]);

My matrix is actually 3X3, but the following should encompass all of its challenges!

what would be the workaround for this one?

I very much appreciate everyone's help, thanks again.

The ability to call an older kernel is a pretty useful feature that exists in Stata. But I suppose its usefulness is perhaps not sufficient to justify carrying forward an ever bigger program. It looks like acer has access to several kernels.

For some reason I no longer understand subs({(f[x]-z)/(f(x)-y)=lambda},eval(M)); wasn't working when I posted my second question, but it is now, so I must have done something wrong the first time. Thanks Acer for showing me the steps. I'm able to reproduce them for this example.

However, what I was after is actually a little more involved. I had provided a stripped-down example initially, but now I guess I have to show a bigger, and uglier matrix. Here is an example involving a matrix, where the same simplifiable expression occurs in several of the cells.

M := matrix(2,2,[(x^4+x^2+1)^2,z*(f[x]-z)/(f(x)-y),x*(f[x]-z)/(f(x)-y)^2,(f[x]-z)^2/(f(x)-y)]);

simplify(simplify(subs(f[x]=f[X],eval(M)),{(f[X]-z)/(f(x)-y)=lambda}));

In my version of Maple13, the simplify command simplifies the squares rather than doing the requested substitution, and I don't want that. I want the factored expressions inside the matrix to remain factored and the one substitution to be made in all the cells in which it can be made, including where there are some squares occurring, i.e. I need Maple to understand that (f[x]-z)^2/(f(x)-y) = (f[x]-z) * {  (f[x]-z)/(f(x)-y)  }, where the curly brackets are meant to indicate a "syntactic" unit, as Robert explained above.

I didn't expect it to be so tricky... It takes less than a minute to do it by hand   ;-)

Oh and is it possible to set the kernel to an older version? I'm unable to compare V12 and V13. I am running V13.

many thanks for your help!

Patrick.

P.S. I use to understand how to use Maple tags but I can't seem to get it to work anymore, it just spits out garbage, very sorry.

Thank you so much Robert, 

a follow-up if I may:

The simplification sought is actually to be applied to several elements of a matrix M.

Is there a way I can substitute all the f[x] for f[X] inside the matrix M so that I may then apply simplify in the way you suggested?

Something along the lines of (doesn't work):

M2 := subs(f[x]=f[X],eval(M));

simplify(simplify(M2,{(f[X]-z)/(f(x)-y)=lambda}));

Thanks

 

You can simplify your system. Since the first equation is quadratic:

> eq1 := diff(x(t), t)+2*(diff(x(t), t))^2-y(t)-.1*z(t) = 0:
> eq1b := diff(x(t),t)=convert(expand(solve(eq1,diff(x(t),t))),rational);

The other two equations can be turned into first-order ODEs by a change of variable, such as:

u(t) = diff(y(t), t) and v(t) = diff(x(t), t)

 

The original system in (x,c,q):

 

The transformed system in (u,v,r):

The Jacobian of the transformed system (u,v,r):

 

Clearly J13=0 and J33=0.

The eigenvalues of (u,v,r):

The Phase Diagrams of the 2-D (u,v) system:

The phase diagram at this scale reveals little.

Zooming on the critical point: u=0, v=0 and placing the nullclines:

Zooming still further:

The 2-D approximation above assumes that r^3*u is small.

My understanding of this diagram is: the critical point (u=0, v=0) may be approached for u>0 and v>0, but not for u<0 and v<0. In terms of the original system, it means that both x and c must be rising and cannot be falling. Is this the correct interpretation?

The 3-D transformed system (u,v,r) exhibits 1 negative eigenvalue for 2 positive eigenvalues at the critical point (u=0,v=0,r=b), which points to a one-dimensional stable manifold onto which the critical point may be approached, for a given r(0)=0 and free u(0) and v(0). The simulation of the 3-D system does indeed yield a converging path, for a very small error tolerance, confirming the insights garnered from the 2-D approximation.

I simulated u(t), v(t), r(t), and then transformed back to x(t), c(t), q(t):

The following is the plot of x(t):

The following is the plot of c(t):

The following is the plot of q(t):

It is clear from the system that the only way, if any, to approach the critical point x=xs, c=cs, q=b is for q<b and that as the system is approaching the critical point, it is most likely that q will rise. The above shows q falling a little initially.

It seems that the critical/stationary point may be approached on a one-dimensional manifold, but only for r>rs and u>0 and v>0 or -- in terms of the original system, only for x>xs and both x and c rising during the transition. For the physical interpretation of my system, that's a little odd, so that's why I'm posting here to seek reassurance about my interpretation.

The system is tricky since the stationary/critical point is not actually defined as v->0 (i.e. xdot->0).

Any pointers will be greatly appreciated. Thanks.

First 21 22 23 24 Page 23 of 24