nm

12238 Reputation

20 Badges

13 years, 257 days

MaplePrimes Activity


These are questions asked by nm

I found a new strange thing with odetest that I have not seen before.

Would you say that these two solutions are the same or not?

They look the same to me.  One just have all the terms on one side, that is all.

Why would Maple odetest verify the first one but not the second? I did not know that all terms have to be on one side before. Is this documented somewhere?

Please see worksheet below.

restart;

interface(version);

`Standard Worksheet Interface, Maple 2020.1, Windows 10, July 30 2020 Build ID 1482634`

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 847 and is the same as the version installed in this computer, created 2020, October 17, 17:3 hours Pacific Time.`

ode:=diff(y(x), x) - 2*y(x) = 2*sqrt(y(x));
ic:=[y(0)=1];
maple_sol:=dsolve([ode,op(ic)],implicit);
odetest(maple_sol,[ode,op(ic)]) assuming x>0

diff(y(x), x)-2*y(x) = 2*y(x)^(1/2)

[y(0) = 1]

1-2*exp(x)+y(x)^(1/2) = 0

[0, 0]

#now move some terms to one side, and odetest no longer verifies it
my_sol:=y(x)^(1/2) = -1+2*exp(x);
odetest(my_sol,[ode,op(ic)]) assuming x>0

y(x)^(1/2) = -1+2*exp(x)

[diff(y(x), x)-2*y(x)+2-4*exp(x), 0]

#the solution is to put all terms on one side
my_sol:=y(x)^(1/2) = -1+2*exp(x);
odetest(rhs(my_sol)-lhs(my_sol)=0,[ode,op(ic)]) assuming x>0

y(x)^(1/2) = -1+2*exp(x)

[0, 0]

 


 

Download odetest_issue_oct_18_2020.mw

 

Using solve on this example:

restart;
eq:=x^3 - 3*x^2 + 3*x - 1=0;
solve(eq,x);

gives solution x=1, with multiplicty 3

              1, 1, 1

When using PDEtools:-Solve

restart;
eq:=x^3 - 3*x^2 + 3*x - 1=0;
solve(eq,x);
PDEtools:-Solve(eq,x);

it gives

         x = 1

How can one make it show x=1, x=1, x=1 ?

Found that only when using PDEtools:-Solve(eq,x,numeric) it gives 

           x = 1., x = 1., x = 1.

How to make it do the same without using numeric?

Maple 2020.1.1

 

What is the reason that error accepts its arguments without being inside paranthesis? This is different from all other Maple functions I've seen. For example, both these below work the same

f := proc (x) 
     if x<0 then 
        error "invalid x: %1", x; 
     else 
        x^(1/2); 
     end if 
end proc:

And

g := proc (x) 
     if x<0 then 
        error("invalid x: %1", x); 
     else 
        x^(1/2)
     end if 
end proc:

One can't do for other Maple functions. For example sin x  gives an error. It must be sin(x)

Looked at help page for error and did not see something about this difference.

The command Typesetting:-Settings(prime=x,typesetprime=true):  makes diff(y(x),x) gives the latex as y'(x) which is what I wanted.

But I'd like to also be able to turn this off.  The reason is that in my program, I could have different variables in different places, and need to be able to turn this off/on as the program runs.

I know I can change the setting, by calling the above command again, with different variable. But I was looking for a way to turn it off as well. 

Similar to Typesetting:-Suppress  

Is there a way to do that? Actually the best solution would be, is to have the effect of Typesetting:-Settings(prime=x,typesetprime=true): be local to the proc. So if this command is used inside a proc, when leaving the proc, its effect will be automatically removed, as if this command was never issued.

Only when it is issued in global context, it will remain in effect until one does a restart.   Right now, the effect of Typesetting:-Settings(prime=x,typesetprime=true): is global. Even when called from inside a proc.  But this might be hard to implement. Therefore, being just able to turn it off is good for now.

Here is an example

restart;
foo:=proc(expr,x,y)
   Typesetting:-Settings(prime=x,typesetprime=true):
   print(Physics:-Latex(expr));

   #How to turn off the effect of above Typesetting command now?
   #so the following command works as the default setting?

   print(Physics:-Latex(expr));
end proc;


expr:=diff(y(x),x)=3:
foo(expr,x,y);

 

To obtain the columns of matrix as a list, this is what I currently do

A:=Matrix([[1,2,1,3,2],[3,4,9,0,7],[2,3,5,1,8],[2,2,8,-3,5]]);

Now

[seq(A[..,i],i=1..4)];

Also this does it

map(i->A[..,i],[$1..4]);

Is there a "shorter" way to do it?  For example, A[..,[$1..4]] does not do it ofcourse, it just gives the matrix itself back.

 

 

First 127 128 129 130 131 132 133 Last Page 129 of 217