Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

can we load part of a package not the package whole !? for example from physics package i only need diff tool not all of the package tools,can i do sth for that !? 

restart:

Eq1:=diff(psi(y),y$4)-diff(psi(y),y$2)=0;

dsolve({Eq1});

bcs:=psi(h1)=F,D(psi)(h1)=-1,psi(h2)=-F,D(psi)(h2)=-1;

dsolve({Eq1,bcs});

Error, (in dsolve) found differentiated functions with same name but depending on different arguments in the given DE system: [{psi(h1), psi(h2), psi(y)}, {psi(h2), psi(y)}]

Any suggestion?

Cheers!

 

 

Dear all;

Please see only the last lines of this procedure,

1)I ask if this procedure give an output epsilon(x0,h). Really, I need your help. Thanks.

2) Can we plot epsilon(x0,h), versus h

 

> heun := proc (x0, h)

local x, y, i, N, k, f, ode, k1, k2, x1, x2, y1, y2;

f :=(x,y)-> 1/(1+cos(y)) ;

ode := diff(y(x), x) = f(x, y);

N := round((1/2)*x0/h);

y2 := Array(0 .. N);

x2 := Array(0 .. N);

y1 := Array(0 .. 2*N);

x1 := Array(0 .. 2*N);

x2[0] := 0; y2[0] := (1/4)*Pi;

for i from 0 to N-1 do

x1[2*i+2] := (2*i+2)*h;  k1[1] := f(x1[2*i], y1[2*i]); 

k1[2] := f(x1[2*i]+h, y1[2*i]+h*k1[1]);

y1[2*i+2] := y1[2*i]+(1/2)*h*(k1[1]+k1[2]);

x2[i+1] := (2*i+2)*h;

k2[1] := f(x2[i], y2[i]);

k2[2] := f(x2[i]+2*h, y2[i]+2*h*k2[1]);

y2[i+1] := y2[i]+h*(k2[1]+k2[2])

end do;

return firstresulat = evalf([seq([x2[i], y2[i]], i = 0 .. N)]);

return secondresulat =evalf([seq([x1[2*i], y1[2*i]], i = 0 .. N)]);

epsilon:=(x0,h)->add((firsttest[i][2]-secondtest[i][2])^2 , i=1..round(x0/(2*h))+1)

end proc;

 

 

how maple calculate exp(x) with e.g. 100000 decimal numbers

a divsion of the series x^k/k! with e.g. 1/25000!/25001 lasts longer than the exp(1.xx) calculation

 

is there a faster way to calculate exp(x) than with the x^k/k! series

 

thanks

 

 

 

 

 

 

 

 

I've been poking around with convolutions on Maple, and some weird behavior came up---if I let it compute the convolution of a piecewise function, then take the convolution of that, it comes out differently than if I enter a function from scratch as the middle step---file attached (PiecewiseProblem.mw).  I'm not really a Maple pro, so am I'm doing something crazy here?

Thanks!

hello, 

so i've been having trouble with this one for a while. I think i'm just missing something simple.. maybe yous could help.

all we have to do is to write a maple procedure that takes an integer N and a boolean function F as in14 as arguments, returns nothing, and plots a square N N lattice of points, coloring the points (i; j) with F(i; j) true in red and the other ones blue.

thaaaanks.

Dear all,

Thank you for your Help.

h: stepsize;

x in [0,x0];

I give all the step of my code, but I think there is a mistake. I wait for your Help.

I would like to compute the error between  Method Huen with step size h and step size 2h using the definition of epsilon given below:

 ## The error written epsilon(x0,h)= sqrt(1/(N+1) * sum_i=0^N  (y_i^{2h}-y_(2i)^h)^2 ), where y_i^(2h) is the approximation of y(i*2*h).

 ## We want : loglog epsilon versus h.

  epsilon:=(x0,h)->sqrt( 1/(N+1)*add( (Heun1(f,x0,i)-Heun2(f,x0,i))^2,i=0..N ) );

  f:=(x,y)=1/(1+cos(y)); 

  ode:=diff(y(x),x)=f(x,y);

