Items tagged with procedure procedure Tagged Items Feed

I am trying to make a plot that shows the amplitude of a second order linear system relative to an external driving frequency ω, but I am having trouble defining my function. Here's what I have so far.



When I pass the amp function ω=0 and F=4, I don't get back what I expect. I would think that those symbols should evaluate to the values I passed in. I have tried different parameter names etc..


All I am trying to do is plot the function shown above for F=4 and 0≤ω≤5. I know I could manually plug the values in, but I thought I'd ask the proper way to do it. Any help is greatly appreciated. Thanks folks!


Is there any difference between





Say if I have a very 'complicated' procedure myfunc(K,C) that takes two options, but it runs all dependently.




Which one is more efficient? The final ouput of each run from myfunc is just a integer value.


The reason I am asking it that i think both runs on a 'single' thread (core) as CPU usage is always very low, around 15-20%.

If I look at the task manager, some cores (threads) arent doing anything.

Is there anyway to speed things up?




f(4) # does not give me what i want , which is




This works. But it's just a simple example to illustrate my problem.


Is there a way to fix this 'cat' problem in the procedure 'f'?





Hi All,

I used the command map to apply a procedure to elements of a array like this:


Why did I get the null array "[]"?

A vector was also used and got the similar result: 


I'd appreciate any help on this topic. Thank a lot.

Given the lengths of the three sides of a triangle, write a procedure, triType, to produce an output which shows whether the triangle is acute, right or obtuse with the three sides given??

firstly apologies in advance for stuff in this question such as "triangle symbol",  my computer is pretty old. 

ok so i was confused a bit here, what i'm trying to do is write a maple procedure that computes Af for a given f contained in V . except we only need to correct the bug in the script below. This script demonstrates such a procedure in the case that omega is a square. The domain is given here as the negative set of a function F contained in V .  I have left in notes where/what i think we need to do but i dunno how to...

N:=10 ; # Global Var
Average := proc(F, f0) local f, i, j;
f := f0; # !!!!!!!!!!!!!! something is bad here...
for i to N do for j to N do
if F(i, j) < 0 then
f[i, j] := (f0[i - 1, j] + f0[i + 1, j] + f0[i, j + 1] + f0[i, j - 1])/4 ;
end if;
end do;end do;
return f;
end proc;
f0:=Matrix(N,F); # just to have something to test the procedure
Average(F,f0); # does not return the expected average, modifies f0


the necessary information we were given to produce this so far was..

Let N be a positive integer and [N] = {i contained in N | 1<= i <=N }  Let "Omega" C {(i,j) contained in [N] x [N] | 2<=i,j<=N-1} be a subset. Let V = R^([N]x[N]) be the vector space of real valued functions [N]x[N] -> R
and A, "triangle symbol":V->V (average) and "triangle symbole" (Laplacian) be the linear maps such that
[Af](i; j) = f(i; j)      if (i; j) not contained in "Omega"   OR

                             [f(i, j + 1) + f(i, j - 1) + f(i + 1, j) + f(i - 1, j)]/4 if (i,j) is contained in "Omega"

["traingle symbol"f](i,j) =  0 if (i,j) isnt contained in "Omega"   OR

                            ( f(i,j) - [f(i, j + 1) + f(i, j - 1) + f(i + 1, j) + f(i - 1, j)]/4 )    if (i,j) is contained in "Omega"

 Please and thank you for any help in advance <3


Dear all;

Please give me few minutes to correct the output of this procedure.Many thinks. 
We will solve the waves equations: diff(f(x,y,t),t$2)=c^2*( diff(f(x,y,t),x$2) +diff(f(x,y,t),y$2));  where (x,y,t) in [0,1]*[0,1]*[0,T] using finite difference.  With Initial boundary conditions: [u(0,y,t)=u(1,y,t)=0],   [u(x,0,t)=u(x,1,t)=0],  [u(x,y,0)=f(x,y),   diff(u(x,y,0),t)=g(x,y)]... The code is done and perfect but....The output of this procedure is Nothing. How can I plot the solution...

local Ft, Fx,Fy,x,y, c1,c2,c,j,k,i,u;
Ft := floor(Tf/dt)+1;
Fx := floor(1/dx)+1;
Fy := floor(1/dy)+1;
c1 := (c*dt/dx)^2;
c2 := (c*dt/dy)^2;
#Initial position
for j from  1 to Fx do  
   for k from 1 to Fy do
  u[j,k,1] := f(-dx + j*dx, -dy + k*dy) -dt*g(-dx+j*dx, -dy + k*dy);
   u[j,k,2] := f(-dx + j*dx, -dy +k*dy);
end do;
end do;

