nm

8552 Reputation

19 Badges

13 years, 31 days

MaplePrimes Activity


These are questions asked by nm

I can't figure out why this pattern is failing

restart;
r:= y=3;
patmatch(r,y=z::integer,'la');
patmatch(r,identical(y)=z::integer,'la');
patmatch(r,y::anything=z::anything,'la');

What Am I doing wrong?

 

 

 

Does Maple have a function which finds the domain of its variables such that the function is real valued?

I am only interested in a function of two variables, x and y.  I'd like to know what is the range of x and y, where f(x,y) is real valued.

For example, given f(x,y)= x * ln(y), then the domain is all of x, and for y>0.    So it is the upper half plane.  For f(x,y)=sin(x)*cos(y), then it is the whole plane (all x and all y) and so on. 

I looked at singular(), and this does part of what I want, but it only gives me the singular points. So for the above it gives y=0 and x=x, but I am looking for something a little more specific. I also looked at package called RealDomain, but I do not see how to use this for what I want to do. But I could have missed something.

I do not know what the function is beforehand, but it will always be a function of x and y, and I need an automated way to determine the range of x and y where this function is real valued. 

I can't do plots and look at them, since this is all automated and has to be done algorithmically only and non-interactive.

I could use singular, and try evaluating the function at different points and see if it produces real or complex values, but this is not practial to do and can fail.

Does Maple have support for such functionality?

 

I am still buffled by a Record in Maple.

I simply want to make one variable be a Record. Then make separate variable, by making a COPY of the content of the first variable, then change the second variable. Sounds easy, right?

When I do this, I find that the changes in the second variable are being made also to the first variable.

I used eval() to make a copy of all field of first variable to the second.  May be this is not the correct way, but do not know how else (other by explicit copying one field one at a time).

I looked at help, and see nothing there. It talks about making the Record packed. I tried that, but it is still not working. Not a single example in help of how to copy the "content" of one record to another.

I simply want to make a new instance of the first variable, a copy. and change the second instance without the first changing at same time. Why is this so hard in Maple?

restart;
c:=Record('a','b'):
c:-a:=0:
c:-b:=-1:

c1:=eval(c): #make a copy of c??
print("c1=",eval(c1)); #yes, made a copy

c1:-b:=99:  #change one field  in the second variable

print("c1=",eval(c1));
print("c=",eval(c)); #why did c change?

I tried using Record[packed]('a' , 'b'): since help says something about same Record sharing same memory but that make no difference.

How to make a copy of a record to another in Maple without them being the same? I know I could do this

restart;
c:=Record('a','b'):
c:-a:=0:
c:-b:=-1:

c1:=Record('a','b'):
c1:-a:=c:-a;
c1:-b:=c:-b;

c1:-b:=99:  #change one field  in the second variable

print("c1=",eval(c1));
print("c=",eval(c)); #Now it did not change.

But my actual record has many fields. and I do not want to do the above each time.

I need to move a term in the denominator, inside the radical sign in the numerator.  After some struggle, I can do it for a simple expression. But once the expression gets little more complicate, the method does not work.

Given expr:=sqrt(x*y)/x;  I want to force the "x" in the denominator inside the sqrt so I can simplify things. I can do this like this

restart;
expr1  := sqrt(x*y)/x;
expr1  := simplify(expr1,symbolic);
combine(expr1,symbolic);
algsubs(y/x=u,%);

But for the following similar expression, it does not work. Given expr:=sqrt(x^2+y^2)/x, I want to change to sqrt( (x^2+y^2)/x^2) or sqrt(1+ y^2/x^2) or sqrt(1 + u^2).  So the first step is as above, to force the x in denomiantor to go inside the radical. But the same steps do not work on this now

expr1:=sqrt(x^2+y^2)/x;
expr1:=simplify(expr1,symbolic);
combine(expr1,symbolic);

 

I tried radsimp(expr1); simplify(expr1,radical,symbolic); radnormal, I tried adding assuming positive everywhere. Nothing is working.

I am trying to convert an expression to be   (y/x) and then replace (y/x) to u.  BUt the first step is to get the x inside the radical and I am not sure how to do it for the second example and why it is failing. It is always hard for me in Maple to figure the right method to manipulate an expression.

Any suggestions?

I need to know if an expression contain a radical in it. For example, expr:=1/x*sqrt(x*y)  or expr:=3*(x*y)^(2/3)+5; or expr := sqrt(5), etc.. all these will return true, but for expr:=3+sin(x) it will return false.

I need to find if the expression has radical, becuase then I want to do special simplify if that is the case.

I do not want to use pattern matching, since the expression can be complicated, and thought to ask if there might be a simpler way, one of those hidden Maple commands which can do it.

I looked at  "has", "hasfun". with(PolynomialIdeals) has function IsRadical but it is only for polynomials.

Is there a way other than using patmatch?  

First 117 118 119 120 121 122 123 Last Page 119 of 164