MaplePrimes Posts

MaplePrimes Posts are for sharing your experiences, techniques and opinions about Maple, MapleSim and related products, as well as general interests in math and computing.

Latest Post
  • Latest Posts Feed
  • Mechanics of Materials toolbox for Maple: 10 (or bit more :)) free licences for Maple fans.

    For students, engineers and simply creative fans of Maple.

    If you are concerning mechanics of materials or structural mechanics, please feel free to

    send Hardware ID code via e-mail: support@orlovsoft.com after downloading from

    http://www.orlovsoft.com/download.html

    and installing MM Toolbox for Maple.

    (Maple 32 bit only)

    Thanks to Maplesoft for analytic power

    MapleSim 6.1 is now available.  MapleSim 6.1 provides improved performance, more tools for programmatic analysis and custom components, connectivity enhancements, and more.  Here’s a sampling:

    • For all models, the model pre-processing phase is more efficient, so your simulation results appear sooner.
    • New API commands make it easier to analyze the parameters in your model programmatically. These commands can take advantage of the full...

    Given a figure in the plane bounded by the non-selfintersecting piecewise smooth curve. Each segment in the border defined by the list in the following format (variable names  in expressions can be arbitrary):

    1) If this segment is given by an explicit equation, then  [f(x), x=x1..x2)]

    2) If it is given in polar coordinates, then  [f(phi), phi=phi1..phi2, polar] , phi is polar angle

    3) If the segment is given parametrically, then  [[f(t), g(t)], t=t1..t2]

    4) If several consecutive segments or entire border is a broken line, then it is sufficient to set vertices the broken line [ [x1,y1], [x2,y2], .., [xn,yn]]

     

    The first procedure symbolically finds perimeter of the figure. Global variable  Q  saves the lengths of all segments.

    Perimeter := proc (L) #  L is the list of all segments of the border

    local i, var, var1, var2, e, e1, e2, P;

    global Q;

    for i to nops(L) do if type(L[i], listlist(algebraic)) then P[i] := seq(simplify(sqrt((L[i, j, 1]-L[i, j+1, 1])^2+(L[i, j, 2]-L[i, j+1, 2])^2)), j = 1 .. nops(L[i])-1) else

    var := lhs(L[i, 2]); var1 := min(lhs(rhs(L[i, 2])), rhs(rhs(L[i, 2]))); var2 := max(lhs(rhs(L[i, 2])), rhs(rhs(L[i, 2])));

    if type(L[i, 1], algebraic) then e := L[i, 1]; if nops(L[i]) = 3 then P[i] := simplify(int(sqrt(e^2+(diff(e, var))^2), var = var1 .. var2)) else

    P[i] := simplify(int(sqrt(1+(diff(e, var))^2), var = var1 .. var2)) end if else

    e1 := L[i, 1, 1]; e2 := L[i, 1, 2]; P[i] := abs(simplify(int(sqrt((diff(e1, var))^2+(diff(e2, var))^2), var = var1 .. var2))) end if end if end do;

    Q := [seq(P[i], i = 1 .. nops(L))];

    add(Q[i], i = 1 .. nops(Q));

    end proc:

     

    The second procedure symbolically finds the area of the figure. For correct work of the procedure, all the segments in the list L  of border must pass sequentially in clockwise or counter-clockwise direction.

    Area := proc (L)

    local i, var, e, e1, e2, P;

    for i to nops(L) do

    if type(L[i], listlist(algebraic)) then P[i] := (1/2)*add(L[i, j, 1]*L[i, j+1, 2]-L[i, j, 2]*L[i, j+1, 1], j = 1 .. nops(L[i])-1) else

    var := lhs(L[i, 2]);

    if type(L[i, 1], algebraic) then e := L[i, 1];

    if nops(L[i]) = 3 then P[i] := (1/2)*(int(e^2, L[i, 2])) else

    P[i] := (1/2)*simplify(int(var*(diff(e, var))-e, L[i, 2])) end if else

    e1 := L[i, 1, 1]; e2 := L[i, 1, 2]; P[i] := (1/2)*simplify(int(e1*(diff(e2, var))-e2*(diff(e1, var)), L[i, 2])) end if end if

    end do;

    abs(add(P[i], i = 1 .. nops(L)));

    end proc:

     

    The third procedure shows this figure. To paint the interior of the boundary polyline approximation is used. Required parameters: L - a list of all segments of the border and C - the color of the interior of the figure in the format color = color of the figure. Optional parameters: N - the number of parts for the approximation of each segment (default N = 100) and Boundary is defined by a list for special design of the figure's border (the default border is drawed by a thin black line). The border of the figure can be drawn separately without filling the interior by the global variable Border.

    Picture := proc (L, C, N::posint := 100, Boundary::list := [linestyle = 1])

    local i, var, var1, var2, e, e1, e2, P, Q, h;

    global Border;

    for i to nops(L) do

    if type(L[i], listlist(algebraic)) then P[i] := op(L[i]) else

    var := lhs(L[i, 2]); var1 := lhs(rhs(L[i, 2])); var2 := rhs(rhs(L[i, 2])); h := (var2-var1)/N;

    if type(L[i, 1], algebraic) then e := L[i, 1];

    if nops(L[i]) = 3 then P[i] := seq(subs(var = var1+h*i, [e*cos(var), e*sin(var)]), i = 0 .. N) else

    P[i] := seq([var1+h*i, subs(var = var1+h*i, e)], i = 0 .. N) end if else

    e1 := L[i, 1, 1]; e2 := L[i, 1, 2]; P[i] := seq(subs(var = var1+h*i, [e1, e2]), i = 0 .. N) end if end if

    end do;

    Q := [seq(P[i], i = 1 .. nops(L))];

    Border := plottools[curve]([op(Q), Q[1]], op(Boundary));

    [plottools[polygon](Q, C), Border];

    end proc:

     

    Examples of works:

    Example 1.

    L := [[sqrt(-x), x = -1 .. 0], [2*cos(t), t = -(1/2)*Pi .. (1/4)*Pi, polar], [[1, 1], [1/2, 0], [0, 3/2]], [[-1+cos(t), 3/2+(1/2)*sin(t)], t = 0 .. -(1/2)*Pi]];

    Perimeter(L); Q; evalf(`%%`); evalf(`%%`); Area(L); 

    plots[display](Picture(L, color = grey, [color = "DarkGreen", thickness = 4]), scaling = constrained);

    plots[display](Border, scaling = constrained);

    Example 2.

    The easiest way to use this  procedures for polygons.

     L := [[[3, -1], [-2, 2], [5, 6], [2, 3/2], [3, -1]]];

    Perimeter(L), Q;

    Area(L);

    plots[display](Picture(L, color = pink, [color = red, thickness = 3]));

     

     

    Example 3 (more complicated )

    3 circles on the plane C1, C2 and C3 defined by the parametric equations  of their borders. We want to find the perimeter, area, and paint the figure  C3 minus (C1 union C2) . For details see attached file. 

    C1 := {x = -sqrt(7)+4*cos(t), y = 4*sin(t)};

    C2 := {x = 3*cos(s), y = 3+3*sin(s)};

    C3 := {x = 4+5*cos(u), y = 5*sin(u)};

    L := [[[-sqrt(7)+4*cos(t), 4*sin(t)], t = -arccos((1/4)*(7+4*sqrt(7))/(sqrt(7)+4)) .. -arctan((3*(-23+sqrt(7)*sqrt(55)))/(23*sqrt(7)+9*sqrt(55)))], [[3*cos(s), 3+3*sin(s)], s = -arctan((1/3)*(9+sqrt(7)*sqrt(55))/(-sqrt(7)+sqrt(55))) .. arctan((1/3)*(-9+4*sqrt(91))/(4+sqrt(91)))], [[4+5*cos(u), 5*sin(u)], u = arctan((3*(41+4*sqrt(91)))/(-164+9*sqrt(91)))+Pi .. arctan(3/4)-Pi]];

    Perimeter(L), Q; evalf(%);

    Area(L); evalf(%)

     A := plot([[rhs(C1[1]), rhs(C1[2]), t = 0 .. 2*Pi], [rhs(C2[1]), rhs(C2[2]), s = 0 .. 2*Pi], [rhs(C3[1]), rhs(C3[2]), u = 0 .. 2*Pi]], color = black);

    B := Picture(L, color = green, [color = black, thickness = 4]);

    plots[display](A, B, scaling = constrained);

    More examples and all codes see in attached file

    Plane_figure.mw

    Last week we added a new feature to MaplePrimes that provides the ability to sort the answers to a question by votes (default setting), or by date. Based on a few of your suggestions to that post, we have enhanced this feature today.

    First, you now will notice that there are three options for sorting:

    • Sort by votes
    • Sort by date (oldest first)
    • Sort by date (newest first)

    quandl (http://www.quandl.com/) has a great feature called superset (you need a free acount)
    where the user can combine different data variables (4 000 000 to choice from) into a big
    dataset (csv file) that can be downloaded from a permenant web url. This a great data feed
    for maple. The problem is however that you have to use stringtools (quite messy) in maple to
    extract the data. Hence, it would be great to have a simple procedure that only needs the web

    I can confirm the bug is present in Opera/Firefox/Chrome and unpredictable. I just successfully posted a reply elsewhere but got a failure here. I'll try again and if it fails will post by "branching out", which seems to work every time.

    Consider a signal which is a real sine series, f(x)=2*sin(2*Pi*x) + 5*sin(2*Pi*6*x) + 9*sin(2*Pi*11*x).

    Let F(w) be its Fourier transform. Answer F(w) is purely complex and expressed in terms of symbol Dirac.

    Maple "plot" fails.

    Plots of impulse trains like F(w)=sqrt(Pi)*I*(2*Dirac(w-Pi)+4*Dirac(w-4*Pi)) involve user intervention. Maple won't plot such expressions, because they are DISTRIBUTIONS (not FUNCTIONS).

    Try plotting F(w) to see the engine's uninformative error message....

    As others have noticed, after the update MaplePrimes is broken. I was not able to reply to the answers I got to my recent question about bookmarking. If someone listens: I am using Firefox 19.0 on Mac OS X 10.6.8.

    I don't know how others feel, but if this is not addressed I am not sure how much more I will post here. MaplePrimes has been a vital forum for support for me and I have profited from all your help. If there is no more replying and discussion, this place has...

    Since it is not possible for me to reply directly in that new Maple Primes:
    I branched. Feel free to re-join for a reasonable structure. What a mess.

    http://www.mapleprimes.com/questions/145527-Is-This-Matrix-Primitive

     

    I am rusty on such (may be it is 'obvious' via Lie theory). Your group is just the
    group of invertible matrices over the integers (this follows from algebra). And as

    For the last few releases of Maple, we have been adding features to take advantage of multi-core processors.  Most of this work has focused on particular algorithms or on tools that allow users to author their own parallel code.  Although this was very useful for those users who were able to use those tools, many users did not see a performance improvement.  To help all users we need to integrate parallelism into the core algorithms of Maple.  In Maple 17 we have taken the first step towards general parallelism in the core algorithms by implementing a parallel garbage collector.

    I'm branching-off because I can't currently add a comment to the OP nor a reply to the follow-up messages (mapleprimes update bug so far confirmed with Opera, Firefox, and Chrome on both Windows7x64 and kUbuntu12). Mapleprimes administrators: feel free to move this post to where it belongs.

    I think this is an awesome demonstration of Maple's plotting abilities. The first thing that comes to mind is that this worksheet could be used to promote the new Maple Player. 

    @Carl Love 

    Same here, I've tested Opera and Firefox. I haven't bothered trying other browsers because if it doesn't work with Firefox, the most popular browser, it may be considered broken.

    But I can branch out alright...

    Editing:

    @Carl Love 

    I made this new thread because I cannot make replies in the original thread.

    Now we turn to an example of the usage of the Dragilev method with Maple. Let us consider the curve
    from
    http://www.mapleprimes.com/questions/143454-How-To-Produce-Such-Animation .

    Its points can be found by the Dragilev method as follows.

     

    This is an effective method of solving systems of  N nonlinear and nonalgebraic equations in N+1 real-valued variables:
    F(x)=0, where F=(f1,f2,..., fN) and x=(x1,x2,...,xN+1). (1)               
                                                                      
    All the functions fj(x) are assumed to be continuously differentiable in some domain D in R^(N+1).
    In general, such systems have an infinite set of the solutions which form a space curve in R^(N+1).
     The Optimization and DirectSearch solvers have difficulties with it.
    The idea of the Dragilev method consists in the following. Let us assume that the space curve (1) can be parametrized through the  parameter t
    which can be taken as the  length of the arc (for example, see http://en.wikipedia.org/wiki/Curve ).
    That presentation provides to avoid the difficulties associated with self-intersections and singularities.
    We will obtain the coordinates of the points of the space curve under consideration as the solution
    of the Cauchy problem for certain system of ODEs. We put the coordinates of a known point of (1) as the initial conditions.
    The system of ODEs is obtained by the differentiation  with respect to t:

    We treat (2) as a linear system in the derivatives diff(xj(t),t),j=1..N+1. In general, its solutions form an infinite set.
    We choose the  solution of (2) as follows. We put diff(xN+1)= -Determinant(Matrix(n, (i,j)->diff(fi(x),xj))).
    This is one of the key points of the method under consideration.
    Next, we find diff(xj,t), j=1..N. At last, we numerically solve that system of ODEs, obtaining an array of points.
     The general case of a system of N nonlinear  equations in N variables
    G(y)=0, where y=(y1, y2, ..., yN), G=(g1,g2,..., gN) (3),
    is reduced to the previous one by homotopy. We choose a point y0= (y01, ..., y0N) and consider the system
    G(y)- v*G(y0)=0 (4)
    of N equations in N+1 variables (v is taken as  a dummy variable). Changing v from 1 to 0, we arrive to (3).
    We don't consider any mathematical justification of the above pattern here as that does not deal with Maple.
    I would like to point out the sites

    http://forum.exponenta.ru/viewtopic.php?t=3892 and
    http://forum.exponenta.ru/viewtopic.php?t=11284 , where the Dragilev method is discussed. Unfortunately, in Russian.
    The googling of "Dragilev" and "Draghilev" does not produce many info.
    A short biographical sketch: Dr. Anatoliy Vladimirovich Dragilev (1923 - 1997) was a professor at  Rostov State University in Russia.
    See his articles here: http://www.mathnet.ru/php/person.phtml?&personid=32359&option_lang=eng and
    http://www.zentralblatt-math.org/zmath/en/search/?q=au%3A%22dragilev%2C%20a*%20v*%22 .
     

    I am very grateful to Professor Alexey B. Ivanov, who is an enthusiast of the Dragilev method, for the very useful discussions.

    First 98 99 100 101 102 103 104 Last Page 100 of 306