Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

I want to make sense of the expression

Int(t^2/ln(t)*exp(-t), t=0..infinity);

The denominator vanishes at t=1.  The singularity at t=1 is not integrable.  I want to see whether the integral is defined in the sense of Cauchy principal value.  Thus, I let

K := Int(t^2/ln(t)*exp(-t), t=0..1-a) + Int(t^2/ln(t)*exp(-t), t=1+a..infinity);

and wish to see whether the following limit exists:

limit(K, a=0, right);

Maple cannot evaluate this.  Nor can I.  Alternatively, we may try:

series(K, a=0);

or

series(K, a=0) assuming a>0, a<1;

In both cases Maple says that it is unable to compute the series.

So my question is: Does the Cauchy principal value exist, and can Maple help one to determine that?

 

For my task I have to solve inequalities in the form

abs(z) < 1

With z being an expression yielding a complex number, but taking a real number as argument. Maple does not give any results when I pass such an expression to the function solve. It just immediately returns without any output.

 

What can I do to get the solution?

Hej Mapleprimes,

I am making Maple sweat over a simple problem

11.00=11.244522435+log(x) 

right click and solve for variable x. 

So far Maple has been working for 10 minutes at allocatet 2 GB 

memory.  And no answer yet. 

Is there a short way to solve this faster?

 

Kind regards 

Per Kirkegaard

A wealth of knowledge is on display in MaplePrimes as our contributors share their expertise and step up to answer others’ queries. This post picks out one such response and further elucidates the answers to the posted question. I hope these explanations appeal to those of our readers who might not be familiar with the techniques embedded in the original responses.

The Question: Variable Identification

Don Carota wanted to know the best approach for finding variables that are not assigned to a value within an equation. He wrote:

I got a set of equations to solve, like this one:

eq[1]:=W[1,0]*(a*HRa[1,0]+b*ga[1,0]+c)=d*SR[1,1]/grid

a,b,c,d are numbers, like 2.0458 and so on.

When I want to solve the set, I need to tell Maple the command solve:

solve( {seq(eq[i],i=1..N)},{variables});  (N is an integer of course)

To set the variables, one must check each equation to write: {W[1,0],HRa[1,0],ga[1,0]...} and so on.

I know that I can use the command is(variable,assignable) to check if a variable has not a value assigned already and, according to true/false I can construct the set {variables} and solve the set of equations.

That´s an easy solution if I need to check variables under a certain pattern, like: X[1], X[2], X[3] since I can create a loop and check them one after the other. But my problem is that I have different names for variables or that variables change to assignable from assigned according to other conditions, so I can never be sure if W[1,0] is going to be a variable to compute in all steps instead of SR[1,1].

for example:

if a>3 then
SR[1,1]:=1/2;
else
W[1,0]:=300:
end if;

So, when I need to type solve, the {variables} part is different according to each case. Is there any command that allows me to insert an expression and Maple can return me the variables or parameters in the expression that are not numeric already?

(note that the link added to the is command above was added by me, not the original author)

dharr and Carl Love provided solutions that use the indets command.

The code provided by dharr is as follow:

  1. indets(eq[1],name);

Result: gives the indeterminates: {a, b, c, d, HRa[1, 0], SR[1, 1], W[1, 0], ga[1, 0]}

The code provided by Carl Love is as follows:

1.       indets(eq[1], assignable(name));

or, doing all equations at once,

2.       indets({entries(eq, nolist)}, assignable(name));

 

Further Explaining the indets and type commands.

Both dharr and Carl Love provided an answer that used the indets command. In essence the indets command used in this example contains two arguments: indets(expr, typename). Expr is a rational expression that only uses the operations such as addition, subtraction, division, and multiplication. Typename is a parameter used when the desired return is a set containing all subexpressions in expr that are of type typename.

Carl Love used the assignable(name) argument  for the typename parameter in order to return all the variables that can be assigned a value, excluding constants such as Pi that are also considered names. Indeed, assignable is a type and can be used without an additional argument. For example, the command indets(x+f(x)+y=1, assignable) returns {x,y,f(x)} because all three symbols can be assigned values. However, indets(x+f(x)+y=1, assignable(name)) returns just {x,y} because f(x) is of type function, not of type name. Similarly, indets(x+y=Pi, assignable) would return just {x,y} because Pi is not considered to be something that can be assigned to.

