nm

11438 Reputation

20 Badges

13 years, 75 days

MaplePrimes Activity


These are questions asked by nm

 

One of the things I like in Maple is that I can return a local symbol from a proc() in some expression and it will not "conflict" with same symbol in the global space and will show the same.

I just do not know how Maple manages to do this.

For example:

foo:=proc(n)
   local x;
   x^n;
end proc;

And now if I do

x:=99;
foo(3);

Will return  x^3. This is even thought I had defined x:=99; before the call.

So there is one global `x` with value 99 and the `x` in the expression returned `x^3` did not get confused with the global `x`. Yet they look the same.

How does Maple manages to do this? In Mathematica, it always return local symbols with $nnn assigned to them to distinguish them from global symbols. (attaches the Module ID). For example, in Mathematica the same example above gives

Notice that the `x` returned from a proc() look different from inside the Module. It is not the same as the x in the global space.

Maple seems to be able to do the same thing, but using the same looking symbol. So it must be keeping track of things internally? It must know that the x in x^3 is not the same x in the x:=99 ofcourse.

Any idea how Maple does this?

 

restart;
sol:=dsolve(diff(y(x),x)= x/(sqrt(x^2-16))*1/(2*y(x)),y(x));

Gives

But the solution can also be written as

I just do not know how to transform the first solution to the second simpler one. I tried:

sol:=map(x->rhs(x),[sol]);
simplify(sol,radical);

Also tried simplify(sol,sqrt); simplify(sol,radical,symbolic); simplify(sol,size);

The simpler solution can be found as follows

restart;
sol:=dsolve(diff(y(x),x)= x/(sqrt(x^2-16))*1/(2*y(x)),y(x),'implicit');

But the term in the middle above is

Therefore the solution is really

eq:=y(x)^2-sqrt(x^2-16)-_C1 = 0;
solve(eq,y(x));

Which gives

What command to simplify the long solution to the shorter one obtained from the implicit?

 

The solution by Maple below is correct, but non-the-less, a little strange.

restart;
dsolve(diff(y(x),x)=3*x^2*(y(x)^2+1),y(x));

Gives

Ofcourse 3*constant is still constant. But it is a little strange and have no reason for it to be there.  When I solve it by hand

What could made Maple put the 3 in there? Again, solution is 100% correct, but it could be simpler.

Maple 2017.1

 

 

Maple help pages are terrible.  Sorry, but this is true.

I am looking for one example of how one is supposed to open a file and correctly check that the open was successful and no error occured, all done in code. As in a script.

All what help in fopen says is that if this and that, it generates an error.

            "

OK. But to check for this in code? Why not show an example? the help page on iostatus just lists possible errors. Again, not a SINGLE example of actual Maple code showing how to actually check or handle an error. It just says to call iostatus() and shows the output without an example of what to do next and what to check for.

Lets say one does this:


fileName := "C:\\foo.txt";
fd       := fopen(fileName,WRITE):

Now what? How to check the above was successful? Do I need a trap and catch? catch what? Do I need to check for fd being greater or equal to zero and also use trap in addition? And if an error happens, how to know what it is? How to to format the message, etc.. all in CODE (not interactive) and not by saying just look at the screen and see if there is an error message.

Spend 30 minutes in the help pages and could not find ONE example that shows how to actually check for errors.

I have no idea who writes Maple helps pages, but I find the help pages useless most of the time.

Compare the help for linux fopen for example, where is gives exact details of how to handle the error and find the exact error, all in code.

 

Sometimes dsolve returns solution as implicit, even when not using the `implicit` option. For example

restart;
ode:=diff(y(x),x)=(x*y(x))^(1/2):
sol:=dsolve(ode,y(x));

Gives

Which is the same result if I had used 'implicit'.

Is there a way to tell dsolve not to do this? is it becuase it can't solve for y(x) from the above?

Maple 2017.1

 

First 167 168 169 170 171 172 173 Last Page 169 of 201