# Boundary values j=1
for i from  1 to Ft +1 do
      for k from 1 to Fy do
         u[1,k,i] := 0;
      end do;
      for k from 1 to Fy do
         u[Fx,k,i] := 0;
      end do;

     for j from 1 to Fx do
         u[j,1,i] := 0;
      end do;
   for j from 1 to Fx do
         u[j,Fy,i] := 0;
      end do;
end do;

for i from 3 to Ft + 1 do
  for j from 2 to Fx-1 do
    for k from 2 to Fy-1 do
u[j, k, i] := 2*u[j,k,i-1] - u[j,k,i-2] + c1*(u[j+1,k,i-1]-2*u[j,k,i-1]+u[j-1,k,i-1]) + c2*(u[j,k+1,i-1] - 2*u[j, k, i-1] + u[j,k-1, i-1]);
end do;
end do;
end do;
return Matrix([seq([seq([seq(u[i,j,k],i=1..Fx)],j=1..Fy)],k=1..Ft)]):
end proc:

## Try the test
f:=(x, y) -> x (x - 1) y (y - 1)
g:=(x, y) -> 0;

I am trying to write a procedure that have the following input:  expr, xdata,ydata. [dependent variables list]

I want a procedure to calculate Rsquare following the method described in


But I want the proc to take any abitary function and be able to identify the  dependent can I approach it? what function can I use to match [dependent variable list] in expr??





It is well known that  operating in  geometry  package when setting objects symbolically some inconveniences arise. The error occurs if you do not set limits on the parameters. I wrote the procedure for finding center and radius of the circumscribed circle, devoid of drawbacks:



local x1, y1, x2, y2, x3, y3, n;

uses geometry;

x1,y1:=op(a); x2,y2:=op(b); x3,y3:=op(c);


point(A,a), point(B,b), point(C,c);

if type(n,realcons) then triangle(T,[A,B,C]); circumcircle(cc,T,'centername'=OO);

return [coordinates(OO),radius(cc)]  else assume(n<>0);

triangle(T,[A,B,C]); circumcircle(cc,T,'centername'=OO);

simplify([coordinates(OO),radius(cc)]); fi;

end proc:


At initial startup procedure works correctly:

Circumcircle([x1,y1], [x2,y2], [x3,y3]);



But if you change the arguments of the procedure, an error occurs:

Circumcircle([x1,1], [x2,y2], [x3,y3]);


But if you run the procedure again with the same arguments, the error disappears:

Circumcircle([x1,1], [x2,y2], [x3,y3]);


What is the reason?



Dear the specialst in programmation, please I need to put a conditon if in this procedure with this form: Can you correct me this code please. Thank you.

local bb,
for i= from 1 to N do


if bb[i]<=2 then y:=3*x[i] else y::=x[i]^2end if ;

end do:

end proc



How do i write Hassell equation: Xn+1=(Ro*Xn)/(1+Xn)^4 in maple? I need that specific syntax as a procedure with three inputs (Xo, Ro, n), so it will calculate X up to n (X1,X2, X3 and so on up to 50). I already try it and i used for loop but it doesn't work. Any ideas? Thank you.


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;



Dear all


Please, I need you help, to make a simple procedure with two output.  I try this simple code :

test:= proc(a,b)

local variable .....;

for i from 1 to 10 do


end do

retur  fff;

return ggg;

end proc

Then I do  : test(a,b) but I get only ggg and not fff


Any help please


A large procedure I made caused me some problems. I finally found the source of the problem.
There seems to be some interaction between the end of parameters marker, $, and the elementwise operation ~.

Consider these 3 versions of essentially the same procedure:

Q1:=proc(Var::list,$) local n;
       subs(Var=~[seq(1..n)],var); #Elementwise
  end proc;
end proc:
Q1([x,y]); #Doesn't work : "invalid expression"
Q2:=proc(Var::list,$) local n;
      subs(zip(`=`,Var,[seq(1..n)]),var); # zip
  end proc;
end proc:
Q2([x,y]); #No problem
Q3:=proc(Var::list) local n; #No end of parameters marker $
       subs(Var=~[seq(1..n)],var); # Elementwise
  end proc;
end proc:
Q3([x,y]); # No problem
lprint(Q3([x,y])); #Curious output involving ` $`
#A fourth procedure in which the output is not a procedure works:
Q4:=proc(Var::list,$) local n;
end proc:

Does anybody have any comments? Is it a bug?



so we have to Write a maple function with -> that takes an integer N and a boolean function

F: {(i,j) l 0<= i,j<= N} -> {true,false} 

and returns a list containing all [i,j] such that F(i,j). A procedure that does this
would be

proc(N,F) local i, j, RV;
for i from 1 to N do for j from 1 to N do
if F(i,j) then RV:=RV,[i,j] ; end if ;
end do ; end do ;
return RV ;
end proc ;

The problem is to do this inline, i.e. you have to write
(i,j)-> ...


please help...

1 2 3 4 5 6 7 Last Page 1 of 14