Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

I am reading (and enjoying) this:

"On the computation of the nth decimal digit of various transcendental numbers" by

Simon Plouffe, 1996 (2009)

On the third page Simon calculates this:


a := 1/binomial(100, 50);
                                 1               
              a := ------------------------------
                   100891344545564193334812497256

ifactor(denom(a));
                                                           
(8)  (81)  (11) (13) (17) (19) (29) (31) (53) (59) (61) (67) (71) (73) (79) (83) (89) (97)

and builds a sum of fractions where the above primefactors are the denominators in this sum.

5/8 + 20/81 + 10/11 + 2/13 + 13/17 + 10/19 + 4/29 + 5/31 + 23/53 + 41/59 + 29/61 + 37/67 + 33/71 +19/73 + 36/79 + 7/83 + 13/89 + 88/97

Solving a diophantine equation and using continued fractions are the steps to get that fractions (see link above).

May someone explain these steps to me ?

Thanks

The following code effectively converts the image to the JPG format.
with(GraphTheory):
s:=DrawGraph(CompleteGraph(5),size=[250,250])
Export("D:\\s1.jpg",s)

But I would like to export it using PDF format. However, the modified code below seems to be quite unsuccessful. I am aware that Maple has export options in the front end, but I still prefer to use code for this purpose.

Export("D:\\s1.pdf",s)

Error, (in Export) invalid input: member received _ImportExport:-InfoTable["PDF"][4], which is not valid for its 2nd argument, s

There are two reasons for this.

with(GraphTheory):
Graphs:=[NonIsomorphicGraphs(6,8,output=graphs,outputform = graph)]:
num_g:=nops(Graphs):
num:=ceil((num_g)/5.):
M1:=Matrix (num,5,(i,j)->`if`((i-1)*5+j<=num_g, DrawGraph(Graphs[(i-1)*5+j],size=[250,250] ,overrideoptions ,showlabels=false,style=planar, stylesheet =  [
 vertexcolor     = orange
,vertexfontcolor = black
,vertexborder    = false
,edgethickness   = 0.6
,edgecolor       = MidnightBlue
,vertexshape     =  "circle"
,vertexfont      = [Arial, 4],
vertexthickness=5], caption = cat(H__,5*(i-1)+j),captionfont=["ROMAN",7]),plot(x = 0 .. 1, axes = none))):
DocumentTools:-Tabulate (M1[1..5,.. ],widthmode=percentage ,width=80 , exterior =all):

Since strings are not mutable objects in Maple, the package provides two procedures, StringTools:-OldStringBuffer and StringTools:-StringBuffer, which appear heavily correlated with Java's  and . 

The help page of StringBuffer claims that use of a is much more efficient than the naive approach: 

(*
`G` and `F` are taken from the link above.
*)
G := proc()
   description "extremely inefficient string concatenator";
   local   r;
   r := proc()
       if nargs = 0 then
           ""
       elif nargs = 1 then
           args[ 1 ]
       else
           cat( args[ 1 ], procname( args[ 2 .. -1 ] ) )
       end if
   end proc;
   r( args )
end proc:
# # This can be transformed into an O(1) algorithm by passing a string buffer to the recursive calls.
F := proc()
   description "efficient version of G";
   local    b, r;
   b := StringTools:-StringBuffer();
   r := proc()
       if nargs = 1 then
           b:-append( args[ 1 ] )
       else
           b:-append( args[ 1 ] );
           procname( args[ 2 .. -1 ] )
       end if
   end proc;
   r( args ):-value()
end proc:
s := 'StringTools:-Random(10, print)' $ 1e4:
NULL;
time(G(s));
                             5.375

time(F(s));
                             1.125

But why not use the built-in cat directly? 

time(cat(s));
                               0.

time(StringTools:-Join([s], ""));
                               0.

Clearly, this is even more efficient

Here is the last example in that link. 

FilterFile := proc( fname::string, filter )
   local   b, line;
   b := StringTools:-StringBuffer();
   do
       line := readline( fname );
       if line = 0 then break end if;
       b:-append( filter( line ) )
   end do;
   b:-value()
