Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

is there a way to set conjugate=true  to false as a default for BilinearForm?  This would be used inside a package.

restart;
with(LinearAlgebra);

v := <x, y>;
BilinearForm(v, v);
BilinearForm(v, v, conjugate = false);

 

I am trying to define a function f(x1+tau,x2)= (x1+tau)*a+x2*b. I need this to be able to take derivations w.r.t. the sum (x1+tau) and to only tau as well. Is there a way to do this?

I am presently working on bivariate functions defined this way

C := (u, v) -> (phi@@(-1))(phi(u)+phi(v));

phi is a function of specific expression named the "generator". Both u and v are assumed to be in the closed interval [0,1].

Here is an example:

restart
phi := u -> (u^(-theta)-1)/theta:
C := (u, v) -> (phi@@(-1))(phi(u)+phi(v)):
C(u, v)
                       / (-theta)        (-theta)    \
                      | u         - 1   v         - 1|
           @@(phi, -1)| ------------- + -------------|
                       \    theta           theta    /

This definition of C is correct providing that  theta in [-1, +infinity) \ {0}.
As you can see, the display of C(u, v) contains the inverse function phi@@(-1) which Maple doesn't seem to know what to do with.

What I would like is to get rid of  phi@@(-1) and get 

C(u, v);
        (-1+u^(-theta)+v^(-theta))^(-1/theta)

The only way I found to get this is to do that:

restart
phi := u -> (u^(-theta)-1)/theta:
(phi@@(-1)) := u -> solve(phi(x)=u, x): # explicit definition of (phi@@(-1))
C := (u, v) -> simplify((phi@@(-1))(phi(u)+phi(v))) assuming theta >= -1, theta <> 0:
C(u, v);
                                         /    1  \
                                         |- -----|
                                         \  theta/
             /      (-theta)    (-theta)\         
             \-1 + u         + v        /         

As you see I have been forced to tell Maple what the inverse function of phi was.
Is there another way do get this result without writting the bold red line?

Maple knows several inverse functions (trigonometric functions for instance), but how does it know that?
As Maple does not seem to use a (f@@(-1)) := u -> solve(f(x)=u, x) like definition, does it uses a correspondence table between functions and their inverse?
If it is so can we augment it?

Thanks in advance.

PS: the ultimate goal is to do something like this Download CAC.mw  for different generators.

For the moment I have defined my own table generator <--> inverse function  as I did above with the bold red line: this works but it is not very elegant.

Hi,
I have a problem and I haven't been able to solve it yet. I want to solve an ordinary diffrential equation similar to
                                                                                                   (dphi/dxi)^2+2*V(phi)=0
and plot phi versus xi for a the following conditions:
1) V(phi)=dphi/dxi=0 at (phi=0,phi_m) and
2) dV(phi)/dphi=0 at phi=phi_m and 
3) d^2V(phi)/dphi^2=0 at both phi=0 and phi=phi_m.
How can I do this by Maple?(see the attached file)
w1.mw

I tried

interface(warnlevel=0); infolevel[all]:=0;prinlevel:=0;kernelopts('printlevel'=0);

to suppress the warnings I get from this code

restart;
f:=z^3;
z_map:=proc(f,re,im) 
  if((re>0) and (im>0) and (im<1-re))then
    eval(f,z=re+I*im);
  else
    NULL;
  end if;
end proc;
p_re:=plots:-display(seq(plot([Re('z_map(f,re,im)'),Im('z_map(f,re,im)'),im=0..1]),re=0..10,0.1)):
p_im:=plots:-display(seq(plot([Re('z_map(f,re,im)'),Im('z_map(f,re,im)'),re=0..1]),im=0..10,0.1),color=green):
plots:-display(p_re,p_im,scaling=constrained)

The reason for the warnings is clear. The input lines are too long to be plotted. However, the resulting plot is exactly what I intended. Programatically truncating the lines would make the warning disappear, but it would make the code much more complicated.

What else can be done to suppress this kind of warning.

For Mathematica  math software app,there is a plugin to use in chatGPT pro ( paid subscription ) and maybe this can be done for Maple too ? 

Haven't used the plugin for Mathematica yet, am curious about it.
Let me have the AI look at the Riemann Hypothesis :)  
Have a few books on it, but can't get through that math with all those special functions.


Why does the execution of procedure J2 in the attached file fire an error?
it looked to me as if I had built it the same way as J1.
 

restart:

# Basically I want do do something like that,

J1 := proc()
  local z:
  z := proc(u) fsolve(sqrt(x)=u, x) end proc:
  evalf(Int(''z''(u), u=0..1))
end proc:

J1();
  

.3333333333

(1)

# but when z is more complex finction of two arguments.
#
# Unfortunately a direct transposition of what worked above no longer works.