Carl’s second command used ({entries(eq, nolist)} as the expr parameter. In this version, eq is the table whose members are the individual equations. Remember, the syntax x[1] creates a table whose name is x, and whose entry is the object assigned to x[1]. The entries(t) function returns a sequence of the table members, each member being placed in list brackets. By including the option nolist, the return is then a sequence of table members without list brackets. 

Finally, note that different programmers will use different approaches to finding “indeterminants” in expressions. Dr. Lopez pointed out that some years ago he asked three different programmers about extracting the “assignable names” in an expression such as q:=x+Pi+cos(a). The naive indets(q) returns {a,x,cos(a)}, whereas indets(q,name) returns {Pi,a,x}. However, select(type,indets(q),name) returns {a,x}, as does indets(q,And(symbol,Not(constant))).

Don Carota’s question is able to showcase some of the different types that are within Maple’s platform. Therefore, it is important to go over what the type-checking function is and what it does. In many contexts, it is not necessary to know the exact value of an expression; instead it is enough to know if the value belongs to a group of expressions that have similarities. Such groups are knows as types.

Maple’s engine uses the type function in every single procedure to direct and maintain the flow of control in algorithms and to decide if the user’s input is valid. There are about 240 different types that Maple recognizes including: prime, string, symbol, list, etc.  Let’s see some examples of how the function works using elements from this question. 

Type has two parameters: an expression e, and a valid type expression t. To check that the output of the entries(eq,nolist) is indeed not a list, the type command can be used as follows:

As expected, the last command returns false! If you want to learn more about the type and indets commands you can visit their corresponding help pages: ?type, ?indets.

 

This blog was written by Maplesoft’s intern Pia under the supervision of Dr. Robert Lopez. We both hope that you find this useful. If there is a particular question on MaplePrimes that you would like further explained, please let us know. 

Hy

I have a list

A:=[[2,1],[1,2],[3,5],[7,6]]

I want to be able to tell what position the element [3,5] is in the list

I'm using

member([3,5],A,'t')

is there anything faster

maybe instead of storing as a list, I can use rtables or something?

thankyou for your time

Hi,

I'm trying to fill an Array but I don't know the correct syntax, and Maple help isn't much use.

How do I form an Array, A, which has 10 rows and 2 columns. Where one column is say the row number squared and the other column is the row number cubed. 

So A would be:

[1 1]
[4 8]
[9 27] .....

Also, I'm using the square and cube numbers as an example. But is there a general format for doing this, whatever the values I want to put in the array are?

Thanks

I am faced by the problem where I used Grid:-Seq()---locally---to do some long time computation and I am faced by the exhaustion of memory problem. I think the problem itself is related to the memory management in maple.

So the problematic function is

# Procedure: ComputeEventsCTypeGrid
#   Compute events such that three quadrics intersects in a point.
#
# Parameters:
#   Q          - a set of quadrics
#
# Output:
#   Indexes of quadrics which intersect in a point.
# TODO:
#  - Memory
#  - Cleanups
ComputeEventsCTypeGrid := proc( Q )
  local s, cType, i, j, k, rootNb, univ, sys;
  s := proc (i, j, k)
    sys := [ Q[i], Q[j], Q[k] ];
    univ := PolynomialIdeals[UnivariatePolynomial]( indets( sys )[1], sys );
    if not type( univ, constant ) then
      rootNb := nops(select(proc(x)op(x)[2]>0;end proc,RootFinding:-Isolate( univ, [ op( indets(univ ) ) ] )) ):
      if rootNb > 0 then
        return [ univ, rootNb, sys ];
      end if:
    end if:
  end proc;
  cType := [Grid:-Seq(seq(seq(s(i,j,k),k=j+1..nops(Q)),j=i+1..nops(Q)),i=1..nops(Q))];
  return cType;
end proc:

A dump from top after calling ComputeEventsCTypeGrid for some data(total amount of memory on this machine is 251G + 48G swap)

VIRT    RES    SHR S  %CPU %MEM     TIME+

33.007g 0.031t   3676 S   0.0 12.5   2606:20
31.137g 0.029t   3436 S   0.0 11.7   2274:34
8645756 4.984g   2840 S   0.0  2.0  32:06.40
28.798g 0.026t   1968 S   0.0 10.7   1821:16
26.650g 0.024t   1968 S   0.0  9.8   1520:54
25.346g 0.023t   1968 S   0.0  9.2   1236:44
23.296g 0.021t   1968 S   0.0  8.4   1004:52
20.498g 0.018t   1968 S   0.0  7.4 790:30.81
16.799g 0.014t   1968 S   0.0  5.9 625:28.12
15.011g 0.013t   1968 S   0.0  5.2 469:36.27
7678444 4.149g   1968 S   0.0  1.6 104:34.22
6734804 623904   1968 S   0.0  0.2  73:13.13
4327420 132516   1968 S   0.0  0.1  24:11.51
3420712 111336   1968 S   0.0  0.0  11:26.16
13.671g 0.011t   1964 S   0.0  4.6 380:15.13
11.771g 9.831g   1964 S   0.0  3.9 274:25.59
9936056 7.769g   1964 S   0.0  3.1 201:13.94
8805512 3.394g   1964 S   0.0  1.3 148:09.53
5077056 1.500g   1964 S   0.0  0.6  42:19.29
2384784  82040   1832 S   0.0  0.0   3:56.57

Size of output data calculated with

> length(sprintf("%m", eval(cType)));

> 326260610

Also, I called gc() at the end of the computations but memory allocated by instances of mserver were not released. Does it mean gc() should be called from each instance separately? My final point is that I have to run some other calculations for different and bigger dataset (It will probably take 2 days to finish -- Q has around 700 polynomials of degree 2) and for this moment I cannot do this because I've gotten an error about not enough amount of memory.

I have 2 questions.

 

1) The help pages discuss the use of functions described by piecewise when using dsolve. The examples are clear enough but nothing is said about using the numeric option and piecewise. I get an error message for a very simple example: y' +R(t) y^2 = 0. Are I correct in assuming that dsllve numeric cannot deal with piecwise continuous functions?

