Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

I am a beginner with Maplesoft.

I have a data file with several devices IDs and links between these devices (more than 5000 links). For representing a network in Maple, I am aware that the GraphTheory package should be used. The vertices and edges are to be defined and the graph to be displayed.

The examples that I have looked at do not have such a large number of links. With more than 5000 links in the data file, I am not sure how to proceed further.

Any help or pointers would be highly appreciated.

In a recent conversation I explained whyLSODE was giving wrong results (http://www.mapleprimes.com/questions/210948-Can-We-Trust-Maple#comment230167). After a lot of confusions and weird infinite loops for answers, it turned out that Newton Raphson was not properly done.

Both LSODE and MEBDFI are currently incompletely implemented (only one iteration is done instead of Newton Raphson till convergence). Maplesoft should update the help files accordingly.

The post below explains how better results are obtained with method = mgear. To run the command mgear you will need Maple 6 or earlier versions. For lsode, any current version is fine.  Unfortunately Maple deprecated an algorithm that worked fine. From Maple 8, the algorithm moved to Rosenbrock methods for stiff equations. This is still not ideal.

If Maple had a working algorithm, I am hoping that Maplesoft folks would consider bringing it back in future versions. (At least with the same functionality as in Maple 6).

PLEASE NOTE, the issue is not with solving this example (Very simple). This example is chosen to show how a popular algorithm in the literature is wrongly implemented.

 

Here Maple's lsode is forced to take only one step and use first order back ward difference formula to integrate from 0 to 1.  LSODE mimics Eulerbackward using the options given below. The post shows that LSODE does not do Newton Raphson and just performs only iteration for nonlinear equations.

restart;

Digits:=15;

Digits := 15

(1)

eq:=diff(y(t),t)=-y(t);

eq := diff(y(t), t) = -y(t)

(2)

C:=array([0$22]);

C := Vector[row](22, {(1) = 0, (2) = 0, (3) = 0, (4) = 0, (5) = 0, (6) = 0, (7) = 0, (8) = 0, (9) = 0, (10) = 0, (11) = 0, (12) = 0, (13) = 0, (14) = 0, (15) = 0, (16) = 0, (17) = 0, (18) = 0, (19) = 0, (20) = 0, (21) = 0, (22) = 0})

(3)

C[9]:=1;

C[9] := 1

(4)

sol:=dsolve({eq,y(0)=1},type=numeric,method=lsode[backfull],ctrl=C,initstep=0.1,minstep=0.1,abserr=1,relerr=1):

sol(0.1);

[t = .1, y(t) = .909090909090834]

(5)

subs(diff(y(t),t)=(y1-1)/0.1,y(t)=y1,eq);

0.1e2*y1-0.1e2 = -y1

(6)

fsolve(%,y1=0.5);

.909090909090909

(7)

 While for linear it gave the expected result, it gives wrong results for nonlinear problems.

sol1:=dsolve({eq,y(0)=1},type=numeric):

sol1(0.1);

[t = .1, y(t) = .904837355407810]

(8)

eq:=diff(y(t),t)=-y(t)^2*exp(-y(t))-10*y(t)*(1+0.01*exp(y(t)));

eq := diff(y(t), t) = -y(t)^2*exp(-y(t))-10*y(t)*(1+0.1e-1*exp(y(t)))

(9)

sol:=dsolve({eq,y(0)=1},type=numeric,method=lsode[backfull],ctrl=C,initstep=0.1,minstep=0.1,abserr=1,relerr=1):

sol(0.1);

[t = .1, y(t) = .501579294869466]

(10)

subs(diff(y(t),t)=(y1-1)/0.1,y(t)=y1,eq);

0.1e2*y1-0.1e2 = -y1^2*exp(-y1)-10*y1*(1+0.1e-1*exp(y1))

(11)

fsolve(%,y1=1);

.488691779256025

(12)

sol1:=dsolve({eq,y(0)=1},type=numeric):

 the expected answer is correctly obtained with default tolerance as

sol1(0.1);

[t = .1, y(t) = .349614721994122]

(13)

 The results obtained are worse than single iteration using jacobian.

eq2:=(lhs-rhs)(subs(diff(y(t),t)=(y1-1)/0.1,y(t)=y1,eq));

eq2 := 0.1e2*y1-0.1e2+y1^2*exp(-y1)+10*y1*(1+0.1e-1*exp(y1))

(14)

jac:=unapply(diff(eq2,y1),y1);

jac := proc (y1) options operator, arrow; 20.+2*y1*exp(-y1)-y1^2*exp(-y1)+.10*exp(y1)+.10*y1*exp(y1) end proc

(15)

f:=unapply(eq2,y1);

f := proc (y1) options operator, arrow; 0.1e2*y1-0.1e2+y1^2*exp(-y1)+10*y1*(1+0.1e-1*exp(y1)) end proc

(16)

y0:=1;

y0 := 1

(17)

dy:=-evalf(f(y0)/jac(y0));

dy := -.508796088545793

(18)

ynew:=y0+dy;

ynew := .491203911454207

(19)

 Following procedures confirm that it is indeed calling the procedure only at 0 and 0.1, with backdiag giving slightly better results.

myfun:= proc(x,y) if not type(x,'numeric') or not type(evalf(y),numeric)then 'procname'(x,y);
    else lprint(`Request at x=`,x); -y^2*exp(-y(x))-10*y*(1+0.01*exp(y)); end if; end proc;

myfun := proc (x, y) if not (type(x, 'numeric') and type(evalf(y), numeric)) then ('procname')(x, y) else lprint(`Request at x=`, x); -y^2*exp(-y(x))-10*y*(1+0.1e-1*exp(y)) end if end proc

(20)

sol1:=dsolve({diff(y(x),x)=myfun(x,y(x)),y(0)=1},numeric,method=lsode[backfull],ctrl=C,initstep=0.1,minstep=0.1,abserr=1,relerr=1,known={myfun}):

sol1(0.1);

`Request at x=`, 0.

`Request at x=`, 0.

`Request at x=`, .1

`Request at x=`, .1

[x = .1, y(x) = .501579304183583]

(21)

sol2:=dsolve({diff(y(x),x)=myfun(x,y(x)),y(0)=1},numeric,method=lsode[backdiag],ctrl=C,initstep=0.1,minstep=0.1,abserr=1,relerr=1,known={myfun}):

sol2(0.1);

`Request at x=`, 0.

`Request at x=`, 0.

`Request at x=`, .1

`Request at x=`, .1

[x = .1, y(x) = .497831388424072]

(22)

 

Download Lsodeanalysistrunc.mws

 

Next see how dsolve method = mgear works just fine in Maple 6 (gives the expected answer upto 3 Digits accuracy). To run this code you will need Maple 6 or earlier versions. Maple 7 has this algorithm, but I don't know to use it as it is hidden. I would like to get support from other members to get Maplesoft's attention to bring this algorithm back.

If Mdy/dt = f(y) is solved using mgear algorithm (instead of dy/dt =f ), then one can have a good DAE solver based on this (M being singular). 

 

restart;

myfun:= proc(x,y) if not type(x,'numeric') or not type(evalf(y),numeric)then 'procname'(x,y);
    else lprint(`Request at x=`,x); -y^2*exp(-y(x))-10*y*(1+0.01*exp(y)); end if; end proc;

myfun := proc (x, y) if not (type(x, 'numeric') and type(evalf(y), numeric)) then ('procname')(x, y) else lprint(`Request at x=`, x); -y^2*exp(-y(x))-10*y*(1+0.1e-1*exp(y)) end if end proc

(1)

sol2:=dsolve({diff(y(x),x)=myfun(x,y(x)),y(0)=1},{y(x)},numeric,method=mgear[mstepnum],stepsize=0.1,minstep=0.1,errorper=1):

sol2(0.1);

`Request at x=`, 0.

`Request at x=`, .1

`Request at x=`, .1

`Request at x=`, .1

[x = .1, y(x) = .4887165263]

(2)

 

 

Download Mgearworks.mws

I have data matrix in text file.

I opened it with Maple and replaced decimal commas to decimal points + replaced column separator to semicolon.

Then I set 'Convert to plain text'.

After these modifications, I would like to export that Maple worksheet back to .txt  file with content exactly as shown on the display.

But if I export the worksheet as Maple text, extra pound signs are added to the beginning of each row. In this case I cannot import data to matrix datatype=float.

If I export the worksheet as Plain text, all the rows are destroyed and I cannot import data into matrix as well.

How can I export worksheet content, exactly as shown on display, into text file?

This post describes how Maple was used to investigate the Givens rotation matrix, and to answer a simple question about its behavior. The "Givens" part is the medium, but the message is that it really is better to teach, learn, and do mathematics with a tool like Maple.

The question: If Givens rotations are used to take the vector Y = <5, -2, 1> to Y2 = , about what axis and through what angle will a single rotation accomplish the same thing?

The Givens matrix G21 takes Y to the vector Y1 =, and the Givens matrix G31 takes Y1 to Y2. Graphing the vectors Y, Y1, and Y2 reveals that Y1 lies in the xz-plane and that Y2 is parallel to the x-axis. (These geometrical observations should have been obvious, but the typical usage of the Givens technique to "zero-out" elements in a vector or matrix obscured this, at least for me.)

The matrix G = G31 G21 rotates Y directly to Y2; is the axis of rotation the vector W = Y x Y2, and is the angle of rotation the angle  between Y and Y2? To test these hypotheses, I used the RotationMatrix command in the Student LinearAlgebra package to build the corresponding rotation matrix R. But R did not agree with G. I had either the axis or the angle (actually both) incorrect.

The individual Givens rotation matrices are orthogonal, so G, their product is also orthogonal. It will have 1 as its single real eigenvalue, and the corresponding eigenvector V is actually the direction of the axis of the rotation. The vector W is a multiple of <0, 1, 2> but V = <a, b, 1>, where . Clearly, W  V.

The rotation matrix that rotates about the axis V through the angle  isn't the matrix G either. The correct angle of rotation about V turns out to be

the angle between the projections of Y and Y2 onto the plane orthogonal to V. That came as a great surprise, one that required a significant adjustment of my intuition about spatial rotations. So again, the message is that teaching, learning, and doing mathematics is so much more effective and efficient when done with a tool like Maple.

A discussion of the Givens rotation, and a summary of the actual computations described above are available in the attached worksheet, What Gives with Givens.mw.

I attempt to get two (or better, three) datas from an XLSM file. The tools doesn't work. I want then to do some tests about the apparied datas extracted.

Could you help me ? The best I did was getting a matrix result from an XLS (and not XLSM) file, and I don't know what to do with this kind of result, as I want only test some hypothesis as a linear regression with or without least squares, not do learn what to do with this matrix result..

Thx to you,

Milos

hello everybody, 

Is there some trick to bypass the limiited scope of the semicolon statement operator ?

More specifically, is it possible to force Maple to display (apart from the explicit use of the 'print' command) the results of the commands within two nested loops or within a loop and and a conditional statement ?


From the help page concerning statement operators it seems that it is truly impossible ...

"Note: This rule does not apply to statements enclosed in the body of another statement such as an if statement, loop, procedure, module, use statement, or try statement. In these cases, all enclosed statements must be separated by a semicolon or colon."


While not blocking it is a rather irritating limitation :-)