J2 := proc()
  local z:
   z := proc(q1, q2)
     exp(
       2*(
         fsolve(1/2+(1/2)*erf((1/2)*x*sqrt(2)) = q1, x)
         *
         fsolve(1/2+(1/2)*erf((1/2)*x*sqrt(2)) = q2, x)
       )
       -
       fsolve(1/2+(1/2)*erf((1/2)*x*sqrt(2)) = sqrt(q1), x)^2
       -
       fsolve(1/2+(1/2)*erf((1/2)*x*sqrt(2)) = sqrt(q2), x)^2
    )
  end proc:
  evalf(Int(''z''(q1, q2), q1=0..1, q2=0..1))
end proc:

J2();

Error, (in evalf/int) q1 is in the equation, and is not solved for

 

 

 

Download integration_issue.mw

Can you help me fix this issue?

Thanks in advance

Hi,

How can I get y=x in output (4) when  g is equal to f?

restart

f := x -> F(x)

proc (x) options operator, arrow; F(x) end proc

(1)

((f@@(-1))@f)(x);

x

(2)

# Let us assume that y is defined this way

y := ((f@@(-1))@g)(x);

(f@@(-1))(g(x))

(3)

# When g is identical to f I would like to get y=x

'y' = eval(y, g=f);
'y' = eval(y, g = (x -> f(x)))

y = (f@@(-1))(F(x))

 

y = (f@@(-1))(F(x))

(4)

 

Download inverse_f.mw

Thanks in advance

This is something I use a fair bit. I have procedures with alternative spelling options for the colours Red Green and Blue.
Have shown a single example copied from  an overloaded procedure. It there a nicer way of handling this than what I am doing?
There is a section in help under "Procedure Parameter Declarations" on "Indexed Keyword Parameters"  but I don't see how to use it here. These procedures are used inside a package.

restart

 

GeomClr:="Blue";  # can be "Blue", "blue", "B", "b"  or;
                  #        "Green", "green", "G", "g"  or;
                  #        "Red2, "red", "R", "r";

Prntmsg:="y" ; #  or anything that is not"y"

 

"Blue"

 

"y"

(1)

spread:=proc(p0::{satisfies(s -> type(s, [algebraic $ 2])),'Vector[row]'(2, algebraic)},
              p1::{satisfies(s -> type(s, [algebraic $ 2])),'Vector[row]'(2, algebraic)},
              clr::`string`:= GeomClr,
              prnt::`string`:=Prntmsg)
           option overload;
           uses LinearAlgebra;
           #print(clr,p0,p1);
           if clr="b" or clr="B" or clr="blue" or clr="Blue" then
              if prnt="y" then
                print("Spread 2 [x,y] Points/Vectors wrt origin Blue");
              end if;
               return 1 - BilinearForm(p0, p1, conjugate = false)^2/(BilinearForm(p0, p0, conjugate = false)*BilinearForm(p1, p1, conjugate = false));
           elif clr="g" or clr="G" or clr="green" or clr="Green" then
              if prnt="y" then
               print( "Spread 2 [x,y] Points/Vectors wrt origin Green");
              end if;
               return -1/4*(p0[1]*p1[2] - p0[2]*p1[1])^2/(p0[1]*p0[2]*p1[1]*p1[2]);
           elif clr="r" or clr="R" or clr="red" or clr="Red" then
              if prnt="y" then
               print( "Spread 2 [x,y] Points/Vectors wrt origin Red");
               end if;
               return -(p0[1]*p1[2] - p0[2]*p1[1])^2/((p0[1]^2 - p0[2]^2)*(p1[1]^2 - p1[2]^2));
          end if;
          end proc:

sb:=spread(<3|2>,<4|-5>);

"Spread 2 [x,y] Points/Vectors wrt origin Blue"

 

529/533

(2)

sg:=spread(<3|2>,<4|-5>,"g");

"Spread 2 [x,y] Points/Vectors wrt origin Green"

 

529/480

(3)

sr:=spread(<3|2>,<4|-5>,"r");

"Spread 2 [x,y] Points/Vectors wrt origin Red"

 

529/45

(4)

1/sb+1/sr+1/sg

2

(5)

sr:=spread(<3|2>,<4|-5>,"r","n");

529/45

(6)

 


 

Download Q_2024-02-09_Alternative_Spelling_in_Proc.mw

According to the Maple documentation, both commands can handle inequalities. I'm only interested in checking when a semialgebraic set is empty, so I thought SemiAlgebraicSetTools:-IsEmpty would be generally faster than computing the solutions with the SemiAlgebraic command. However, the following code shows otherwise:

Code 1:

