 
													Maple
Leistungsfähige intuitive Mathematiksoftware
• Maple für Akademiker • Maple für Studenten • Maple Learn • Maple Calculator App • Maple für Industrie und Behörden • Maple for Individuals 
													Erweiterungen für Maple
• Books & Studienführer • Maple Toolboxen • MapleNet • Kostenloser Maple-Player 
                                                    Student Success Platform
Verbesserung der Studienerfolgsquote
Maple Flow
Engineering calculations & documentation
• Maple Flow • Maple Flow Migration Assistant 
                                                    
 
                             
													  
													  
                                                     
                                                     
													 
                            
 
  
  
  
 
 such that..." or "for all values of variable
 such that..." or "for all values of variable  , we have..." (represented with the quantifiers "there exists", or
, we have..." (represented with the quantifiers "there exists", or  , and "for all", or
, and "for all", or  , respectively), where the rest of the statement typically involves logical connectives such as "and" or "not" and polynomial formulas, and expressing this as an equivalent statement that does not include such quantifiers but depends only on the other variables that are not quantified over. These formulas are all interpreted over the real domain.
, respectively), where the rest of the statement typically involves logical connectives such as "and" or "not" and polynomial formulas, and expressing this as an equivalent statement that does not include such quantifiers but depends only on the other variables that are not quantified over. These formulas are all interpreted over the real domain.  
 ![input := `&E`([c]), `&A`([b, a]), `&implies`(`&or`(`&and`(a = d, b = c), `&and`(a = c, b = 1)), `*`(`^`(a, 2)) = b);](regular-chains/RegularChains_11.gif) 
 ![Typesetting:-mprintslash([input := `&E`([c]), `&A`([b, a]), `&implies`(`&or`(`&and`(a = d, b = c), `&and`(a = c, b = 1)), `*`(`^`(a, 2)) = b)], [`&E`([c]), `&A`([b, a]), `&implies`(`&or`(`&and`(a = d,...](regular-chains/RegularChains_12.gif)
 
 
 in both cases), but it is not obvious that there are no other solutions.
 in both cases), but it is not obvious that there are no other solutions. ![R := PolynomialRing([x, c, b, a]); -1](regular-chains/RegularChains_16.gif) 
 ![QuantifierElimination(`&E`([x]), `+`(`*`(a, `*`(`^`(x, 2))), `*`(b, `*`(x)), c) = 0, R, output = rootof);](regular-chains/RegularChains_17.gif) 
 
 -dimensional space into finitely many connected semi-algebraic subsets, called cells, such that any two cells are cylindrically arranged, that is, their projection onto a lower-dimensional space is either identical or disjoint. Here, a semi-algebraic set is a set given by polynomial equations, inequations, and inequalities.
-dimensional space into finitely many connected semi-algebraic subsets, called cells, such that any two cells are cylindrically arranged, that is, their projection onto a lower-dimensional space is either identical or disjoint. Here, a semi-algebraic set is a set given by polynomial equations, inequations, and inequalities. ![R := PolynomialRing([y, x]); -1](regular-chains/RegularChains_20.gif) 
 ![cad := CylindricalAlgebraicDecompose([`<=`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))), 1)], R);](regular-chains/RegularChains_21.gif) 
 ![Typesetting:-mprintslash([cad := c_a_d], [c_a_d])](regular-chains/RegularChains_22.gif)
 
 ![[PIECEWISE([y = y, ``], [`<`(x, -1), ``]), PIECEWISE([`<`(y, 0), ``], [x = -1, ``]), PIECEWISE([y = 0, ``], [x = -1, ``]), PIECEWISE([`<`(0, y), ``], [x = -1, ``]), PIECEWISE([`<`(y, `+`(`-`(`*`(`^`(`...](regular-chains/RegularChains_24.gif)
![[PIECEWISE([y = y, ``], [`<`(x, -1), ``]), PIECEWISE([`<`(y, 0), ``], [x = -1, ``]), PIECEWISE([y = 0, ``], [x = -1, ``]), PIECEWISE([`<`(0, y), ``], [x = -1, ``]), PIECEWISE([`<`(y, `+`(`-`(`*`(`^`(`...](regular-chains/RegularChains_25.gif)
![[PIECEWISE([y = y, ``], [`<`(x, -1), ``]), PIECEWISE([`<`(y, 0), ``], [x = -1, ``]), PIECEWISE([y = 0, ``], [x = -1, ``]), PIECEWISE([`<`(0, y), ``], [x = -1, ``]), PIECEWISE([`<`(y, `+`(`-`(`*`(`^`(`...](regular-chains/RegularChains_26.gif)
 .
. 
![CylindricalAlgebraicDecompose([`<=`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))), 1)], R, output = rootof);](regular-chains/RegularChains_29.gif) 
 ![[[And(`<=`(-1, x), `<=`(x, 1)), And(`<=`(`+`(`-`(`*`(`^`(`+`(`-`(`*`(`^`(x, 2))), 1), `/`(1, 2))))), y), `<=`(y, `*`(`^`(`+`(`-`(`*`(`^`(x, 2))), 1), `/`(1, 2)))))]]](regular-chains/RegularChains_30.gif)
 command has been available for a long time. In Maple 2020, it has some new options. One of them is the optimization option. In the simplest form, it is simply a true/false option (with default value true). With this option, Maple tries to reduce the number of cells returned. This example uses the Info command, which returns a list with some information about each cell found; the number of elements of this list is the number of cells.
 command has been available for a long time. In Maple 2020, it has some new options. One of them is the optimization option. In the simplest form, it is simply a true/false option (with default value true). With this option, Maple tries to reduce the number of cells returned. This example uses the Info command, which returns a list with some information about each cell found; the number of elements of this list is the number of cells. ![F := [`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))) = 1, `*`(`^`(y, 2)) = x]; -1](regular-chains/RegularChains_32.gif) 
  
  
 
 
  
 
 
  
 ![R := PolynomialRing([x, y, z]); -1](regular-chains/RegularChains_41.gif) 
 ![F := [`+`(`*`(`^`(x, 2)), y, z, `-`(1)), `+`(`*`(`^`(y, 2)), x, z, `-`(1)), `+`(`*`(`^`(z, 2)), x, y, `-`(1))]; -1](regular-chains/RegularChains_42.gif) 
  
  
 ![[PIECEWISE([`+`(x, `-`(z)) = 0, ``], [`+`(y, `-`(z)) = 0, ``], [`+`(`*`(`^`(z, 2)), `*`(2, `*`(z)), `-`(1)) = 0, ``]), PIECEWISE([x = 0, ``], [y = 0, ``], [`+`(z, `-`(1)) = 0, ``]), PIECEWISE([x = 0, ...](regular-chains/RegularChains_45.gif)
![[x, y, z] = `&+-`([-1, -1, -1], [sqrt(2), sqrt(2), sqrt(2)]);](regular-chains/RegularChains_46.gif) (two points),
 (two points), ![[0, 0, 1];](regular-chains/RegularChains_47.gif) ,
, ![[0, 1, 0];](regular-chains/RegularChains_48.gif) , and
, and ![[1, 0, 0];](regular-chains/RegularChains_49.gif) , respectively.
, respectively. ![[`+`(`-`(1), sqrt(2)), `+`(`-`(1), sqrt(2)), `+`(`-`(1), sqrt(2))];](regular-chains/RegularChains_50.gif) and one of the point
 and one of the point ![[0, 0, 1];](regular-chains/RegularChains_51.gif) .
. ![plots:-implicitplot3d(F, x = -3 .. 1, y = -3 .. 1, z = -3 .. 1, grid = [20, 20, 20], color = [red, green, blue], style = surface);](regular-chains/RegularChains_52.gif)

![plots:-implicitplot3d(F, x = .35 .. .45, y = .35 .. .45, z = .35 .. .45, grid = [20, 20, 20], color = [red, green, blue], style = surface);](regular-chains/RegularChains_54.gif)

![plots:-implicitplot3d(F, x = -.1 .. .1, y = -.1 .. .1, z = .9 .. 1.1, grid = [20, 20, 20], color = [red, green, blue], style = surface);](regular-chains/RegularChains_56.gif) &
&
 
 ![Typesetting:-mprintslash([[[[1, regular_chain]], [[2, regular_chain]], [[2, regular_chain]], [[2, regular_chain]]]], [[[[1, Record(property = isPrime, polynomials = [[x, 1, 1, `+`(, `-`(z)), isPrimeIr...](regular-chains/RegularChains_59.gif)
![R := PolynomialRing([x, y, z]); -1](regular-chains/RegularChains_60.gif) 
 ![rc := Chain([`+`(z, `-`(1)), y, x], Empty(R), R); -1](regular-chains/RegularChains_61.gif) 
  , defined above, represents the point
, defined above, represents the point ![[x, y, z] = [0, 0, 1];](regular-chains/RegularChains_63.gif) .
. ![F := [`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2)), `-`(1)), `+`(`*`(`^`(x, 2)), `-`(`*`(`^`(y, 2))), `-`(`*`(z, `*`(`+`(z, `-`(1))))))]; -1](regular-chains/RegularChains_64.gif) 
  at the point defined in
 at the point defined in  . First let us examine these surfaces visually.
. First let us examine these surfaces visually.  
 
 , and display it.
, and display it. ![p := plot3d(solutions[[1, 3]], x = -.5 .. .5, y = -.5 .. .5, color = [red, blue]); -1; p](regular-chains/RegularChains_70.gif) 
 
![tc := TangentCone(rc, F, R, 'equations', [X, Y, Z]);](regular-chains/RegularChains_72.gif) 
 ![Typesetting:-mprintslash([tc := [[[`+`(Z, `-`(1)), `+`(`*`(3, `*`(`^`(X, 2))), `-`(`*`(`^`(Y, 2))))], regular_chain]]], [{[[`+`(Z, `-`(1)), `+`(`*`(3, `*`(`^`(X, 2))), `-`(`*`(`^`(Y, 2))))], Record(pr...](regular-chains/RegularChains_73.gif)
 and
 and  . We show this in the same plot.
. We show this in the same plot. ![lines := seq(plottools:-line([`+`(`-`(`/`(`*`(`/`(1, 2)), `*`(sqrt(3))))), `+`(`-`(`*`(`/`(1, 2), `*`(s)))), 1], [`+`(`/`(`*`(`/`(1, 2)), `*`(sqrt(3)))), `+`(`*`(`/`(1, 2), `*`(s))), 1], color = green...](regular-chains/RegularChains_76.gif) 
  
 
 and
 and  . The surfaces defined by them look as follows; this is purely for illustration and the method of drawing it won't be explained here. The first equation's surface is rendered in red, the second in blue, and the curve that is their intersection in green. You can also see a transparent black plane at
. The surfaces defined by them look as follows; this is purely for illustration and the method of drawing it won't be explained here. The first equation's surface is rendered in red, the second in blue, and the curve that is their intersection in green. You can also see a transparent black plane at  , and the two intersection points of the curve with this plane in black; these are explained below.
, and the two intersection points of the curve with this plane in black; these are explained below. 
 , then the leading coefficients of these equations are 1 and
, then the leading coefficients of these equations are 1 and  , respectively. The first coefficient doesn't vanish; the second vanishes at
, respectively. The first coefficient doesn't vanish; the second vanishes at  . The LimitPoints command can find the intersections of the curve, that is, the intersection of the red and blue surfaces. By default, this computation is done over the complex numbers.
. The LimitPoints command can find the intersections of the curve, that is, the intersection of the red and blue surfaces. By default, this computation is done over the complex numbers.  
  
 ![R := PolynomialRing([x, y, z]); -1](regular-chains/RegularChains_88.gif) 
 ![rc := Chain([p1, p2], Empty(R), R); -1](regular-chains/RegularChains_89.gif) 
  
 ![[PIECEWISE([x = 0, ``], [y = 0, ``], [z = 0, ``]), PIECEWISE([x = 0, ``], [`+`(y, `-`(1)) = 0, ``], [z = 0, ``])]](regular-chains/RegularChains_91.gif)
![eval([p1, p2], {x = 0, y = 0, z = 0});](regular-chains/RegularChains_92.gif) 
 ![[0, 0]](regular-chains/RegularChains_93.gif)
![eval([p1, p2], {x = 0, y = 1, z = 0});](regular-chains/RegularChains_94.gif) 
 ![[0, 0]](regular-chains/RegularChains_95.gif)
 
 
 option, we include only points where the curve is locally smooth in real space: where it locally has a Puiseux series with real coefficients. This computation uses the underlying command RegularChainBranches, which returns a truncated Puiseux series at each of these points for all branches.
option, we include only points where the curve is locally smooth in real space: where it locally has a Puiseux series with real coefficients. This computation uses the underlying command RegularChainBranches, which returns a truncated Puiseux series at each of these points for all branches. ![rbs := RegularChainBranches(rc, R, [z]); -1](regular-chains/RegularChains_99.gif) 
  
 

![[z = _T, y = `+`(`*`(`^`(_T, 5)), 1), x = `+`(`-`(`*`(`^`(_T, 11))), `-`(`*`(2, `*`(`^`(_T, 6)))), `-`(_T))]](regular-chains/RegularChains_103.gif)
 function which represents
 function which represents  (or
 (or  ). We see that they have nonreal coefficients.
). We see that they have nonreal coefficients. ![real_branch := RegularChainBranches(rc, R, [z], coefficient = real);](regular-chains/RegularChains_107.gif) 
 ![Typesetting:-mprintslash([real_branch := [[z = _T0, y = `+`(`*`(`^`(_T0, 5)), 1), x = `+`(`-`(`*`(`^`(_T0, 11))), `-`(`*`(2, `*`(`^`(_T0, 6)))), `-`(_T0))]]], [[[z = _T0, y = `+`(`*`(`^`(_T0, 5)), 1),...](regular-chains/RegularChains_108.gif)
 -component of the curve is nonnegative, whereas the curve is present only for
-component of the curve is nonnegative, whereas the curve is present only for  . When we re-parametrize these nonreal branches by the change of variables
. When we re-parametrize these nonreal branches by the change of variables  , we get the following. (The call to convert/radical converts the RootOf function into
, we get the following. (The call to convert/radical converts the RootOf function into  .)
.) ![complex_branches := convert(eval(rbs[1 .. 2], _T = `*`(I, `*`(T))), radical); -1](regular-chains/RegularChains_113.gif) 
  
 

 . Below, this real part of the truncated Puiseux series is shown in purple and the real truncated Puiseux series in pink.
. Below, this real part of the truncated Puiseux series is shown in purple and the real truncated Puiseux series in pink. 