nm

3646 Reputation

17 Badges

7 years, 362 days

MaplePrimes Activity


These are questions asked by nm

Hello.

Two related questions: I'd like to measure the CPU time used by a computation. Should I use with(CodeTools)? or use  time[real]? What would be the most accurate way to measure the CPU time used by one call, say dsolve()?

Also, How would one return both the result of the computation and the time used in one call so that one does not have to make two separate calls: to obtain the result and to obtain the CPU time?

Example:

restart;
with(CodeTools):
ode:=2*a*x^3*y(x)^3+2*x*y(x)+diff(y(x), x);
result:=Usage(dsolve(ode=0,y(x)),output='cputime');

Gives result:=0.141 while

restart;
ode:=2*a*x^3*y(x)^3+2*x*y(x)+diff(y(x), x);
result:=time[real](dsolve(ode=0,y(x)));

Gives result:= 0.145

But in both cases, I have to make another call to get the result of the DSolve in this example. result:=dsolve(ode=0,y(x)); which I'd like to avoid if possible. 

I am using Maple 18

 

restart;
eq:=diff(y(x),x) - y(x)^2 - x*y(x) - x + 1;
r:=dsolve(eq,y(x));
latex(r);

Gives an error "(in fprintf) string expected for string format". The problem seems when the math contains "erf"? Both examples below fail with result that contains this.

Maple 18, on windows 7.

Another example:

restart;
eq:=diff(y(x),x) + a*y(x)*(y(x)-x) - 1;
r:=dsolve(eq,y(x));
latex(r);

Another example, which seems to fail for different reason

restart;
eq:=diff(y(x),x) + a*x*y(x)^3+b*y(x)^2;
r:=dsolve(eq,y(x));
latex(r);

This is better explained with simple example. Suppose I have these 2 equations

a:='a';b:='b';x:='x';
eqs:=[3*a+4*b = 3*x, 5*a+7*b = 7*x];

What I want is to solve for (a/x) and (b/x) from the above, and not for "a" and "b".

Currently, I do this manually as follows. First divide both equations by 'x' to obtain the ratio. I had to do this manually as writing eqs/x gave expression which was hard to work with for what I want to do. I could not simplify it for what I wanted. So I typed this

eqs2:=[3*(a/x)+4*(b/x)=3,5*(a/x)+7*(b/x)=7];   %manually typed !

Now used algsubs to replace (a/x) by new variable z1, and replace (b/x) by new variable z2, then solve for z1,z2 (btw, I had to do algsubs one at a time. (need to look at this later, but not impotant)

algsubs(a/x=z1,eqs2);
algsubs(b/x=z2,%);
solve(%,{z1,z2});

       {z1=-7,z2=6}

Is there a way or function(s) to automate this. The hard part is telling Maple to use the ratio as new variable starting from set of equations.

One annoying feature in using document mode that I found is this. As I hit the return key to execute one command and automatically jump to the command below it (a feature that I like), but after few returns, I find myself at the bottom edge of the window, with the cursor pointing at the last command in the window.

Now when hitting return, the current command is execuated, and the next command below it appears, and it is also at the bottom edge of the window.  The cursor is from now on, always sitting at the bottom edge of the window, and I am not able to fully see the rest of the command and what is below it any more.

What would be better, is to try to keep the window centered, so that as I hit a return, the actual cursor remains in the middle of the window, and the window itself scrolls up. This way the command I am about to evaluate, and anything below it, remain in full view.

What I end up doing now, is when I get to the bottom of the window, is to manually scroll the window down using the mouse, so that now the cursor is up higher, and I can see more the commands which I am about to evaluate, then I repeate this process.

Is there  a way to configure Maple to try to keep the window centered? it is really very annoying to have to keep adjusting the window every few returns, and when one has 100 commands to evaluate, one by one (since I want to see the result before I go to the next command), this process gets tiring.

(does Maple do any usability studies and evaluation on its user interface by any independent outside group?)

restart;
g:=0.88641:
e:=2.53128:
eq:=tan(g)= e*sin(f)/(1+e*cos(f)):
fsolve(eq,f);

gives  1.19749

What command/option do I need to get both solutions like with Mathematica:

g = 0.886461;
e = 2.53128;
eq = Tan[g] == (e Sin[f])/(1 + e Cos[f]);
NSolve[eq, f]

  (*   {{f -> -2.56623}, {f -> 1.19756}} *)

thanks

First 73 74 75 76 77 78 79 Page 75 of 82