MaplePrimes Questions

Hello! I would like to ask a short question about particularsol function. Could someone please explain to me, why the function interprets the cosinus term as particular solution, even though it is homogeneous solution? Is it a bug in Maple or I unterstand something wrong?

I am trying to find the surface area of f(x,y) but Maple seems unable to calculate it even numerically.  Any help would be much appreciated.  I'm not sure if I have written this correctly.

 

f := (x, y) -> x^4*sin(x^2 + y^3)^2*ln(y) + 2*y*x

fx := 4*x^3*sin(y^3 + x^2)^2*ln(y) + 4*x^5*sin(y^3 + x^2)*ln(y)*cos(y^3 + x^2) + 2*y

fy := 6*x^4*sin(y^3 + x^2)*ln(y)*y^2*cos(y^3 + x^2) + x^4*sin(y^3 + x^2)^2/y + 2*x

Int(Int(sqrt(fx^2 + fy^2 + 1.), x = 0. .. 4.), y = 1. .. 5.)

 

What is the best way to handle this?  Many times one wants to return an expression from inside a proc, which uses local symbls, back to the user (global context).

The problem is, if one tries to simplify this returned expression, adding assumptions on some of the symbols in the expression, it does not work. Since the symbol used in the assuming is global, while the symbol inside the returned expression was local to the proc.

Even though the symbols look the same on the screen, they are actually different symbols, so the simplify does not work as expected.

Here is a simple example

restart;
foo:=proc()
local x;
  return exp(2*sqrt(1/x^2)*x*ln(x)) + exp(sqrt(1/x^2)*x*ln(x)) ;
end proc;

sol:=foo();

simplify(sol) assuming x>0

The above does not work. Since the "x" in assuming x>0 is global, while the "x" in the expression was local to the proc. So even though they look same, they are different symbols.

The standard way to handle this, is to pass the "x" to be used to build the solution, from the user to the proc(), so that when the expression is returned, the "x" used will be the global one. Like this

restart;
foo:=proc(x)
  return exp(2*sqrt(1/x^2)*x*ln(x)) + exp(sqrt(1/x^2)*x*ln(x)) ;
end proc;

sol:=foo(x);

simplify(sol) assuming x>0

Now it works:

But this method is not practical all the time. Suppose the local proc wants to generate an expression with other symbols in it, that the user does not know about. Say alpha, beta, z, eta, and so on. The user does not care about having to pass every possible symbol down on each call.  

Is there a way to tell assuming, that the symbols in assumptions command, are to be taken from the expression itself, and not to be global ones?    i.e. when doing 

simplify(sol) assuming x>0

I want Maple to take that "x" in assuming to be the "x" inside the expression only, and not a global "x".  

This will make life much simpler.  I remember seeing other use of assuming where this could be done, but I can't find it yet.

edit:

This is  just one example, where returning expression with new symbol from local proc can be required sometimes.

This is similar to using constant of integrations _C1 by dsolve when it returns a solution.

But those _C1 are all predefined as system/global symbols. But there can be cases where one needs to use new symbols. 

An example is where int() timesout or it does not produce result.

In this case, instead of leaving it as is (since I need to use the result and do not want Maple to keep evaluating it in the expression it is in), so  I replace int(integrand,x) with Int( new_integrand , alpha=0...x) where new_integrand is the same as integrand but with each in it, is replaced by new symbol alpha

This symbol alpha has to be local to the proc (it was not passed down by user). 

Maple uses _Z sometimes for such a cases, which I do not like. (it looks bad in Latex)

Here is an example

foo:=proc(x)
local int_result,alpha;
local integrand:=1/ln(x^2+1);

int_result:= int(integrand,x);
if has(int_result,'int') then  #did not integrate
   int_result:=Int(subs(x=alpha,integrand),alpha=0..x);
fi;

  return int_result;
end proc:

int_result:=foo(x)

The expression returned contains symbol alpha, which is local to the proc.  Only way around this, is to have the user pass in alpha as well as x, just in case it is needed, which is not practical to do.

This is just one example of many. Another example is when doing some transformation internally (change of variables) to convert the ode from one form to another, and I need to return those intermediate results back to caller. These substitutions use local symbols.