end proc: # verbatim 
filename__0 := FileTools:-JoinPath(["example", "odyssey.txt"], 'base' = 'datadir'):
filename__1 := URL:-Download("https://gutenberg.org/ebooks\
/2600.txt.utf-8", "War-and-Peace.txt"):

fclose(filename__0):
    time[real]((rawRes0 := FilterFile(filename__0, StringTools:-Unique)));
                             0.223

fclose(filename__1):
    time[real]((rawRes1 := FilterFile(filename__1, StringTools:-Unique)));
                             1.097

Nevertheless, 

close(filename__0):
use StringTools, FileTools:-Text in
	time[real]((newRes0 := String(Support~(fscanf(filename__0, Repeat("%[^\n]%*c", CountLines(filename__0))))[])))
end;
                             0.118

close(filename__1):
use StringTools, FileTools:-Text in
	time[real]((newRes1 := String(Support~(fscanf(filename__1, Repeat("%[^\n]%*c", CountLines(filename__1))))[])))
end;
                             0.580

evalb(newRes0 = rawRes0 and newRes1 = rawRes1);
                              true

As you can see, these experiments just tell an opposite story. Isn't the so-called "StringBuffer" obsolete today

restart:
Digits:=30;

h0:=0.156;
d:=0.32*h0;
l:=1;
h1:=h0-d;
h2:=h0+d;
h3:=0.5*h0;
g:=9.8;
d1:=1;
Term:=5;
Num:=150:
n:=1:
l1:=l/n;
p:=2;

for N from 1 to Num do
lambda:=2*n*Pi/l:## N1 wei sha ba tiao shu 
k0:=evalf(0.5*Pi+2*(N-1)*Pi/(Num-1)):
tau0:=evalf(k0*h0):
omega:=evalf((g*k0*tanh(k0*h0))^(1/2)):
E:=g/(omega)^2:
k1:=abs(fsolve(omega^2=g*k*tanh(k*h1),k)):
tau1:=evalf(k1*h1):
k2:=abs(fsolve(omega^2=g*k*tanh(k*h2),k)):
tau2:=evalf(k2*h2):
k3:=abs(fsolve(omega^2=g*k*tanh(k*h3),k)):
tau3:=evalf(k3*h3):

F:=tau->tanh(tau1)+tau*add((eval(diff(tanh(tau),tau$s),tau=tau1))/s!*(tau-tau1)^(s-1),s=1..10);##F1(K)
T:=tau->tanh(tau2)+tau*add((eval(diff(tanh(tau),tau$s),tau=tau2))/s!*(tau-tau2)^(s-1),s=1..10);##F2(K)

P:=tau->(sinh(2*tau)-2*tau*cosh(2*tau))/(2*tau+sinh(2*tau))^2;##P
Q:=tau->(16*tau^4+32*tau^3*sinh(2*tau)-9*sinh(2*tau)*sinh(4*tau)+12*tau*(tau+sinh(2*tau))*((cosh(2*tau))^2-2*cosh(2*tau)+3))/3/(2*tau+sinh(2*tau))^4; ##Q
A:=unapply(taylor(2*(tau-tau1)/sinh(2*tau)-tanh(tau)*(h0-E*tau*tanh(tau))*(2*tau+sinh(2*tau))/((E*tau*tanh(tau)-h2)*F(tau)*sinh(2*tau)),tau=tau1,Term+1),tau);##A(K)
B:=unapply(taylor((1+2*tau/sinh(2*tau))^2*(-(tau-tau1)/lambda^2/E/(E*tau*tanh(tau)-h2)/F(tau)-(h0-E*tau*tanh(tau))*(tau-tau1)*tanh(tau)/(E*tau*tanh(tau)-h2)/F(tau)*P(tau)+(tau-tau1)^2*Q(tau)),tau=tau1,Term+1),tau);##B(K)