Hello all,

I've been writing this procedure and it all works apart from the final sequence. I don't know why the final sequence doesn't input a number. Any suggestions? Thank you in advance!

Gambia ManTest_2.mw

Hi everybody

In the attached file, when I run the code, a confusing error message appears. Obviously, the product of a 3*2 matrix by a 2*1 matrix is possible, but Maple gives an error. These 2 matrices are multiplied correctly in another worksheet. What's the source of this error?

Thanks in advance

 

F1.mw

Hi Everyone!

I want to import a maple 3D Diagram to TecPlot or Excel.

The diagram is a function of x & y.

I couldn't find any soloution to export a 3D diagram in Maple.

Any solution???

 

Regards.

I am trying to simplify the following polynomial.

> R1 := collect(((3*d1^2-2*d1-d1^3)*r-3*d1^2+d1^3+2*d1)*R^3+((-6*d1+7*d1^2-d1^3)*r^2+(d1-d1^3-3*d1^2+2)*r)*R^2+((-6*d1+6*d1^2)*r^3+(-4*d1^3+6-7*d1+2*d1^2)*r^2)*R+(2*d1^2-2*d1)*r^4+(-2*d1^2-4*d1+4)*r^3,[R,r,d],recursive);

 

With the "collect along with rucursive" unable to give compact version. In the above polynomial most of the bracket terms will have factors([3*d1^2-2*d1-d1^3]=-d1*(d1-1)*(d1-2)), but the collect command unable give these factors, doing such manual simplification in bigger polynomial case is complex. Is there any way to represent above polynomial in compact form.

 

