Maple 15 Questions and Posts Maple 15 Questions and Posts Feed

These are Posts and Questions associated with the product, Maple 15

Hi !

I am trying to solve a pde with initial/boundary conditions, in the numeric mode. It works very well when I provide 3 numerical conditions : 1 initial condition (uniform distribution at first), and two boundary conditions.

Now I want to switch the initial condition to a function of r. It's a polynome I obtained after interpolation of another result. I tested it and the function interp20(r) works. But the pdsolve doesn't seem to evaluate the function, when it comes to start the procedure and pdsolve doesn't return a module as it should, although it doesn't send any message error.

You can see the code following, with the error messages I get.

 

Is it strictly impossible to use a function as an initial condition ?
Is it just a problem I could solve by converting the function or its result to something else ?
Is float the right type of input ? For example, if I write a:=283.15, is it a float ?
Have you already had similar problems ? How did you solve them ? Where could I find working code examples on this ?
Could I solve this problem with non-uniform initial condition with another Maple function ?

Then you very much for your help !

 

 

I have a problem about the integration of a function. The maple returns mathematical form of the given command

the function is

fn :=(-4.079067798*10^(-16)+3.422708023*10^(-16)*I)*(3.363377947*10^(-11)+5.977507284*10^(-12038)*I+(3.363377947*10^(-11)+4.678081798*10^(-22)*I)*erf(1.664331698*10^15*qq-0.2503507367e-1-4.649313602*I)) *exp(-2.77*(qq/(tau*tau))^2)*exp(-I*w0*qq)*exp(-(ss-qq)/T_pop)

qq is the integration variable qq=-inf..ss

w0=10^15

tau=10^(-15)

T_pop=30e-15

i have to compute lie algebra condition by using maple 15, but currently i have code in maple 5.,

i already try to run in maple 15 but it say 'error,unable to match delimeters'
i try to find error, but i cant find it..
the coding are here...

check[lie]:=proc(A,n)

local  i,j,k,l,m;  

for i from 1 by 1 to n do

for j from 1 by 1 to n do  

for k  from 1 by 1 to n do    

if A[i,i,k]<>0 then  

RETURN ('Input is NOT a Lie algebra (',i,i,k,')=',A[i,i,k], 'is not zero');  

elif A[i,j,k]+A[j,i,k]<>0 then  

RETURN ('Input is NOT a Lie algebra,(',i,j,k,')+(',j,i,k,')=',A[i,j,k]+A[j,i,k],'is not zero');  

else  

for 1 from 1 by 1 to n do

if  

simplify(sum(A[i,j,m]*A[m,l,k]+A[j,l,m]*A[m,i,k]+A[l,i,m]*A[m,j,k],   m=1..n))<>0  

then  

RETURN('Input is NOT a Lie algebra---the Jac(',i,j,l,') is not zero');    

fi;  

od;  

fi;  

od;  

od;  

od;  

print('Yes,input IS a Lie algebra');  

end:

can anyone help me here? Thank You..

Here, i attached the result in printscreen

Hi everyone,

I am trying to solve the equation of heat tranfer, time dependent, with particular Initial and boundary conditions but I am stuck by technical problems both in getting an analytical solution and a numerical one.

The equation

the equation.

I defined a and b numerically. domain is : and I defined surf_power numerically.

The initial condition is : , T0 defined numerically

The boundary condition is : , because it has a shperical symetry.

To me, it looks like a well posed problem. Does it look fine ?

Problem in analytical solution :

It doesn't accept the boundary condition so I only input the initial condition and it actually gives me back an expression that can be evaluated but it never does : I can't reduce it more than an expression of fourier which I can't eval. The solution :
The solution calculated in (0,0). I was hoping T0...

Are you familiar with these problems ? What would be the perfect syntax you would use to solve this ?

The numerical solution problems :

Sometimes it tells me that my boundary condition is equivalent  to 0 = 0, and I don't see why. Some other times it tells me I only gave 1 boundary/initial condition even if I wrote both. Here is what I wrote for example :

(because it kept asking me to add these two options : 'time' and 'range')

Are you familiar with these problems ? What would be the perfect syntax you would use to solve this ? I must at least have syntax problems because even if I keep reading the Help, it's been a long time since I used Maple.

Thank very much for any indication you could give me !

Simon

i have to compute lie algebra condition by using maple 15, but currently i have code in maple 5.,

check[_]lie:=proc(A,n)

local  i,j,k,l,m;  

for i from 1 by 1 to n do