ic:=y(0)=1;  h:=x0/(2*N);

## Method Heun with step size 2h

> Heun1 := proc (f, x0,)

local x, y, i, h, k;

y := Array(0 .. N);

x := Array(0 .. N);

h := evalf((1/2)*x0/N);

x[0] := 0;

y[0] := 1;

for i from 0 to N do

x[i+1] := (2*i+2)*h;

k[1] := f(x[i], y[i]);

k[2] := f(x[i]+h, y[i]+h*k[1]);

y[i+1] := y[i]+h*((1/2)*k[1]+(1/2)*k[2]);

end do;

[seq([x[i], y[i]], i = 0 .. N)];

end proc;

### Now Heun with step size h  ( the same h)

> Heun2 := proc (f, x0,)

local x, y, i, h, k;

y := Array(0 .. N);

x := Array(0 .. N);

h := evalf((1/2)*x0/N);

x[0] := 0;

y[0] := 1;

for i from 0 to N do

x[i+1] := (i+1)*h;

k[1] := f(x[i], y[i]);

k[2] := f(x[i]+h, y[i]+h*k[1]);

y[i+1] := y[i]+h*((1/2)*k[1]+(1/2)*k[2]);

end do;

[seq([x[2*i], y[2*i]], i = 0 .. N)];

end proc;

 

 

Thanks you for your help.


                                

                        

 

> with(DETools);
> eq1 := diff(y(t), t) = v(t);
d
--- y(t) = v(t)
dt
> eq2 := diff(v(t), t) = -3*v(t)+10*y(t);
d
--- v(t) = -3 v(t) + 10 y(t)
dt
> phaseportrait([eq1, eq2], [y, v], t = 0 .. 10, [[y(0) = 0, v(0) = 1]], y = -10 .. 10, v = -10 .. 10, linecolor = blue);

 

 

why my phase portrait not working

I want to define the budget set of a consumer, which consists of an horizontal, slant and vertical line segments. How can I define and plot the budget set?

I find this a little frustrating as I learn Maple, so I think there is a better way to handle this.

I find myself having to keep wrapping expressions with evalf() in order to compare them, since when I use a constant such as Pi in these expressions and then compare them,  Maple complains.

In a large program, one does not know if an expression contains Pi or not beforehand, so is one really supposed to convert every expression to float just in case they might need to compare 2 expressions? 

Let me explain with simple example:

x:=1.2;  #it does not matter if this was 12/10 or 1.2, same error will result.
y:=Pi/3;
if x<y then
   print("x<y");
else
   print("x>=y");
fi;

The above gives the error "Error, cannot determine if this expression is true or false: 1.2<(1/3)*Pi"

So I changed the y assignment above to y:=evalf(Pi/3); or evalf(Pi)/3; and now Maple is happy.

But this for me looks awkward. In Mathematica, I can simply write the same, using symbolic Pi, and it works as is:

x = 1.2;  #even if this is symbolic 12/10 it will also work
y = Pi/3;
If[x < y, Print["x<y"], Print["x>=y"]]

I did not have to write  y=N[Pi/3]  where N[] is the equivalent function to Maple's evalf() which converts its argument to real.

So, now in Maple, I find myself writing evalf() around so many things, since I have to anticipate I might need to compare them in some logic later on and I can't keep track which one has some symbolic constant such as Pi in them or not. While in Mathematica I never had to worry about this.

Is there a way to reduce the need to having to use evalf() so much?
It seems to me, Maple should be able to decide if  1<Pi without me having to write 1<evalf(Pi) ?

 

I have two equations that are valid under the substitution sin <-> cos, so a simple way to generate the second equation is to replace all occurrences of sin with cos. But Maple gets the wrong answer when I do this, because of its built-in simplification. Here is an example. Z1 and Y1 shows the problem; Z2 and Y2 shows that my attempt to overcome the problem doesn't work.  Z3 doesn't work either, proving that the problem is internally generated by Maple because Maple insists on ordering variables in its own way, no matter how I write them.

________simplified example from Maple 15