Thanking you in advance.

 

MVC                       

 

 

Hi everyone!

I have a problem solving the nonlinear ode (as attached below). I got this error ---> Error, (in fproc) unable to store '-1.32352941215398+(-0.441176470717993e-1, -0.)' when datatype=float[8]

1) Could someone please explain to me what does the unable store .... error means? 

and i will be grateful if you could help me finding the solution out. Thanks in advance



 

 

Trying to plot the function 7*x^2+22*xy+7*y^2+14*xz*sqrt(3)+14*yz*sqrt(3)-5*z^2 = 180, I tried using implicitplot3d to plot it, with ranges I'm quite certain should contain the surface but for whatever reason all I get is a blank plot with no graphics. Here's my input:

 

Loading plots

with(plots);
[animate, animate3d, animatecurve, arrow, changecoords,

complexplot, complexplot3d, conformal, conformal3d,

contourplot, contourplot3d, coordplot, coordplot3d,

densityplot, display, dualaxisplot, fieldplot, fieldplot3d,

gradplot, gradplot3d, implicitplot, implicitplot3d, inequal,

interactive, interactiveparams, intersectplot, listcontplot,

listcontplot3d, listdensityplot, listplot, listplot3d,

loglogplot, logplot, matrixplot, multiple, odeplot, pareto,

plotcompare, pointplot, pointplot3d, polarplot, polygonplot,

polygonplot3d, polyhedra_supported, polyhedraplot, rootlocus,

semilogplot, setcolors, setoptions, setoptions3d, spacecurve,

sparsematrixplot, surfdata, textplot, textplot3d, tubeplot]
implicitplot3d(7*x^2+22*xy+7*y^2+14*xz*sqrt(3)+14*yz*sqrt(3)-5*z^2 = 180, x = -50 .. 50, y = -50 .. 50, z = -50 .. 50, axes = normal);

 

