vv

13837 Reputation

20 Badges

9 years, 320 days

MaplePrimes Activity


These are replies submitted by vv

@Markiyan Hirnyk 

It would have been nice if MMA had given the simplified result sqrt(2)/4.
Probably it simply uses the fact that the sequence exp(I*n) is dense in the unit circle.

Maybe some day we will get something like:
f := sin(n)/(3 + cos(n)):
limsup[discrete](f,n)
    
sqrt(2)/4;

For the moment:
maximize(f, n=0..2*Pi);
    
 

 

 

Just a short remark.
If the sequence is given by a procedure f, then its limit is L iff
limit( f(floor(x)), x=infinity) = L.

This way, the assumption is not necessary.

Unfortunately this does not work because floor has a very poor integration in Maple [I don't know why].
A simple (and embarrassing) example is:

simplify( floor(x) ) assuming x>3,x<4;
    floor(x)

 

@Markiyan Hirnyk 

It is OK for your surface defined by x^2+y^2+z^2=1, x^2-z^2<=1
but not for Mariusz' which was the boundary of the body  x^2+y^2+z^2<=1, x^2-z^2<=1.
In the previous comment both situations were answered.
But indeed in Mathematica code I see an "<"; probably this means the exclusion of this part of the boundary [I do not know the MMA syntax for this].

@Mariusz Iwaniuk

 

restart;

SI1:=proc(f, simpledom::list(relation), X::list(name))
local rez:=NULL, r,z,k,r1,r2,  S,v;
v,S:=selectremove(hastype,simpledom,`=`);
if nops(S)<>2*nops(X)-2 then error "Domain not simple!" fi;
for k to nops(X)-1 do    r1,r2:=S[2*k-1..2*k][]; z:=subs(rhs(v[])=NULL,X)[k];
  if   rhs(r1)=z and lhs(r2)=z then rez:=rez, z=lhs(r1)..rhs(r2); #a<z,z<b
  elif lhs(r1)=z and rhs(r2)=z then rez:=rez, z=lhs(r2)..rhs(r1); #z<b,a<z
  else error "Strange order in a simple domain" fi
od;
VectorCalculus:-SurfaceInt(f, X=Surface(<eval(X,v)>,rez), inert);
end proc:

SI:=proc(f::algebraic, F::list(algebraic), X::list(name),sel::list(posint):=0)
description "F contains expressions supposed to be <=0; N contains the active surfaces";
local N,s, k,i,n:=nops(F), u,rez:=0;
if sel=0 then N:=[seq(1..n)] else N:=sel fi;
for k in N do
  s:=solve( [ seq( `if`(i=k, F[k]=0, F[i]<=0), i=1..n)],X);
  s:=select(u -> evalb(nops(select(hastype,u,`=`))=1), s);
  rez:=rez+add(SI1(f, u, X), u=s);
od;
rez
end:

SI(1, [x^2+y^2+z^2 - 1, 5*x^2-z^2 - 1], [x,y,z]):
value(%);
evalf(%);

((16/3)*I)*2^(1/2)*3^(1/2)*EllipticPi(1/3, (1/3)*3^(1/2)*5^(1/2))-((16/3)*I)*2^(1/2)*3^(1/2)*EllipticK((1/3)*3^(1/2)*5^(1/2))-((16/3)*I)*2^(1/2)*3^(1/2)*EllipticPi((1/5)*3^(1/2)*5^(1/2), 1/3, (1/3)*3^(1/2)*5^(1/2))+((16/3)*I)*2^(1/2)*3^(1/2)*EllipticF((1/5)*3^(1/2)*5^(1/2), (1/3)*3^(1/2)*5^(1/2))+2*(int(2*(1+25*x^2/(5*x^2-1))^(1/2)*(-6*x^2+2)^(1/2), x = -(1/3)*3^(1/2) .. -(1/5)*5^(1/2)))+2*(int(2*(1+25*x^2/(5*x^2-1))^(1/2)*(-6*x^2+2)^(1/2), x = (1/5)*5^(1/2) .. (1/3)*3^(1/2)))

 

11.14714156+0.*I

(1)

 

In the MMA's answer, it was wrongly considered only the part of the surface lying on the sphere, that is:

 

SI(1, [x^2+y^2+z^2 - 1, 5*x^2-z^2 - 1], [x,y,z], [1]):
value(%);
evalf(%);

((16/3)*I)*2^(1/2)*3^(1/2)*EllipticPi(1/3, (1/3)*3^(1/2)*5^(1/2))-((16/3)*I)*2^(1/2)*3^(1/2)*EllipticK((1/3)*3^(1/2)*5^(1/2))-((16/3)*I)*2^(1/2)*3^(1/2)*EllipticPi((1/5)*3^(1/2)*5^(1/2), 1/3, (1/3)*3^(1/2)*5^(1/2))+((16/3)*I)*2^(1/2)*3^(1/2)*EllipticF((1/5)*3^(1/2)*5^(1/2), (1/3)*3^(1/2)*5^(1/2))

 

6.500908863+0.*I

(2)

 


 

Download surface-int.mw

@digerdiga 

For polynomials you should use:

restart;
q:=(x-1)*(x-2)*(x-3):
sol:=c -> fsolve(q+c,x,complex):
r:=c -> max(Re~(select(t->abs(Im(t))<1e-10, [sol(c)]))):
plot(r, -8..8, discont, color=green);

Or, better:

restart;
q:=(x-1)*(x-2)*(x-3):
sol:=c -> fsolve(q+c,x):
r:=c -> max(sol(c)):
plot(r, -8..8, discont, color=green);

 

@Kitonum 

I am sorry that you, the proposer of the test, have trouble in getting the answer.
It seems that SolveTools:-SemiAlgebraic has a bug in the 32 bit version [or, it could be a memory management problem].
On a 32 bit computer I also get the same error for:

SolveTools:-SemiAlgebraic(
[(x-4)^2+y^2 <= 25, 9 <= x^2+(y-3)^2, 16 <= (x+w)^2+y^2],
[x, y], parameters = [w]);

which is called by procedure.

I hope that this bug will be addressed soon; then MultiIntPoly will work for the 32 bit version too.

@Avel Vogt:  are you on 32 bit too?

@max125 

plots:-animate(plot, [(x-1)*(x-2)*(x-3) + c, x=0.5 .. 3.5], c=0..1);

or

Explore(plot((x-1)*(x-2)*(x-3) + c, x=0.5 .. 3.5, view=-1..3), c=0. .. 1., animate);
(you may remove the animate option and use the slider instead).

@rlopez 

It is useful to note that if S0 is a C^oo selection in an interval [a,b] then there is a continuous selection S in R which extends S0; but a C^1 selection S extending S0 may not exist. This is of course valid for eigenvalues too.

@digerdiga 

1. If we are interested only in real roots, the discontinuity cannot be avoided, as the example shows.

2. Yes, h(y)>0.384... is enough. The exact value is 2*sqrt(3)/9  but this is not important.

3. When all the complex roots are considered, the continuity can be obtained.
For example,
r1(c) = min({|z| : p(z) = 0},  r2(c) = max({|z| : p(z) = 0}
are continuous.

restart;
q:=(x-1)*(x-2)*(x-3):
sol:=c -> solve(q+c,x,explicit):
r1:=unapply( min(abs~([sol(c)])),c):
r2:=unapply( max(abs~([sol(c)])),c):
r:=c -> max(select(t->Im(t)=0, [sol(c)])):
plot(r, -8..8, discont, color=green);
plot([r1,r2], -8..8, color=[red,blue]);

 

 

 

 

@Rouben Rostamian  

I just want to mention that the piecewise method also handles non-convex domains (polygonal or not):

poly:= y<=x and y>=-x and (y>=4*x-3  or y<= -4*x+3) and x>=0 and x<=1;
F:=piecewise(poly, x^2+y^2, undefined);
G:=piecewise(poly, 3*sin(x)-y^2, undefined):
fieldplot([F,G], x =0 .. 1, y = -1 .. 1, arrows = SLIM, color = x) ;

 

@Carl Love 
Except that mine obtains the monomials of total degree exactly d.
To get "up to d" as OP wants it is even simpler:

mondeg:=proc(X::list(name),d)
expand((add(X)+1)^d);[op(%)]/~coeffs(%)
end:

Or, better (as you did):

mondegx:=proc(X::list(name),d)
local t;
coeffs(expand((add(X)+1)^d,X),X,t);[t]
end:

 

@John May 

Here is a simple example (no parameters):

SolveTools:-SemiAlgebraic([x^2+y^2<z, z^2=2, z>0], [x,y,z]);

It is correct, but I was expecting:

Note that solve (instead of SemiAlgebraic) returns the same RootOf result (because SemiAlgebraic is called) !

 

@John May 

Thank you.

This form of the RootOf appeared in the output of the command SolveTools:-SemiAlgebraic.
But actually it could be useful to be able to select symbolically the i-th real root.

BTW, the option real for fsolve seems to be also not documented (not needed anyway, real being the default).

It would be very useful to have a procedure to compute the area of the region given by inequalities (implicitely) using Green's formula. But I think that this would be very difficult.

It is possible to use the solve method for

rel:={(x-4)^2+y^2<=25, x^2+(y-3)^2>=9, (x+sqrt(7))^2+y^2>=16}:

and obtain

-(3/4)*55^(1/2)+(3/4)*13^(1/2)*7^(1/2)+(25/2)*arcsin(4/5)+3*7^(1/2)+(25/2)*arcsin(82/125-(9/250)*13^(1/2)*7^(1/2))+(9/2)*arcsin(6/25+(3/50)*13^(1/2)*7^(1/2))+8*arcsin((23/128)*7^(1/2)+(9/128)*55^(1/2))+(9/2)*arcsin(-(3/32)*7^(1/2)+(3/32)*55^(1/2))+8*arcsin((1/4)*7^(1/2))+12

I am going to post a method in the Application Center.

@Mariusz Iwaniuk 

For your R the result given by Area is correct because R is empty.

But in Mathematica it is +3/4 instead of -3/4. In this case Maple's solve needs a very LONG time and I had not the patience to wait for a result.

First 105 106 107 108 109 110 111 Last Page 107 of 176