restart;
Z1:=sin(-a*x+b);
Z2:='sin(-a*x+b)';
Z3:=sin(b-a*x);



                         -sin(a x - b)
                         sin(-a x + b)
                         -sin(a x - b)
Y1:=subs(sin=cos,Z1);
Y2:=subs(sin=cos,Z2);


                         -cos(a x - b)
                         -cos(a x - b)
 correct answer should be cos(-a*x+b) but the calculated results are off by a minus sign.

Ans1:=evalf(subs(a=1,b=2,x=3,[Y1,Y2,cos(-a*x+b)]));
          [-0.5403023059, -0.5403023059, 0.5403023059]

Question: How do I override Maple's desire to stick the "-" sign outside the sin function?

Hi all,

 

Say I have some list like this,

tmp:=[[0, 0, 1], [0, 1, 0], [0, 1, 1], [0, 1, 2], [1, 0, 0], [1, 0, 1], [1, 0, 2], [1, 1, 0], [1, 1, 1], [1, 1, 2], [1, 2, 0]];

 

And I have worked out some probabilities for each of them, a,b,c,d, ect.

I want to print them like this

Pr( 001 ) = 1

Pr( 010 ) = 1-phi[2]+phi[2]*(1-p[3])*(1-phi[3])

Pr( 011 ) = phi[2]*p[3]*(1-phi[3])

and so on.

I there a way to do that?

The probabilities can be extracted from a Vector. I have no problem to print them.

I dont know how to convert the 0,1,2 into the desired format as shown above.

 

This is the best I can do.

 

Also, is it possible to convert all the subscripte [] to _ when printing the output?

and get ride of all * as well.

Thanks,

 

casperyc

 

ali := (1/12)*(12*c[4]*ln(x+1)*x^4+48*c[4]*ln(x+1)*x^3+72*c[4]*ln(x+1)*x^2+48*c[4]*ln(x+1)*x+12*c[1]*x+30*c[2]*x^2+12*c[2]*x+36*c[3]*x^3+36*c[3]*x^2+12*c[3]*x+12*c[5]*x^5+48*c[5]*x^4+72*c[5]*x^3+48*c[5]*x^2+3*c[0]*x^4+12*c[0]*x^3+18*c[0]*x^2+12*c[0]*x+4*c[1]*x^4+16*c[1]*x^3+24*c[1]*x^2+6*c[2]*x^4+24*c[2]*x^3+12*c[3]*x^4+12*c[4]*ln(x+1)+12*c[5]*x)/(x+1)^4+.1

but simplify(ali-simplify(ali)) is not equal to 0!

 

I am a begnnier of Maple. I have got some problems when solving the economic maximization problem.

When I set Digits:=15, then I could solve the problem and the solve command will give me the answer.

But when I set Digits:=20, it seems Maple cann't give me a numerical solution even I put restrictions on the form of solutions.

Can anybody help me about this?

Thank you!

Ok, I am not able to find about this after 30 minutes search (my limit of giving up :).

One can ofcourse make a local variables in a proc. But sometimes I need to make a temporary variable within the proc, say inside an if...fi to use for some local temporary computation. There is no need for this temporary variable to be declared at the whole proc() scope, since it is used only inside some limited scope.  I am not able to find how to do this in Maple. Here is some silly example

f:=proc()
     local x;
     x:=9;
     if x<10 then
        local z;
        z:=20;
        x:=z;
        ....
     fi;
     x;
     end proc;

the above is illegal. I can do this:

f:=proc()
     local x;
     x:=9;
     if x<10 then
        proc()
        z:=20;
        x:=z;
          ....
        end proc;    
     fi;
     x;
     end proc;
which compiles , but does not do what is expected. The body of the `if` statement is not called. I added a print statments there and they are not being called. (I guess since it is non-named proc(), it is not called, I thought it will fall through....

I looked for some kind of BLOCK , or DECLARE construct or such in Maple but can't find it.

is it possible to introduce a temporary local scope within a proc()? What would be the syntax? That would be really useful. Ada has this feature.

   

First 1363 1364 1365 1366 1367 1368 1369 Last Page 1365 of 2224