for j from 1 by 1 to n do  

for k  from 1 by 1 to n do    

if A[i,i,k]<>0 then  

RETURN ('Input is NOT a Lie algebra (',i,i,k,')=',A[i,i,k], 'is not zero');  

elif A[i,j,k]+A[j,i,k]<>0 then  

RETURN ('Input is NOT a Lie algebra,(',i,j,k,')+(',j,i,k,')=',A[i,j,k]+A[j,i,k],'is not zero');  

else  

for 1 from 1 by 1 to n do

if  

simplify(sum(A[i,j,m]*A[m,l,k]+A[j,l,m]*A[m,i,k]+A[l,i,m]*A[m,j,k],   m=1..n))<>0  

then  

RETURN('Input is NOT a Lie algebra---the Jac(',i,j,l,') is not zero');    

fi;  

od;  

fi;  

od;  

od;  

od;  

print('Yes,input IS a Lie algebra');  

end:

can anyone help me here? Thank You..

Here is one I have been struggling with lately:

I have a relatively large module with many procedures inside (plus some other data structures). In one of the procedures, it turns out that it would be convenient to have a subprocedure defined inside to both shorten the code by avoiding duplication as well as make it more error proof (once the subprocedure is debugged it'll be correct everywhere it is used). Here is the skeleton

Lattice:=module() option package;
export Track;   ...
   Track:=proc(arguments) uses LinearAlgebra;
   local trackElement;
      ...

      for ... do
         result:=trackElement(parms); # This does not work
         ...
      end do

      trackElement:=proc(arguments) uses LinearAlgebra;
         ...
      end proc; # trackElement

   end proc; # Track;

end module; # Lattice

The problem I have is that procedure trackElement is not recognized as i found out running the code in the debugger. I can make it work by taking trackElement out of Track and make it local to the Lattice module. While functionally this works (and it is how I have it now programmed), I do  not like it as every proc in the Lattice module can see trackElement. That should not be so, I want it local to procedure Track, which is where it belongs.

I really thought I could define procedures within procedures. Am I wrong? Or is there something else ging on?

TIA,

Mac Dude

PS: The whole module is more than 100 kB of Maple code sitting in a library. I refrain from uploading it here as it would be non-trivial to get going even for a simple test case.

Here it is:

 

 

 

 

I'd like to input it as 2-D and solve for x as a function of t.

 

I ran into a problem mentioned here before: With lots of code in one execution group, the standard GUI editor becomes very slow at least in older versions of Maple (I have reason to believe that this is mostly fixed in Maple 17 and, presumably, newer). With one of my packages this has become enough of a problem to force me to deal with it (and Modules and Packages have to be all in one execution group). I have some machines that cannot go beyond Maple 15 so I keep my stuff compatible with it (so far not a big sacrifice).

The fix is rather easy: In the GUI, export the code as "Maple Input" which creates a file with extension .mpl. Then, in the GUI have a small file that uses "read" to read-in and execute the code (of the module). In my case, I have the necessary LibTools statement to save as a .mla right after the package code ends so, bingo, I have just updated the package. I edit the .mpl file in Emacs.

So I installed Joe Riel's Emacs mode maplev-mode.el. This works rather well. However, it took not long for it to show its age: it does not recognize the multi-line comments (*...*). This is kind-of bad as this forces me to not use quotes in the comments since they mess-up the keyword highlighting esp. when using single quotes as in "I'll" and so on. Likewise, maplev-indent-buffer messes up the whole buffer as it interprets the multiline comments as code.

So my question is: is someone still working on this and using it?? I guess I can work around some of these things, but it would be nice if this worked.

Incidentally, my version of maplev-mode.el seems to be dated June 2005.

I know Joe is here on occasion, maybe he can chime in. It is not absolutely fatal; I could forgo using maplev, but if I am forced to go this route of readin in the package; using maplev-mode at least gives me something in return. Unfortunately my elisp skills are not quite up to fixing this myself; at least not in a reasonable time.

If it is relevant: I use Emacs 22.1 on Mac OS X. Yes, I could upgrade to at least Emace 23.4, if that were the issue.

Thanks in advance,

Mac Dude

Maple 15

eq:=1/2*x^(1/2) + 1/13*x^(1/3) + 1/26*x^(45/37);
evalf(eq);

The exponents are still fractions.  I want to have floating point exponents.


0.5*x^0.500000 + 0.07692307692*x^0.333333 + 0.03846153846*x^1.216216216

How do I do this?

 

Tom Dean

i just need 1 at a11 position of a square matrix. do not need zeros like in complete pivoting. plz help

for i from 0 to 3 do print("rawData[", i, "] = new double[] { ", hello(i+1), ",", data[i+1], "};") end do

wrong format after copy to notepad from the maple 15

do not know why it insert a empty line, and make "};" in another line

and there is unexpected " 

 

wrong format example:

"rawData[", 0, "] = new double[] { ", 73.25, ",", 0.1510425143,

"};"
"rawData[", 1, "] = new double[] { ", 73.15, ",", 0.3974080269,

"};"
"rawData[", 2, "] = new double[] { ", 72.85, ",", 0.4661517269,

"};"
"rawData[", 3, "] = new double[] { ", 73.25, ",", 0.3974080269,

"};"


expected format:
rawData[0] = new double[] { 25.0, 20.0 };
rawData[1] = new double[] { 27.0, 34.0 };

How to solve delay differential equations with Maple?

Example:

diff(x(t),t) = 3*x(t)^2 + 0.3*x(x-0.03)

Hey there,

I've a numerical solved system of differential equations, which depend on one argument and one index. I can solve it, but when I try plot it I have this error: Error, (in plot) two lists or Vectors of numerical values expected.

Could anyone help me figure out what I'm doing wrong?

 

> restart;
> A := 115.1558549; B := .3050464658; n := 3; f0 := 0.5e-4;
               
>f:=theta->f0*(cos(arcsin(sin(theta)/n)))^2;
  I0:=Ir(z)+sum(Is[k](z),k=1..20);

> alpha := [0, 1, 2, 3, 4, 5, 6];

Theta := [3*Pi*(1/180), 6*Pi*(1/180), 9*Pi*(1/180), 12*Pi*(1/180), 15*Pi*(1/180), 18*Pi*(1/180), 21*Pi*(1/180), 24*Pi*(1/180), 27*Pi*(1/180), 30*Pi*(1/180), 33*Pi*(1/180), 36*Pi*(1/180), 39*Pi*(1/180), 42*Pi*(1/180), 45*Pi*(1/180), 48*Pi*(1/180), 51*Pi*(1/180), 54*Pi*(1/180), 57*Pi*(1/180), 60*Pi*(1/180)];

>G:= theta->A*sin(theta)*cos(2*arcsin((sin(theta)/n)))/((1+sin(theta)^2/B^2)*cos(arcsin(sin(theta)/n)));

>for j from 1 to 7 do
d1 := diff(Ir(z), z) = -sum(G(Theta[k])*Ir(z)*Is[k](z)/I0,k=1..20)-alpha[j]*Ir(z)-sum(f(Theta[k])*Ir(z),k=1..20):
d2 := diff(Is[1](z), z) = G(Theta[1])*Ir(z)*Is[1](z)/I0-alpha[j]*Is[1](z)+f(Theta[1])*Ir(z):
d3 := diff(Is[2](z), z) = G(Theta[2])*Ir(z)*Is[2](z)/I0-alpha[j]*Is[2](z)+f(Theta[2])*Ir(z):
d4 := diff(Is[3](z), z) = G(Theta[3])*Ir(z)*Is[3](z)/I0-alpha[j]*Is[3](z)+f(Theta[3])*Ir(z):
d5 := diff(Is[4](z), z) = G(Theta[4])*Ir(z)*Is[4](z)/I0-alpha[j]*Is[4](z)+f(Theta[4])*Ir(z):
d6 := diff(Is[5](z), z) = G(Theta[5])*Ir(z)*Is[5](z)/I0-alpha[j]*Is[5](z)+f(Theta[5])*Ir(z):
d7 := diff(Is[6](z), z) = G(Theta[6])*Ir(z)*Is[6](z)/I0-alpha[j]*Is[6](z)+f(Theta[6])*Ir(z):
d8 := diff(Is[7](z), z) = G(Theta[7])*Ir(z)*Is[7](z)/I0-alpha[j]*Is[7](z)+f(Theta[7])*Ir(z):
d9 := diff(Is[8](z), z) = G(Theta[8])*Ir(z)*Is[8](z)/I0-alpha[j]*Is[8](z)+f(Theta[8])*Ir(z):
d10 := diff(Is[9](z), z) = G(Theta[9])*Ir(z)*Is[9](z)/I0-alpha[j]*Is[9](z)+f(Theta[9])*Ir(z):
d11 := diff(Is[10](z), z) = G(Theta[10])*Ir(z)*Is[10](z)/I0-alpha[j]*Is[10](z)+f(Theta[10])*Ir(z):
d12 := diff(Is[11](z), z) = G(Theta[11])*Ir(z)*Is[11](z)/I0-alpha[j]*Is[11](z)+f(Theta[11])*Ir(z):
d13 := diff(Is[12](z), z) = G(Theta[12])*Ir(z)*Is[12](z)/I0-alpha[j]*Is[12](z)+f(Theta[12])*Ir(z):
d14 := diff(Is[13](z), z) = G(Theta[13])*Ir(z)*Is[13](z)/I0-alpha[j]*Is[13](z)+f(Theta[13])*Ir(z):
d15 := diff(Is[14](z), z) = G(Theta[14])*Ir(z)*Is[14](z)/I0-alpha[j]*Is[14](z)+f(Theta[14])*Ir(z):
d16 := diff(Is[15](z), z) = G(Theta[15])*Ir(z)*Is[15](z)/I0-alpha[j]*Is[15](z)+f(Theta[15])*Ir(z):
d17 := diff(Is[16](z), z) = G(Theta[16])*Ir(z)*Is[16](z)/I0-alpha[j]*Is[16](z)+f(Theta[16])*Ir(z):
d18 := diff(Is[17](z), z) = G(Theta[17])*Ir(z)*Is[17](z)/I0-alpha[j]*Is[17](z)+f(Theta[17])*Ir(z):
d19 := diff(Is[18](z), z) = G(Theta[18])*Ir(z)*Is[18](z)/I0-alpha[j]*Is[18](z)+f(Theta[18])*Ir(z):
d20 := diff(Is[19](z), z) = G(Theta[19])*Ir(z)*Is[19](z)/I0-alpha[j]*Is[19](z)+f(Theta[19])*Ir(z):
d21 := diff(Is[20](z), z) = G(Theta[20])*Ir(z)*Is[20](z)/I0-alpha[j]*Is[20](z)+f(Theta[20])*Ir(z):
dsys := {d1, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19, d2, d20, d21, d3, d4, d5, d6, d7, d8, d9}:
dSol[j] := dsolve({op(dsys), Ir(0) = 1, Is[1](0) = 0.1e-1, Is[2](0) = 0.1e-1, Is[3](0) = 0.1e-1, Is[4](0) = 0.1e-1, Is[5](0) = 0.1e-1, Is[6](0) = 0.1e-1, Is[7](0) = 0.1e-1, Is[8](0) = 0.1e-1, Is[9](0) = 0.1e-1, Is[10](0) = 0.1e-1, Is[11](0) = 0.1e-1, Is[12](0) = 0.1e-1, Is[13](0) = 0.1e-1, Is[14](0) = 0.1e-1, Is[15](0) = 0.1e-1, Is[16](0) = 0.1e-1, Is[17](0) = 0.1e-1, Is[18](0) = 0.1e-1, Is[19](0) = 0.1e-1, Is[20](0) = 0.1e-1}, [Ir(z), Is[1](z), Is[2](z), Is[3](z), Is[4](z), Is[5](z), Is[6](z), Is[7](z), Is[8](z), Is[9](z), Is[10](z), Is[11](z), Is[12](z), Is[13](z), Is[14](z), Is[15](z), Is[16](z), Is[17](z), Is[18](z), Is[19](z), Is[20](z)], numeric);
end do:


>for j from 1 to 7 do
dSol[j](0.4);
as:='as':
for l from 1 to 20 do
as[l]:=[Theta[l],rhs(dSol[j](0.4)[2+l])];
od:
plo[j]:=convert(as,listlist);
od:


>plot(plo[2],plo[1]);
Error, (in plot) two lists or Vectors of numerical values expected

How to find the determining equation for a system of fractional differential equation using Maple 15?

Hi,

I want to write a proc to calculate exponential averages. Each call will add one data point to the averge. To do that, I need to store the previous average. I can do that by handing the previous average back to the proc at the next call, but I'd rather store it in the proc. Is there a way to guarantee that a variable---once set---remains alive keeping the last value upon entering the proc again? Note that I need the variable to be local to each instance of the proc since I will have several of these running in parallel (I intend to create these procs using the module factory scheme outlined in the programming guide). So I cannot store the previous average in a global variable since that would not be unique to a given instance.

Any ideas out there?

TIA,

Mac Dude

 

2 3 4 5 6 7 8 Last Page 4 of 44