2) I tried to solve a system of 2 second order constant coefficient linear ODEs using dsolve. After a very long wait (over an hour) I gave up. I tried again using "method=laplace" and got an instant answer. I did not bother to mention it here but it occurred again, this time with a fourth order and second order constant coefficient system. Very strange! I know that the laplace transform is a very useful tool; shouldn't Maple also know that?


with(PDEtools, casesplit, declare)
``

L := 1651.12; m := 3205.12; r1 := .1875; r2 := 2; z1 := 0; z2 := 12; ld := 4.5

NULL

declare(u(r, z), w(r, z))``

with(DEtools, gensys)

rr := (L+2*m)*(diff(u(r, z), r))+L*(diff(w(r, z), z))+L*u(r, z)/r

zz := L*(diff(u(r, z), r))+(L+2*m)*(diff(w(r, z), z))+L*u(r, z)/r

rz := m*(diff(u(r, z), z))+m*(diff(w(r, z), r))

BCS := {rr(r1, ld) = 0, rz(r1, z) = T, w(r, 0) = 0, zz(r, z2) = 0}

{3205.12*(diff(u(r, z), z))(.1875, z)+3205.12*(diff(w(r, z), r))(.1875, z) = T, 8061.36*(diff(u(r, z), r))(.1875, 4.5)+1651.12*(diff(w(r, z), z))(.1875, 4.5)+1651.12*(u(r, z))(.1875, 4.5)/r(.1875, 4.5) = 0, 1651.12*(diff(u(r, z), r))(r, 12)+8061.36*(diff(w(r, z), z))(r, 12)+1651.12*(u(r, z))(r, 12)/r(r, 12) = 0, w(r, 0) = 0}

(1)

``

NULL

sys3 := [(L+2*m)*(diff(u(r, z), r, r))+(L+m)*(diff(w(r, z), r, z))+(L+2*m)*(diff(u(r, z), r))/r-(L+2*m)*u(r, z)/r^2+m*(diff(u(r, z), z, z)) = 0, (L+m)*(diff(u(r, z), r, z))+m*(diff(w(r, z), r, r))+(L+2*m)*(diff(w(r, z), z, z))+(L+m)*(diff(u(r, z), z))/r+m*(diff(w(r, z), r))/r = 0]

pdsolve(sys3, BCS, numeric)

 

 

``

``


Download PDE_equation2.mw

Hi all,

I have the following PDE, is it solveable by Maple or not. Do I need a boundary condition and how many or I can get a general solution? I am new to Maple. Any help will be appreciated.

Thank you.

 

 

 

I have two big equations in terms of 'a & w'. 

While solving two equations, it shows "The solution may be lost".

!!!!!!!!!!!!!!!!!! (This is my problem file)

Kiran_Mukund_(solve).mw

!!!!!!!!!!!!!!!!!!

Please suggest me a solution.

 

 

Thanking You

KIRAN MUKUND

I have three separate matrices with 3 function values, and i want to plot them all together. I tried using listplot3d, but it seems to be impossible. How do i do it?

I'm new to Maple, and I come from using Matlab.  Apparently my Matlab way of thinking isn't working on Maple.  I'm trying  to ride a bit of code that simulates flipping a coin 1000 times.  The code counts one partiuclar result (1=heads) at the end prints that result.

 

Here's the code:

 

dice:=proc()

count:=0:  

for i from 1 to 10000 do  

roll := rand(1..2):  

roll:=()  

if (roll=1) then count:=count+1 end if  

end do  

print(count)  

 I get errors saying I didn't terminate my loops correctly.  Help, please.

Hi everyone. This problem is driving me nuts. I'm pretty sure it's a glitch but I'm not sure how to solve it. I'm trying to do some data analysis with Maple:

(as a side note, even if I remove the for loop but don't execute the restart command the error remains, however if I get rid of the for loop and execute the restart command it is fine.)

Any help would be greatly appreciated. As it stands this is really driving me insane.

How can I quickly  convert a maple file ful of equations into MathML in Word, nt losing the upper and lower index structure - basically to be able to count each letter in MS Word 2013?

When I tried via Latex or MathML, I have lost the letter structure and got the conversion as an image.

 

Euler := proc (f::procedure, a, b, alpha, n::integer)
local w, h, i, xN, yN;
w := array(1 .. 2, 1 .. n+1);
h := (b-a)/n;
i := 1;
xN := a;
yN := alpha;
while i <= n+1 do
w[1, i] = xN;
w[2, i] = yN;
print*w[1, i]
yN = yN+h*f(yN, xN);
xN = xN+h;
i = i+1
end do;
print*w
end proc

First 1132 1133 1134 1135 1136 1137 1138 Last Page 1134 of 2224