for j from 0 to Term do
a[j]:=coeff(A(tau),tau-tau1,j):
b[j]:=coeff(B(tau),tau-tau1,j):
end do;

for m from 1 to Term do
f1[0]:=1;
f2[0]:=1;
f1[m]:=-(add(f1[m-i]*((m-i)*a[i]+b[i]),i=1..m))/(m*(m-1+1/2));##pm(z1)
f2[m]:=-(add(f2[m-i]*((m-i+1/2)*a[i]+b[i]),i=1..m))/((m+1/2)*(m+1/2-1+1/2));##qm(Z2)
end do;


CC:=unapply(taylor(2*(tau-tau2)/sinh(2*tau)-tanh(tau)*(h0-E*tau*tanh(tau))*(2*tau+sinh(2*tau))/(E*tau*tanh(tau)-h1)/T(tau)/sinh(2*tau),tau=tau2,Term+1),tau);
DD:=unapply(taylor((1+2*tau/sinh(2*tau))^2*(-(tau-tau2)/lambda^2/E/(E*tau*tanh(tau)-h1)/T(tau)-(h0-E*tau*tanh(tau))*(tau-tau2)*tanh(tau)/(E*tau*tanh(tau)-h1)/T(tau)*P(tau)+(tau-tau2)^2*Q(tau)),tau=tau2,Term+1),tau);

j:='j':
for j from 0 to Term do
cc[j]:=coeff(CC(tau),tau-tau2,j):
dd[j]:=coeff(DD(tau),tau-tau2,j):
end do;

i:='i':
f3[0]:=1;
f4[0]:=1;
m:='m':
for m from 1 to Term do
f3[m]:=-(add(f3[m-i]*((m-i)*cc[i]+dd[i]),i=1..m))/(m*(m-1+1/2));
f4[m]:=-(add(f4[m-i]*((m-i+1/2)*cc[i]+dd[i]),i=1..m))/((m+1/2)*(m+1/2-1+1/2));
end do:

xi11:=unapply(add(f1[j1]*(tau-tau1)^(j1),j1=0..m-1),tau);
xi12:=unapply(add(f2[j2]*(tau-tau1)^(j2+1/2),j2=0..m-1),tau);
xi21:=unapply(add(f3[j3]*(tau-tau2)^(j3),j3=0..m-1),tau);
xi22:=unapply(add(f4[j4]*(tau-tau2)^(j4+1/2),j4=0..m-1),tau);


u0:=evalf(g*tanh(tau0)*(1+2*tau0/(sinh(2*tau0)))/(2*k0));
u01:=evalf(g*tanh(tau3)*(1+2*tau3/(sinh(2*tau3)))/(2*k3));
u1:=evalf(g*(1-(tanh(tau0))^2)*(sinh(2*tau0)-2*tau0*cosh(2*tau0))/(4*(2*tau0+sinh(2*tau0))));
H:=evalf((1+2*tau0/sinh(2*tau0))/(-lambda*k0*d));
delta00:=evalf((lambda*d*u1/u0+I*k0)*H);
delta01:=evalf((lambda*d*u1/u0-I*k0)*H);
delta11:=evalf((lambda*d*u1/u0+I*k0)*H*exp(I*k0*l));
delta12:=evalf((lambda*d*u1/u0-I*k0)*H*exp(-I*k0*l));
delta21:=evalf(exp(I*k0*(l1)));
delta22:=evalf(u0*k0*exp(I*k0*(l1)));
delta31:=evalf(exp(-I*k0*(l1)));
delta32:=evalf(-u0*k0*exp(-I*k0*(l1)));
delta41:=evalf(exp(I*k3*(l1)));
delta42:=evalf(u01*k3*exp(I*k3*(l1)));
delta51:=evalf(exp(-I*k3*(l1)));
delta52:=evalf(-u01*k3*exp(-I*k3*(l1)));
delta61:=evalf(exp(I*k3*(l1+d1)));
delta62:=evalf(u01*k3*exp(I*k3*(l1+d1)));
delta71:=evalf(exp(-I*k3*(l1+d1)));
delta72:=evalf(-u01*k3*exp(-I*k3*(l1+d1)));
Y11 := evalf(exp(k0*(l1 + d1)*I));
Y12 := evalf(-exp(-k0*(l1 + d1)*I));
Y21 := evalf(u0*k0*exp(k0*(l1 + d1)*I));
Y22 := evalf(-u0*k0*exp(-k0*(l1 + d1)*I));

