Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

In two recent questions

dnaviaux  raised concerns about saving informations he could include in a typeset report.

In the first question these informations were mainly printf terminal outputs, while the second question was oriented to informations of type Table (in the sense of DocumentTools:-Layout:-Table).

Acer has given a direct answer to this last question.
On my side I proposed a less direct one based on a LaTeXapproach.


Since several years I use to generate a LaTeX source code for typeset reports directly from Maple (this is not very difficult once you know LaTeX).
These reports often contain data tables Mbut latex(M)is not the good way to code these data tables into LaTeX.
That is why I turned towards the LaTeX/tabularstructure

\begin{tabular}{...}
...
\end{tabular]


Data tables are very simple structures and converting them programmatically from Maple Matrix into  LaTeX tabular is rather simple: the most important thing you must remember is that some characters have a special role in LaTeX  (for instance "\" , "_" and "$") while having a special meaning in Maple too: so beware of conflicts.

The procedure Tabular in the attached file takes as argument a Matrix and returns the LaTeX code of its tabular counterpart.
Note that it could be easily extendend to accept a DataFrameas input.
This is a very simple simple version and fonts (\rm, \bf, \it... or others), styles (\scriptsize, \large, ...) and much more customization features could be accounted for without any difficulty.

For this particular example inspired by dnaviaux first question, it would be probably better to replace the LaTeX code by one of thes two:

\begin{tabular}{|c @{ $\pm$  } c|}
....
Asdfsdg & +5.190e+01 & 2.5950e+00 \\ 

or :

\begin{tabular}{|c|c|}
....
Asdfsdg & \multicolumn{2}{c|}{$+8.680e-01 \pm 0.9190$} \\ 





dnaviaux second question concerned a DocumentTools:-Layout:-Table object.
For what I understood this table has a simple structure (no rowspan neither columnspan used).

But, knowing that tabular can manage merged columns (\multicolumn) and merged rows (\multirow, provided the ad hoc pasckage is used), I wondered if it would be possible to generate the LaTeX/tabular code corresponding to a Table using rowspan and columnspan?

This is done by the procedure Tabular_Table in the attached file.
Here again this is a very simple procedure which doesn't exploit all the informations a Table structure contains (backgroundstylefillcoloralignalignmentseparator [Tabular_Table separates all columns and rows] ...).

The "raw" rendering is not bad but could be improved:

  • adjust the way \multirowcenters the content of a cell (Xis badly placed in example 3)
  • adjust the spaces between line/clineand the text
    • by using the package cellspace 
    • or my modufying \arraystretch with \renewcommand.
  • one could also add a legend with \caption
  • parameterize Tabular_Table to accept other column separators
  • manage the colors (for instance a blue for a math expression and a black for a text)
  • ...

Finally Tabularand Tabular_Tablecould have an optional argument file:

{file::{symbol, string}:= terminal} 

set by default to terminalor wich could be the name of a  .texfile 


This work is still under developpement and I would be happy to exchange with you on this topic.
Happy New Year to all of you

 

Tabular_from_Maple.mw

Here is the content of the .tex file (I used Welcome-to-CoCalc.texto create/compile it)

\documentclass{article}

% set font encoding for PDFLaTeX, XeLaTeX, or LuaTeX
\usepackage{ifxetex,ifluatex}
\if\ifxetex T\else\ifluatex T\else F\fi\fi T%
  \usepackage{fontspec}
\else
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{lmodern}
\fi

\usepackage{hyperref}

% DO NOT FORGET THIS PACKAGE !!!
\usepackage{multirow}

\title{Tabulars from Maple}
\author{mmcdara}


\begin{document}
\maketitle

\begin{itemize}
\item[\bf{Example 1}]

\begin{tabular}{|c|c|c|}
\hline 
\hline 
Quantity & Nominal value & Uncertainty \\ 
\hline 
Asdfsdg & +9.060e+01 & 4.5298e+00 \\ 
\hline 
Bdfg & +1.437e+01 & 7.1870e-01 \\ 
\hline 
C123 & +8.025e+01 & 4.0125e+00 \\ 
\hline 
Ddf sdfg dsfg  & +9.614e+00 & 4.8072e-01 \\ 
\hline 
\hline 
\end{tabular}

\item[]\vspace*{10mm}

\item[\bf{Example 3}]

\begin{tabular}{| c | c | c | c | c |}
\hline 
\multicolumn{1}{|c|}{\multirow{4}{*}{X}} & \multicolumn{2}{c|}{\multirow{1}{*}{A1}} & \multicolumn{1}{c|}{\multirow{2}{*}{A2}} & \multicolumn{1}{c|}{\multirow{1}{*}{A3}} \\ 
\cline{2-2} 
\cline{3-3} 
\cline{5-5} 
 & \multicolumn{1}{c|}{\multirow{2}{*}{B1}} &\multicolumn{1}{c|}{\multirow{1}{*}{B2}} & & \multicolumn{1}{c|}{\multirow{3}{*}{B3}} \\ 
\cline{3-3} 
\cline{4-4} 
 &  & \multicolumn{2}{c|}{${\cos \left( \omega\,t+\phi \right) }^{\mathstrut}_{\atop{}{\mathstrut}}$} &  \\ 
\cline{2-2} 
\cline{3-3} 
\cline{4-4} 
 & \multicolumn{3}{c|}{${{\frac {1}{\Gamma  \left( x \right) }\sqrt {{{\rm e}^{-{\frac {{t}^{2}}{\pi }}}}}}}^{\mathstrut}_{\atop{}{\mathstrut}}$} &  \\ 
\hline 
\end{tabular} 

\end{itemize}

\end{document}


Image of the resulting PDF:

 

For comparison here is the Tableof Example 3 that Mapledisplays in the worksheet

Hey everyone,

f_1 and f_2  are satisfying the set of non-linear integral equations I have attached to this message.
I know that I need to solve them numerically by iterations. Probably, the first guest of the function f_1 and f_2  is the driving term. a is just a parameter which can be fixed (I guess smaller than \pi/4). * is the convolution product and k is the momentum space parameter. I learnt that in order to solve them I should solve them in the Fourier space. I know also that I need to discretize these function in the “real ” space between {-L,+L} before applying the FFT or one of its relatives. Thank you for any suggestions or leads.

Hi to all community. I am trying to integrate a lengthy-expression but could not get the result after waiting of 1 and 2 hours even. is there any way to control such integration


 

Integration_Help.mw

 

 


 

 

Hi, 

This is the context                                                                                             
A mathematical expression f has been coded by a two stage process of the form 

(u and s are character strings)
I do not know what f is, but I know what P1, P2 are and I know s too. 
I would like to recover f.

Here is the particular couple of coding processes that I consider

f := sqrt(x);    # assumed to be unknown

u  := sprintf("%Zm", f);                     # "process" P1
s  := StringTools:-Encode(u,':-base64');     # "process" P2

# The "inverse" of P2 is
v := StringTools:-Decode( s, 'encoding' = ':-base64' );

# Does it exist an operation to recover f from v?


Thanks in advance

 

Hey there, I´m new to maple and running into some syntax issues when calculating the Euler-Lagrange equation.

The Euler Lagrange equation in general looks like this:

I´ve got  the Lagrangian for my task figured out:

Here´s the code for this line, be aware that the function definition part of this is not working.

L:=((x),(varphi),t)->(J)/(2)*(((x))/(R))^(2)+(`m__R`)/(2)(*(x))^(2)+(`m__p`)/(2)(((x)+l*(varphi)*cos(varphi))^(2)+(l*(varphi)*sin(varphi))^(2))+`m__p`*g*l*cos(varphi)

phi is obviously a function of t, I´m not sure if I should have written phi(t)

 

In the first step to solve the Euler-Lagrange, I have to partially differentiate L w.r.t xdot. preferably with a command something like the following:

How do I do that, how do I set L up to be able to do that? The way I defined the function above is not correct because xdot and phidot cant be used an argument apparently.

If all is working perfectly I´d be able to partially differentiate L w.r.t xdot, phidot, x, phi and subsequently be able to differentiate the first two w.r.t t again.

I´ll spare you the detail but I´ve tried for hours now with redefining xdot as xdot:= diff(x(t),t) and all sorts of other ways but nothing seems to really work.

 

Thanks for your help.

Hi,

I have three equations in terms of the following variables:

X,Y,X1, X2

How do I get an equation in terms of (X1,X2)  with Maple from Equations 1-3?

E.mw

A very simple question (by example):

Consider two polynomials g and h:

with(PolynomialTools):

g:=FromCoefficientList([1,2,3],x);

h:=FromCoefficientList([4,5,6,7],x);

 

What is the syntax for computing the composition of g with h? (As a polynomial.)

For instance, I would like to use CoefficientList on the result.

 

I know the @ operator and the subs command and have tried using them in various ways, but with no success.

(Of course, my question is general; the above is just an example.)

---

Edit: Additional question (which is my real question):

I'm writing a procedure that takes two polynomials g and h, and in which I define an unknown polynomial f. I want to compute its coefficients so that

f "composition" g = h

I write:

fCoeff:=seq(a[i],i=0..t) (to define the unknown coefficients. I can compute t.)

f := FromCoefficientList([fCoeff],x);

Then I would like to do something like:

comCoeff:=CoefficientList(f "composition" g,x)

If I have this, then I know how to solve for the unkown coefficients in f.

Hello. Tell me, please, is it possible to somehow remove the labels on the axes in Maple when plotting graphs? I mean labels 1, 2, 3 and so on. Thank you for your help.

Maple will give error when one tries to make a variable of the same name as a Maple command. Which is good ofcourse. So this gives an error

Vector:=5;

But Maple also uses hundreds of other names, as options, which are not protected like this. Even when adding this

adding interface(warnlevel=4);
kernelopts('assertlevel'=2):

There was no warning when a user makes a variable of same name as one of those Maple option names.

So if a user make a variable with such a name, it will cause serious problem. For example Vector constructor takes the name row as an option. But this name is not protected. So one can write  row:=5 and there is no warning generated by Maple.

Using Vector['row'] does not actually help. Here is an example, where Maple crashes due to this

restart;
interface(warnlevel=4);
kernelopts('assertlevel'=2):
A:=Matrix([[1,1],[2,3],[4,5]]);
row:=convert([a,b],Vector['row']);
res:=ArrayTools:-Concatenate(1,A,row); #this works, no problem

ArrayTools:-Concatenate(1,A,convert([a,b],Vector['row'])); #this will crash Maple

 

A workaround this, it to use double '' in the second call. Like this:

ArrayTools:-Concatenate(1,A,convert([a,b],Vector[''row''])); 

And if this to used again, to use

ArrayTools:-Concatenate(1,A,convert([a,b],Vector['''row'''])); 

And so on.  Ofcourse this is no way to do things.

So the user should not use row as variable name. May be use the_row instead, or a_row, and so on.

But this comes back to my question. The above is a made up example. How is the user supposed to remember there is some option used by Maple somewhere with such a name and avoid using it as a variable name? 

There are may be thousands of such names in Maple, with common names, like color and so on, and it is very easy to make a variable of this name by the user without noticing.

I also tried maplemint() and it gave no warning that a user variable have the same name as a Maple option name.

restart;
interface(warnlevel=4);
kernelopts('assertlevel'=2):

foo:=proc()
local A,row,res,a,b;
A:=Matrix([[1,1],[2,3],[4,5]]);
row:=convert([a,b],Vector['row']);
res:=ArrayTools:-Concatenate(1,A,row); #this works, no problem
ArrayTools:-Concatenate(1,A,convert([a,b],Vector['row'])); #this will crash Maple
end proc;

maplemint(foo);

foo()

 

Finally, I found that if I use Vector(:-row) instead of Vector('row'), then the crash goes away and now it works

restart;
interface(warnlevel=4);
kernelopts('assertlevel'=2):

foo:=proc()
local A,row,res,a,b;
A:=Matrix([[1,1],[2,3],[4,5]]);
row:=convert([a,b],Vector[:-row]);
res:=ArrayTools:-Concatenate(1,A,row); #this works, no problem
ArrayTools:-Concatenate(1,A,convert([a,b],Vector[:-row])); #this will now work
end proc;

foo();

But this worked because there was no global variable of the name row before calling foo. That is all. To make the above crash, all what I had to do is this
 

restart;
interface(warnlevel=4);
kernelopts('assertlevel'=2):

foo:=proc()
local A,row,res,a,b;
A:=Matrix([[1,1],[2,3],[4,5]]);
row:=convert([a,b],Vector[:-row]);
res:=ArrayTools:-Concatenate(1,A,row); #this works, no problem
ArrayTools:-Concatenate(1,A,convert([a,b],Vector[:-row])); #this will now work
end proc;

row:=5;
foo();

And now it crashes again.

This is all a big mess. Maple should warn users they are using variable of same name as Maple own option names, or make all Maple option names use some standard prefix. May be have them all start with or _ and have this special first letter be allowed only for Maple own use.

This will help prevent name clashes.

In Mathematica, this issue does not happen. Since all Mathematica names and symbols used, even as options, are protected or are strings. So no such possibility of name clash happen.

Is there a 100% robust way in Maple to prevent such name clash between user variable names and names used as options to Maple commands?

 

Hi!

There is some procedure/function to convert C code into maple code? For instance, the above text file

C_code.txt

contains the C code of this paper  http://www.dcs.bbk.ac.uk/~jkl/pubs/JL1_00a.pdf to compute the image of a point in [0,1] under the N-dimensional Hilbert curve and vice versa (i.e., given a point P in the N-dimensional cube [0,1]^{N} find the point t in [0,1] such that t is mapped into P under the Hilbert curve)

Unfortunately, I don't know anything about the C programming language.

Many thanks in advance for your comments.

Fyi, there seems to be some problem here

Maple 2020.2 with Physics 897

restart;
interface(warnlevel=4):
kernelopts('assertlevel'=2):
eq:=exp(x)*sin(y(x))-3*x^2+(exp(x)*cos(y(x))+(1/3)/y(x)^(2/3))*(D(y))(x) = 0;
timelimit(30,solve(eq,y(x)));

 

Full screen shot:

 



Maple Worksheet - Error

Failed to load the worksheet /maplenet/convert/solve_error.mw .
 

Download solve_error.mw

Hi,

I noticed that, in Maple 2020.2, the caracters seem smaller. As if the zoom had somewhat been reduced (a bit).

However, in the preferences, the default zoom level I would like is between 100 and 125% (something like 110%) (since the default zoom level is adjusted by steps of +/- 25%). I wondered if there was a way to set the default zoom level to an arbitrary value. In fact I thought it would be great to have a field instead of a list of choices, so we can choose a custom value.

Thank you

I was trying to plot a simple degree two curve but with one point removed. My first attempt was the following;

p1 := plot(x^2 - 1, x = -2 .. 2);
p2 := plot([[0, -1]], style = point, symbol = circle, symbolsize = 20);
plots[display](p1, p2);

But the curve line is shown even inside the circle of the removed point. Changing order of `p1` and `p2` in `plots[display]` doesn't make any changes on the output.

My second attempt was the following.

p3 := plots[display](plottools[disk]([0, -1], 0.1, color = white)):
plots[display](p1,p3);

This didn't help either.

Is there a way to tell Maple to compute an integral over a domain defined by an implicit condition?

A trivial example would be: integrate 1 over the 2D domain defined by x^2+y^2<=1.

I know it's possible to write the explicit double integral

int(int(1,y=-sqrt(1-x^2)..sqrt(1-x^2)),x=-1..1);

Or even as a single integral:

integrate(2*sqrt(1-x^2),x=-1..1);

However, it's not always possible to do this explicitly, depending on the form of the relation f(x,y)=0 defining the domain.

 

My idea was:

int(Heaviside(1-x^2-y^2),[x=-1..1,y=-1..1]);

But Maple returns 0. However, evalf/Int returns the correct numerical value of Pi.

 

First 459 460 461 462 463 464 465 Last Page 461 of 2223