美文网首页
Maple转Python

Maple转Python

作者: Neural_PDE | 来源:发表于2021-11-10 09:40 被阅读0次
    ff := 6 i0_(x) u alpha + 3 u i0_(y) beta + 3 i0_(x) v beta
    
          + i0_i1i2i3 alpha + i0_i1i2i3 beta + i0_(t)
    with(CodeGeneration);
    Python(ff);
    

    例子

    For a description of the options used in the following examples, see CodeGenerationOptions.
    with(CodeGeneration);
    Translate a simple expression and assign it to the name 
                                  "w"
    
     in the target code.
    Python(-2*x*z + y*z + x, resultname = "w");
    w = -2 * x * z + y * z + x
    Translate a list and assign it to an array with the name 
                                  "w"
    
     in the target code.
    Python([[x, 2*y], [5, z]], resultname = "w");
    w = [[x,2 * y],[5,z]]
    Translate a computation sequence.  Optimize the input first.
    cs := [s = 1.0 + x, t = ln(s)*exp(-x), r = exp(-x) + x*t];
    Python(cs, optimize);
    s = 0.10e1 + x
    t1 = math.log(s)
    t2 = math.exp(-x)
    t = t2 * t1
    r = x * t + t2
    Declare that 
                                  "x"
    
     is a float and 
                                  "y"
    
     is an integer. Return the result in a string.
    s := Python(x + y + 1, declare = [x::float, y::'integer'], output = string);
                          s := "cg = x + y + 1
    
                            "
    
    
    Translate a procedure.  Assume that all untyped variables have type integer.
    f := proc(x, y, z) return x*y-y*z+x*z; end proc:
    Python(f, defaulttype = integer);
    def f (x, y, z):
        return(y * x - y * z + x * z)
    Translate a procedure containing an implicit return.  A new variable is created to hold the return value.
    f := proc(n)
      local x, i;
      x := 0.0;
      for i to n do
        x := x + i;
      end do;
    end proc:
    Python(f);
    def f (n):
        x = 0.0e0
        for i in range(1, n + 1):
            x = x + i
            cgret = x
        return(cgret)
    Translate a linear combination of hyperbolic trigonometric functions.
    Python(2*cosh(x) - 7*tanh(x));
    cg0 = 2 * math.cosh(x) - 7 * math.tanh(x)
    Translate a procedure with no return value containing a printf statement.
    f := proc(a::integer, p::integer)
      printf("The integer remainder of %d divided by %d is: %d\n", a, p, irem(a, p));
    end proc:
    Python(f);
    def f (a, p):
        printf("The integer remainder of %d divided by %d is: %d\n", a, p, a % p)
    Translate a procedure involving linear algebra.
    detHilbert := proc(M, n :: posint) uses LinearAlgebra;
       return Determinant( HilbertMatrix( n ) );
    end proc:
    Python(detHilbert);
    import numpy.linalg
    import scipy.linalg
    
    def detHilbert (M, n):
        return(numpy.linalg.det(scipy.linalg.hilbert(n)))
    Notice that by default CodeGeneration translates LinearAlgebra[Determinant] to the Python function numpy.linalg.det.  However as the Python scipy.linalg library is already being used in the above example and also contains a implementation of the determinant, it may be simpler to use that translation.  This may be achieved using the libraryorder option to indicate that scipy.linalg is preferred over numpy.linalg.
    Python(detHilbert, libraryorder = ["scipy.linalg", "numpy.linalg"]);
    import scipy.linalg
    
    def detHilbert (M, n):
        return(scipy.linalg.det(scipy.linalg.hilbert(n)))
    Compatibility
    • The CodeGeneration[Python] command was introduced in Maple 18.
    For more information on Maple 18 changes, see Updates in Maple 18.
    

    相关文章

      网友评论

          本文标题:Maple转Python

          本文链接:https://www.haomeiwen.com/subject/cfybzltx.html