G11 := evalf(exp(k0*(2*l1 + d1)*I));
G12 := evalf(-exp(-k0*(2*l1 + d1)*I));
G21 := evalf(u0*k0*exp(k0*(2*l1 + d1)*I));
G22 := evalf(-u0*k0*exp(-k0*(2*l1 + d1)*I));

W11 := evalf(exp(k3*(2*l1 + d1)*I));
W12 := evalf(-exp(-k3*(2*l1 + d1)*I));
W21 := evalf(u01*k3*exp(k3*(2*l1 + d1)*I));
W22 := evalf(-u01*k3*exp(-k3*(2*l1 + d1)*I));

Z11 := evalf(exp(k3*(2*l1 + 2*d1)*I));
Z12 := evalf(-exp(-k3*(2*l1 + 2*d1)*I));
Z21 := evalf(u01*k3*exp(k3*(2*l1 + 2*d1)*I));
Z22 := evalf(-u01*k3*exp(-k3*(2*l1 + 2*d1)*I));


V11:=evalf(exp(I*k0*2*(l1+d1)));
V21:=evalf(u0*k0*exp(I*k0*2*(l1+d1)));

delta91:=evalf(exp(I*k0*l));
delta92:=evalf(exp(-I*k0*l));


Hi:=(Matrix([[1,1],[delta00,delta01]]))^(-1);
H0:=Matrix([[1,1],[delta00,delta01]]);
H1:=(Matrix([[delta21,delta31],[delta22,delta32]]))^(-1);
H2:=Matrix([[delta41,delta51],[delta42,delta52]]);
H3:=(Matrix([[delta61,delta71],[delta62,delta72]]))^(-1);
H4 := Matrix([[Y11, Y12], [Y21, Y22]]);
H5 :=( Matrix([[G11, G12], [G21, G22]]))^(-1);
H6 := Matrix([[W11, W12], [W21, W22]]);
H7 := (Matrix([[Z11, Z12], [Z21, Z22]]))^(-1);
H8 := Matrix([[V11], [V21]]);

Ht:=Matrix([[1],[delta11]]);

e1:=Matrix([[evalf(xi11(tau0)),evalf(-xi12(tau0))],[evalf(eval(diff(xi11(tau),tau),tau=tau0)),evalf(eval(diff(-xi12(tau),tau),tau=tau0))]]);

e2:=(Matrix([[evalf(xi11(tau0)),evalf(xi12(tau0))],[evalf(eval(diff(xi11(tau),tau),tau=tau0)),evalf(eval(diff(xi12(tau),tau),tau=tau0))]]))^(-1);

EE:=evalm(e1.e2);

ee1:=Matrix([[evalf(xi21(tau0)),evalf(xi22(tau0))],[evalf(eval(diff(xi21(tau),tau),tau=tau0)),evalf(eval(diff(xi22(tau),tau),tau=tau0))]]);

ee2:=(Matrix([[evalf(xi21(tau0)),evalf(-xi22(tau0))],[evalf(eval(diff(xi21(tau),tau),tau=tau0)),evalf(eval(diff(-xi22(tau),tau),tau=tau0))]]))^(-1);
EEE:=evalm(ee1.ee2);

MM:=evalm(Hi.EE.EEE.H0.H1.H2.H3.H4.H5):
R:=evalf(MM[2,1]/MM[1,1]):
Kr:=abs(evalf(R)):
KR[N]:=abs(Kr);

end do:


N:='N':
seq(KR[N],N=1..Num);
with(plots):
listplot([seq([0.5+2*(N2-1)/(Num-1),KR[N2]],N2=1..Num)]);
 

Dear all
I have a boundary value problem, 
How can I solve the problem using maple or maybe we can introduce serie expansion to solve it or something else.

BVP_frac.mw

Thank you for your help 

I have data that I've binned in list. I'd like to plot in as a histogram. 

dataplot sort of does it but doesn't give the x-axis that I used but just the bins.

Yes, I know about Histogram from Statistics. To plot 1000000 values I have to enter them all into a list which seems crazy when all I want is a 100 bin histogram. Doing the binning is trivial, but I can't figure out how to plot it with a sensible x-axis (show range used to define the 'histogram')

Hello,

I am experiencing difficulties using my old Maple programs with the newer version. I tried changing the types of inputs and the typesetting level, but it just doesn't work. I would appreciate it if someone could help me overcome my ignorance.

Some simple input is attached with the output.

Hi,

I use the RamdonGraph function quite a bit and wanted to know if it is possible to generate random graphs with specific properties, beyond the typical order, size, connectednes, etc. Specifically, I am interesting in generating eulerian (containing an eulerian circuit), semi-eulerian (containing an eulerian trail) and hamiltonian (containing a spanning cycle)  graphs. Also, the abiltiy to randomly generate graphs that have none of these properties would be helpful.

Dear all 

I have a system of  second order difference equation.

How, can I update the iterate solution and solve the system

System_of_equations.mw

Thank you

Maple (2023.1) opens regularly but I cannot use "open" or "save" or "save as" and after opening Maple I no longer can close it.

That is a big problem for me.

The issue is on my new laptop Lenovo L13 Yoga with Windows 11.

Any suggestion? Thanks

hi i have a problem where maple dosent have a varible theta inside cos and sin and when i give it a size it dosent solve the equtation 

The function f := x -> (x + 1)*(x^2 + (m - 5)*x - 7*m + 2) satifies
solve(discrim(f(x), x) = 0, m) has three solutions 1, -17, -1
How to find the integer numbers a, b, c, d, k, t so that the function 
f := x -> x^3 + (a*m + b)*x^2 + (c*m + d)*x + k*m+t  satifies the equation 

solve(discrim(f(x), x) = 0, m)  has three  integer numbers m?

Consider the function f:=x-> a*x^2 + b*m*x + x^3 + c*m.
I tried
restart;
f := x -> x^3 + a*x^2 + b*m*x + c*m;
solve(f(x) = 0, m);
g := x -> -x^2*(a + x)/(b*x + c);
solve(diff(g(x), x) = 0, x);

restart;
n := 0;
f := x -> -x^2*(a + x)/(b*x + c);
for a from -10 to 20 do
    for b to 20 do
for c from -10 to 20 do
mydelta := a^2*b^2 - 10*a*b*c + 9*c^2;
if 0 < mydelta and type(mydelta, integer) then
x1 := (-b*a - 3*c + sqrt(a^2*b^2 - 10*a*b*c + 9*c^2))/(4*b):
x2 := -(b*a + sqrt(a^2*b^2 - 10*a*b*c + 9*c^2) + 3*c)/(4*b):
x3 := 0:
if type(x1, integer) and type(x2, integer) and nops({0, x1, x2}) = 3 and type(f(x1), integer) and type(f(x2), integer) then n := n + 1; L[n] := [a, b, c]; end if; end if; end do; end do; end do;
L := convert(L, list);


I get
L := [[-10, 1, 6], [-10, 2, 12], [-9, 3, 5], [-8, 1, 10], [-5, 1, 3], [-4, 1, -6], [4, 1, 6], [5, 1, -3], [6, 3, 20], [7, 1, 15], [8, 1, -10], [8, 1, 12], [9, 3, -5], [10, 1, -6], [10, 1, 12], [12, 1, 18], [14, 1, -4], [15, 1, -9], [18, 1, 20], [18, 3, -10], [18, 3, 4], [20, 1, 2]]