Not sure what I'm doing wrong exactly. 

Dear All,

I have a problem solving the attached nonlinear system of equations using shooting method.
I will be grateful if you could help me finding the solutions out.

 

restart; Shootlib := "C:/Shoot9"; libname := Shootlib, libname; with(Shoot);
with(plots);
N1 := 1.0; N2 := 2.0; N3 := .5; Bt := 6; Re_m := N1*Bt; gamma1 := 1;
FNS := {f(eta), fp(eta), fpp(eta), g(eta), gp(eta), m(eta), mp(eta), n(eta), np(eta), fppp(eta)};
ODE := {diff(f(eta), eta) = fp(eta), diff(fp(eta), eta) = fpp(eta), diff(fpp(eta), eta) = fppp(eta), diff(g(eta), eta) = gp(eta), diff(gp(eta), eta) = N1*(2.*g(eta)+(eta-2.*f(eta)).gp(eta)+2.*g(eta)*fp(eta)+2.*N2.N3.(m(eta).np(eta)-n(eta).mp(eta))), diff(m(eta), eta) = mp(eta), diff(mp(eta), eta) = Re_m.(m(eta)+(eta-2.*f(eta)).mp(eta)+2.*m(eta)*fp(eta)), diff(n(eta), eta) = np(eta), diff(np(eta), eta) = Re_m.(2.*n(eta)+(eta-2.*f(eta)).np(eta)+2.*N2/N3.m(eta).gp(eta)), diff(fppp(eta), eta) = N1*(3.*fpp(eta)+(eta-2.*f(eta)).fppp(eta)-2.*N2.N2.m(eta).(diff(mp(eta), eta)))};
blt := 1.0; IC := {f(0) = 0, fp(0) = 0, fpp(0) = alpha1, g(0) = 1, gp(0) = beta1, m(0) = 0, mp(0) = beta2, n(0) = 0, np(0) = beta3, fppp(0) = alpha2};
BC := {f(blt) = .5, fp(blt) = 0, g(blt) = 0, m(blt) = 1, n(blt) = 1};
infolevel[shoot] := 1;
S := shoot(ODE, IC, BC, FNS, [alpha1 = 1.425, alpha2 = .425, beta1 = -1.31, beta2 = 1.00, beta3 = 1.29]);
Error, (in isolate) cannot isolate for a function when it appears with different arguments
p := odeplot(S, [eta, fp(eta)], 0 .. 15);
Error, (in plots/odeplot) input is not a valid dsolve/numeric solution
display(p);
Error, (in plots:-display) expecting plot structure but received: p
p2 := odeplot(S, [eta, theta(eta)], 0 .. 10);
Error, (in plots/odeplot) input is not a valid dsolve/numeric solution
display(p2);
Error, (in plots:-display) expecting plot structure but received: p2

 

 

I am interested in using conformal maps for image distortion. How can this be made in Maple (an analogy to the ImageForwardTransformation[] in Mathematica, see http://community.wolfram.com/groups/-/m/t/854405?p_p_auth=TLh6kMXL). Thanks!

First 1076 1077 1078 1079 1080 1081 1082 Last Page 1078 of 2224