```

restart;
with(SolveTools, SemiAlgebraic);

B_poly := -(x + 4)*(x + 3)*(x + 2)*(x + 1)*(x - 1)*(x - 2)*(x - 3)*(x - 4);
g := -1/100000*(x+4)*(x+3)*(x+2)*(x+1)*(x-1)*(x-2)*(x-3)*(x-4)*(-1/670*(x+4)
*(x+3)*(x+2)*(x+1)*(x-1)*(x-2)*(x-3)*(x-4)-669/670)^136+1/100000*(x+4)*(x+3)*(x
+2)*(x+1)*(x-1)*(x-2)*(x-3)*(x-4)*(1/670*(x+4)*(x+3)*(x+2)*(x+1)*(x-1)*(x-2)*(x
-3)*(x-4)-669/670)^136;
f := -4347225/87808*x^8 - 17375/392*x^7 + 629491375/395136*x^6 + 
   266375/252*x^5 - 200677775/12544*x^4 - 3174625/504*x^3 + 
   11067842125/197568*x^2 - 53625/98*x - 126496075/4116;

SemiAlgebraic(
  [B_poly >= 0, g - f >= 0], [x]);

```
 

Code 2:

```

restart;
with(RegularChains, SemiAlgebraicSetTools, PolynomialRing);

local R := PolynomialRing([x]);

B_poly := -(x + 4)*(x + 3)*(x + 2)*(x + 1)*(x - 1)*(x - 2)*(x - 3)*(x - 4);
g := -1/100000*(x+4)*(x+3)*(x+2)*(x+1)*(x-1)*(x-2)*(x-3)*(x-4)*(-1/670*(x+4)
*(x+3)*(x+2)*(x+1)*(x-1)*(x-2)*(x-3)*(x-4)-669/670)^136+1/100000*(x+4)*(x+3)*(x
+2)*(x+1)*(x-1)*(x-2)*(x-3)*(x-4)*(1/670*(x+4)*(x+3)*(x+2)*(x+1)*(x-1)*(x-2)*(x
-3)*(x-4)-669/670)^136;
f := -4347225/87808*x^8 - 17375/392*x^7 + 629491375/395136*x^6 + 
   266375/252*x^5 - 200677775/12544*x^4 - 3174625/504*x^3 + 
   11067842125/197568*x^2 - 53625/98*x - 126496075/4116;

SemiAlgebraicSetTools:-IsEmpty([B_poly >= 0, g-f >= 0], R);

```

My computer finishes 'Code 1' in about 20 seconds, while 'Code 2' doesn't terminate. Am I misunderstanding something about how to use these commands for my problem? I'd appreciate it if you could clarify why this is happening and when to use each command in each case. Thanks!

For example, given plot f(x)= x^5+x. plot the function given by g(x)= f(x-2)+3

Also, when plotting my graphs they look different than other graphing software.

How to rectify this error.

S-D_effect-RK.mw

The Lunar New Year is approaching and 2024 is the Year of the Dragon! This inspired me to create a visualization approximating the dragon curve in Maple Learn, using Maple. 

The dragon curve, first described by physicist John Heighway, is a fractal that can be constructed by starting with a single edge and then continually performing the following iteration process:  

Starting at one endpoint of the curve, traverse the curve and build right triangles on alternating sides of each edge on the curve. Then, remove all the original edges to obtain the next iteration. 

visual of dragon curve iteration procedure 

This process continues indefinitely, so while we can’t draw the fractal perfectly, we can approximate it using a Lindenmayer system. In fact, Maple can do all the heavy lifting with the tools found in the Fractals package, which includes the LSystem subpackage to build your own Lindenmayer systems. The subpackage also contains different examples of fractals, including the dragon curve. Check out the Maple help pages here: 

Overview of the Fractals Package  

Overview of the Fractals:-LSystem Subpackage 

Using this subpackage, I created a Maple script (link) to generate a Maple Learn document (link) to visualize the earlier iterations of the approximated dragon curve. Here’s what iteration 11 looks like: 

eleventh iteration of dragon curve approximation  

You can also add copies of the dragon curve, displayed at different initial angles, to visualize how they can fit together. Here are four copies of the 13th iteration: 

four copies of the thirteenth iteration of the dragon curve approximation 

 

Mathematics is full of beauty and fractals are no exception. Check out the LSystemExamples subpackage to see many more examples. 

 

Happy Lunar New Year! 

 

What technique would you try to solve the following non-linear differential equation for real g(x) given h(x) is real (finite positive) polynomial?      h(x) = g(x) + g'(x)/g(x),      where g'(x) = dg(x)/dx

I want to convert the maple result 

arctan(y/x) to arctan(y,x), 

so if x is equal zero i obtain pi/2 and not diveided by zero 

 

 

First 133 134 135 136 137 138 139 Last Page 135 of 2218