Rouben Rostamian

MaplePrimes Activity

These are replies submitted by Rouben Rostamian

@Preben Alsholm Yes, I see the issue; I had checked the solution by hand and I had assumed that Maple will do the same thing, but as you have noted, (−1)^(1/3) is not −1 in Maple and one needs to watch out for that.

Your suggestion of rewriting the original ODE as ode := diff(v(t),t) = -2*(v(t)^2)^(1/3) addresses and resolves that issue perfectly.  As to the alternative suggestion, yes, that's also perfect, and in looking at that, I see that in offering my solution I have misread the requested initial condition v(0)=5 as v(0)=0.

How familiar are you with Maple?  Do you know how to plot any function at all?

@Earl That's a very nice demo.  As to your comment re "standard plot commands", I suppose you wish to replace your use of odeplot() with something else.  If you want, you may replace it with spacecurve(), or tubeplot().  Here is one possibility:

DispGeo := tubeplot(eval(convert(x(u, v(u)), list), dsol1), u = Pi/4 .. (3*Pi)/4, radius = 0.02, color = red, style = surface);

@Ahmed111 As Carl has pointed out, the trouble in Maple 18 may be due to "with(Physics)".  But that package is not needed in Linearize.mw.   Remove and try it again.

@Carl Love I misunderstood the question.  Then perhaps this is what is wanted:


4*c^2*((4/3)*c^2*(exp(((1/3)*I)*3^(1/2)*t))^2*(1+epsilon[2])^4*(exp(-((1/3)*I)*3^(1/2)*t))^2+8*c*(-(1/12)*3^(1/2)*(1+epsilon[2])^2*(diff(diff(epsilon[1], t), x))+(1+epsilon[1])^2*c*((diff(epsilon[2], t))^2+(1/3)*(1+epsilon[2])^2))*exp(((1/3)*I)*3^(1/2)*t)*exp(-((1/3)*I)*3^(1/2)*t)+(1/4)*(diff(diff(epsilon[1], t), x))^2+(1+epsilon[1])^2*(c*(diff(epsilon[1], t))-2)*(c*(diff(epsilon[1], t))+2)) = 0

indets(Eq1, function)

{epsilon[1], epsilon[2], exp(-((1/3)*I)*3^(1/2)*t), exp(((1/3)*I)*3^(1/2)*t), Physics:-diff(epsilon[1], t), Physics:-diff(epsilon[2], t), Physics:-diff(Physics:-diff(epsilon[1], t), x)}

In Eq1 replace diff(`&epsilon;`[1], t, x) by the symbol e__1tx, etc., linearize with respect to those symbols,

and then restore the symbols to their original meanings:

subs(diff(`&epsilon;`[1], t, x) = e__1tx, diff(`&epsilon;`[1], t) = e__1t, `&epsilon;`[1] = e__1, diff(`&epsilon;`[2], t) = e__2t, `&epsilon;`[2] = e__2, lhs(Eq1)); mtaylor(%, [e__1, e__1t, e__1tx, e__2, e__2t], 2); subs(e__1 = `&epsilon;`[1], e__2 = `&epsilon;`[2], e__1tx = diff(`&epsilon;`[1], t, x), %); simplify(%); collect(%, [`&epsilon;`[1], `&epsilon;`[2], diff(`&epsilon;`[1], t, x)]) = 0

-(8/3)*c^2*(-8*c^2+12)*epsilon[1]+(128/3)*c^4*epsilon[2]-(8/3)*c^3*3^(1/2)*(diff(diff(epsilon[1], t), x))-(8/3)*c^2*(-6*c^2+6) = 0


Download: Lineaize.mw

@Earl The opening paragraph of the Wikipedia page that you referred to in your original message, begins with:

      In geometry, a geodesic is commonly a curve representing
      in some sense the shortest path between two points in a surface.

Note the qualifier "in some sense" there; it is not making an absolute statement that a geodesic is the shortest path!

Technically, a geodesic curve on a surface is defined to be the generalization, in a very precise technical sense, of a straight line in the plane. For instance, a great circle on a sphere is a geodesic; it's the closest thing to a straight line that lies on a sphere. There is no appeal here to "two points" or "shortest distance".

The shortest length property of a geodesic is a consequence (i.e., it is proved as a theorem) of the "straight line" definition alluded to above. It holds under certain circumstances but it is not always valid without qualifications.

Have a look at the picture of the green cone in my previous message. The shortest path between the two orange points is the obvious little arc (not drawn) that connects those points. However, look at the red curve which also connects those two points. Imagine this as a real physical cone and the red curve as a (loose) rope that winds around the cone as shown, and goes through those two points. What would happen if you pulled that rope real tight? You will be minimizing the rope's length! The rope will take the shape as drawn. So yes, that shape is also a "shortest distance" between those two points. It is the shortest among all curves that wind around the cone once. It is shortest because if you try to pull any harder, the rope will break; you cannot make it any shorter.

This should clarify my statement that there may be multiple geodesics between two curves on a surface.  In that connection, have a look at the red and cyan geodesics on the animated torus in my earlier reply.


@Earl Okay, here it is: A geodesic on a cone

Download worksheet: geodesic-on-cone.mw


@Earl Yes, there is an idea there which I had not thought about, and which can be useful in some situatios.   Specifically, if the surface is parametrized such that geodesics are single-valued functions of one of the surface's parameters, then we may characterize those geodesics as solutions of boundary values problems of a 2nd order ODE obtained through the Euler-Lagrange equations. This works particularly well with toruses as in the illustrated answer which I am going to post next.  It should work in the case of some other interesting surfaces but I haven't tried.

@Earl I don't see an easy way to modify the code to do what you have asked.

There is some literature on the subject.  Perhaps a good way is to Google for "how to calculate the geodesic going through two given points".  I just did that and obtained two promising articles.

  1. This one appears to have been written by undergraduates.  Their methods seem to work but are computationally inefficient.
  2. This one appears to be more sophisticated. I haven't looked at the details but it seems to be worth a look.

I may give this question a try when I have some more time but not now.

@ecterrab That works!. Thanks!

PS: In the first of the two maplinit lines that you have provided, the "=" should be ":=".  

@ecterrab Thanks for the quick fix, as always!

Edgardo, that's a very nice enhancement.

Would it be possible to let users make the subscripted variables the default by setting some kind of environment variable in mapleinit?

@vv Yes, pdsolve() does return the correct general solution.  Something goes wrong when it tries to apply the initial condition.

Here is a possible enhancement to Maple pdsolve().  In the same way that dsolve() offers an implicit option. it would be helpful if pdsolve() also offered that option.  Then the solution of the initial value problem ut + u ux = 0, u(x,0) = f(x) would be expressed as f(x − ut) = u which is more pleasant than the RootOf expressions to look at. 

@Earl That looks good.  Good job!


@Preben Alsholm I like that.  Very nice!

1 2 3 4 5 6 7 Last Page 1 of 81