As I said, I could have used _Z or some other system/global known symbol for this. But I do not like how this looks in Latex. And if I need another symbol for another case, I have to look for another one.  Instead, I just make my own local symbols and use them in the expression. (Except for constant of integrations, I use those _C1,_C2, etc....

 

Hi friends,

I have the next list of strings and I want to convert it to a list of vectors.

 

with(StringTools)

Generate(3, "012");
["000", "001", "002", "010", "011", "012", "020", "021", "022",

  "100", "101", "102", "110", "111", "112", "120", "121", "122",

  "200", "201", "202", "210", "211", "212", "220", "221", "222"]

 

Or maybe there's an easiest way to generate all the n-ary vectors of a given lenght.

Thank's in advance.

Dear all 

I need your help to evaluate the following integral using Maple 

int(x^x,x=0..1)

 

Thank you for any help 

 

Dear friends,

I have a given number and I need to convert its digits into an array. For example: 

a:= 456;  and I need an array [4 5 6]. 

I know how to obtain such a procedure as a list

map(parse, StringTools:-Explode(convert(a, string)));

but not how to get the result as an array. Could you please help me with the right commands?

Many thanks for the help. 

I think  the help file regarding searchtext should be more specific regarding the result of the search.

Using searchtext(pattern, string, range), the result will be an integer which indicates the position of the first character from the beginning of the range - not from the beginning of the string.

One of the examples actually shows that.

SearchText("ijklm", "abcdefghijklmnopqrstuvWxy", 5..-5);
inequal({Re(ecs1) <= c, Re(ecs2) <= c, Re(ecs3) <= c}, Dm1 = 0 .. 1, c = 0 .. 1, color = "DodgerBlue", numpoints = 8000, transparency = 0, labels = [D[m1], c], axesfont = [16, 16], labelfont = [16, 16], axes = boxed)

Hi there, 

I have this issue when I try to name my label to Dm1 I get back "VectorCalculus:-Dm1". I know that after I have the figure, I can manually change it but I have many of them and want to save them automatically, therefore it would be necessary to immediately get the right label. 

Are there any suggestions? Maybe a different way, how to write subscript?

 

Thank you for your help!

 

I solved this linear constant coefficients ode by hand, and wanted to use Maple to check my solution.

dsolve works with no problem. I wanted to check the particular solution on its own, so called DEtools:-particularsol(ode,y(x)); but was surprised it hangs.

Why would DEtools:-particularsol(ode,y(x)); hang, when dsolve gives the complete solution (including particular solutin ofcourse) right away?  It is 7th order ODE. But nothing special. Linear and constant coefficients. Since dsolve solves it right away, I expected DEtools:-particularsol to have no problem as well.

restart;
ode:=diff(y(x),x$7)-2*diff(y(x),x$6)+9*diff(y(x),x$5)-16*diff(y(x),x$4)+24*diff(y(x),x$3)-32*diff(y(x),x$2)+16*diff(y(x),x)=exp(2*x)+x*sin(x)+x^2;

dsolve(ode);  #no problem.

#this hangs. Why?
DEtools:-particularsol(ode,y(x));


 

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 851. The version installed in this computer is 847 created 2020, October 17, 17:3 hours Pacific Time, found in the directory C:\Users\me\maple\toolbox\2020\Physics Updates\lib\`

restart;
ode:=diff(y(x),x$7)-2*diff(y(x),x$6)+9*diff(y(x),x$5)-16*diff(y(x),x$4)+24*diff(y(x),x$3)-32*diff(y(x),x$2)+16*diff(y(x),x)=exp(2*x)+x*sin(x)+x^2;

diff(diff(diff(diff(diff(diff(diff(y(x), x), x), x), x), x), x), x)-2*(diff(diff(diff(diff(diff(diff(y(x), x), x), x), x), x), x))+9*(diff(diff(diff(diff(diff(y(x), x), x), x), x), x))-16*(diff(diff(diff(diff(y(x), x), x), x), x))+24*(diff(diff(diff(y(x), x), x), x))-32*(diff(diff(y(x), x), x))+16*(diff(y(x), x)) = exp(2*x)+x*sin(x)+x^2

#this works
sol:=dsolve(ode)

y(x) = (5/16)*x+(1/128)*exp(2*x)+(1/8)*x^2-(1/4)*exp(-(2*I)*x)*_C3-(1/4)*exp((2*I)*x)*_C3-exp(x)*_C4+(1/8)*exp(-(2*I)*x)*_C5+(1/8)*exp((2*I)*x)*_C5+((1/36)*I)*exp(-I*x)-((1/36)*I)*exp(I*x)-((67/57600)*I)*exp(-(2*I)*x)+((67/57600)*I)*exp((2*I)*x)+((1/4)*I)*exp(-(2*I)*x)*_C5*x-((1/4)*I)*exp((2*I)*x)*_C5*x+(67/28800)*x*exp((2*I)*x)+(67/28800)*x*exp(-(2*I)*x)-(1/4)*exp(-(2*I)*x)*_C6*x-(1/4)*exp((2*I)*x)*_C6*x-((1/36)*I)*exp(I*x)*x+((1/36)*I)*exp(-I*x)*x+((67/21600)*I)*exp(-(2*I)*x)*x+((1/4)*I)*exp(-(2*I)*x)*_C2+((1/8)*I)*exp(-(2*I)*x)*_C6-((67/21600)*I)*exp((2*I)*x)*x-((1/4)*I)*exp((2*I)*x)*_C2-((1/8)*I)*exp((2*I)*x)*_C6+(67/43200)*exp((2*I)*x)+(67/43200)*exp(-(2*I)*x)+(1/54)*exp(-I*x)+(1/54)*exp(I*x)+_C4*exp(x)*x+(1/48)*x^3+_C7+_C1*exp(x)

#this hangs. Why?
DEtools:-particularsol(ode,y(x));

 


 

Download particular_sol.mw

How can I sort lists which have tables as entries, and decide upon which entry the sort should be based.

In the attached example each entry in the list has the values material, name and type.

  • How would I sort the list based on the material name for example?
  • Are there any better methods to define and store the data?

Listsort.mw

Hi,
I'm surprised by the error Maple returns when asked to find the JordanBlockMatrix or the JordanForm of a matrix whose some entries are floating points.
I don't understand why these operations are valid only with entries of the form a+I*b with a and b are algebraic numbers or with transcendent numbers such as Pi.
Is this a theoretical result or a technical limitation of Maple?
Jordan.mw

 

Download Jordan.mw

 

As the title states, I want to have an equation f(x), and f(x) = 0 if x < 0, f(x) = x if x >= 0. How could I accomplish this?

I'm actually trying to generating a differential equation something like y'(x) + k*h(y) = sin(x) where h(y) is what I described above. Is there any convenient way to do this?

I want to construct a list/set of square symmetric matrices (or Toeplitz etc.) matrices with entries from a certain finite field, GF(2) or GF(5).  

Thank you in adavnce.

Here is a division-by-zero bug in a solution produced by pdsolve.  Admittedly, this sort of problem can be difficult to avoid in a CAS, but here it is, in case there is a chance to get it fixed somehow.

restart;

kernelopts(version);

`Maple 2020.1, X86 64 LINUX, Jul 30 2020, Build ID 1482634`

pde := diff(u(x,y,t),t,t) = diff(u(x,y,t),x,x) + diff(u(x,y,t),y,y);

diff(diff(u(x, y, t), t), t) = diff(diff(u(x, y, t), x), x)+diff(diff(u(x, y, t), y), y)

bc := u(x,0,t)=0, u(x,1,t)=0, u(0,y,t)=0, u(1,y,t)=0;

u(x, 0, t) = 0, u(x, 1, t) = 0, u(0, y, t) = 0, u(1, y, t) = 0

ic := u(x,y,0) = x*y*sin(Pi*x)*sin(Pi*y),  D[3](u)(x,y,0)=0;

u(x, y, 0) = x*y*sin(Pi*x)*sin(Pi*y), (D[3](u))(x, y, 0) = 0

pdsol := pdsolve({pde, bc, ic});

"pdsol:=u(x,y,t)=(&sum;) (&sum;)-(2 sin(n Pi x) sin(n1 Pi y) cos(Pi sqrt(n^2+n1^2) t) ({[[Pi^2,n=1],[-(8 n ((-1)^n+1))/((n-1)^2 (n+1)^2),1<n]]) n1 ((-1)^n1+1))/(Pi^4 (-1+n1)^2 (n1+1)^2)"

eval(pdsol, infinity=4);
value(%);

"u(x,y,t)=(&sum;) (&sum;)-(2 sin(n Pi x) sin(n1 Pi y) cos(Pi sqrt(n^2+n1^2) t) ({[[Pi^2,n=1],[-(8 n ((-1)^n+1))/((n-1)^2 (n+1)^2),1<n]]) n1 ((-1)^n1+1))/(Pi^4 (-1+n1)^2 (n1+1)^2)"

Error, (in SumTools:-DefiniteSum:-ClosedForm) summand is singular in the interval of summation

 

 

 

Download pdsolve-bug.mw

 

Since I am a mathematician, I am wondering how Maple goes about solving an identity for 3 functions.
Let's say we have af1(t)+bf_2(t)+cf_3(t) = 0 for all t. How does maple actually find a triplet a,b,c that works for all real t?
It does with solve(identity( ),[a,b,c]). But what is the theory behind it?
We know, of course, a priori, that such a triplet exists.

Thank you!

mapleatha

 



 

First 487 488 489 490 491 492 493 Last Page 489 of 2427