With L[1], solve(discrim(x^3 - 10*x^2 + m*x + 6*m, x) = 0, m) ;
The equation has three integer solutions: 0, 12, -500

Dear all 
I have a PDE, with unknown u(t,x,t) ,  zero boundary condition and initial condition given

I converted the equaiton using finite difference to get a system of algebraic equation 

The system is solved at each time step 
I think i have a problem to update the solution inside the loop. 

I hope find the problem or why the numerical solution is different to exact solution at last time 

System_finite_difference.mw

Thank you for your help 

Delay differential equations in Chebfun lists 15 examples "taken from the literature". Many of them can be (numerically) solved in Maple without difficulty, yet when I attempt to solve the  in the above link, Maple's internal solver `dsolve/numeric` just halts with an error. 

plots:-odeplot(dsolve({D(u)(t) + u(t)**2 + 2*u(1/2*t) = 1/2*exp(t), u(0) = u(1/3)}, type = numeric, range = 0 .. 1/3), size = ["default", "golden"]);
Error, (in dsolve/numeric) delay equations are not supported for bvp solvers

Even if I guess an initial (or final) value artificially, the solution is still less reliable (For instance, what is the approximate endpoint value? 0.26344 or 0.2668?): 

restart;
dde := D(u)(t) + u(t)**2 + u(t/2)*2 = exp(t)/2:
x__0 := 2668/10000:
sol0 := dsolve([dde, u(0) = x__0], type = numeric, 'delaymax' = 1/6, range = 0 .. 1/3):
plots['odeplot'](sol0, [[t, u(t)], [t, x__0]], 'size' = ["default", "golden"]);

x__1 := 26344/100000:
sol1 := dsolve([dde, u(1/3) = x__1], type = numeric, 'delaymax' = 1/6, range = 0 .. 1/3):
plots['odeplot'](sol1, [[t, u(t)], [t, x__1]], size = ["default", "golden"]);

Compare:  (Note that the reference numerical solution implies that its minimum should be no less than 0.258 (Is this incorrect?).).

And actually, the only known constraint is simply u(0)=u(⅓) (so neither value is known beforehand). Can Maple process this boundary condition automatically (that is, without the need for manual preprocessing and in absence of any other prior information)?
I have read the help page How to | Numeric Delay Differential Equations and Numerical Solution of Difficult ODE Boundary Value Problems, but it appears that those techniques are more or less ineffective here. So, how do I solve such a "first order nonlinear 'BVP' with pantograph delay" in Maple?

restart;
Pr:=0.71: n:=-1:

eta0:=0.0699;

EQ1:=diff(H(x), x ) - x*diff(F(x), x ) ;
 

EQ2:=(1+x^2)*diff(F(x), x$2) + (3*x + x*F(x)-H(x))*diff(F(x), x) + F(x)^2 + G(x)^2 +2*P(x) + x*diff(P(x), x) ;

EQ3:=(1+x^2)*diff(G(x), x$2) + (3*x + x*F(x)-H(x))*diff(G(x), x) ;

EQ4:=(1+x^2)*diff(H(x), x$2) + (3*x + x*F(x)-H(x))*diff(H(x), x) + (1+F(x))*H(x)- diff(P(x), x);

EQ5:=(1+x^2)*diff(theta(x), x$2) + x*(1-2*n)*diff(theta(x), x) + n^2*theta(x) - Pr*( n*F(x)*theta(x) + ( H(x)-x*F(x) )*diff(theta(x), x)  ) ;


EQ:={EQ1=0, EQ2=0,EQ3=0,EQ4=0 ,EQ5=0}:


IC:={ F(0)=0, G(0)=12, H(0)=0, theta(0)= 1, F(eta0)=0, G(eta0)=12, H(eta0)=0, theta(eta0)= 0, P(0)=0};
 

sol:= dsolve(EQ union IC,numeric,output=Array([0,0.0699]));

ques.mw

First 34 35 36 37 38 39 40 Last Page 36 of 2224