QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 8289|回复: 3
打印 上一主题 下一主题

[代码资源] Matlab调用Maple的GlobalSolve?(全局优化)

[复制链接]
字体大小: 正常 放大
apple91        

2

主题

4

听众

72

积分

升级  70.53%

该用户从未签到

跳转到指定楼层
1#
发表于 2009-9-8 11:08 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
我想用Matlab调用Maple的全局优化函数GlobalSolve,
8 T6 k8 H$ n. g4 N+ {Matlab语句应该怎么写,7 R& g  V3 P0 H! W% T' S
大家有没有谁试过这个问题。
) O6 y; d0 d# C) ?, u/ w' E谢谢大家。
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
madio        

3万

主题

1311

听众

5万

积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    如何在matlab中调用maple
    9 Q8 K+ o9 r5 s3 {# _- {% c0 k! H4 _. i! q, q3 @
    (不用安装maple软件就可调用)
    1 J, f( G+ {+ ]9 g9 k$ D5 i* z$ g0 S/ v" {+ `
    方法1:   
    * Q- [2 B" i. {( F9 v$ p' O5 K9 Q9 c4 n9 {4 I
    maple(’maplestatement’)
    * z+ m( b. r+ T/ e* n2 i
    ) C" p" m. l- v  ]( a2 W- r1 c其中maplestatement 是完整的maple语句,由一条或几条命令组成,必须符合maple 的语法 2 P& e5 c2 a2 ^& C0 D( S
    2 s1 V+ R+ {% Y0 ^
    方法2:
    ) b/ e4 e- L5 R" n2 e
    1 X; f9 l. ^) {5 o+ T) S1 M' Xmaple(’function’,arg1, arg2,…)
    ( A9 r/ ^' s' c# V  I- q% `. j2 ?" o3 J- [6 b
    其中function为maple中的函数名称,arg1, arg2,…是函数function所用的参数。 $ _$ g+ e: J; m& I* U
    & v  O4 ~6 R6 a6 [8 D; i) F2 q
    注:如果方法1行不通,可尝试方法2(个人经验)。
    & J7 d3 S8 W  `. L: u8 w3 K) N( Z, n$ ^# O! T
    基本代数部分
    $ {$ L6 K1 }" I6 M  ?8 D9 V
    5 w7 m6 g$ e& f* M( V0 y: D如何用matlab求阶乘 . h8 Y  n3 J/ \6 O" S3 g$ ?: f; b

    6 i3 e. Q0 @+ r- T2 U5 C4 Sfactorial(n) 求n的阶乘 ! N/ p! ?! h$ G. \4 r4 g. b4 n
    , b  J1 n* b0 r1 z$ b" |1 k( s
    如何用matlab配方  + g; M5 D0 a$ o3 T

    & O& |" u: w; O+ i  \没有发现matlab有这一命令,不过我们可以调用maple的命令,调用方法如下:
    3 Y8 `' o- m5 w/ o, H/ H6 p6 A, O/ l8 U2 U$ e: W7 K
    首先加载maple中的student函数库,加载方法为:maple(’with(student)’)
    # Y" h& Z( y* |
    6 f  N% B' z& e! K5 S然后运行maple中的配方命令,格式为:
      Z( ~" v. f! g' c. K. V1 a" [( @+ A3 g  ^! r
    maple(’completesquare(f)’)       把f配方,其中f为代数表达式或代数方程
    * r1 J; U; j2 ]& S& U* r2 E9 \1 D+ O) y4 G, u+ r+ o7 z
    maple(’completesquare(f,x)’)       把f按指定的变量x配方,其中f同上
    ( n* V$ u5 m0 V
    4 j/ |4 c0 r; K5 Pmaple(’completesquare(f,{x,y,...})’)    把f按指定的变量x,y,...配方 ( L4 \8 D9 Z9 O& y

    7 j- q* F& A* P+ b( k/ R! tmaple(’completesquare(f,[x,y,...])’)     把f按指定的变量x,y,...配方,
    - C4 R2 y9 E0 c+ [& G5 f9 N- ?9 f7 u: {; c' o( r& h, W
    如何用matlab进行多项式运算
    - i1 ~, b" w" d" P8 d$ q
    . T, ]1 P* {1 Q; H! p& Q$ D9 t' V(1)       合并同类项  
    7 f2 {  ^+ `4 h* a8 S" T: \
    : \$ r' i) P: u# isyms 表达式中包含的变量     collect(表达式,指定的变量) 3 B  M( i2 z% C; k2 Z+ C5 i9 \
    6 C/ G  C/ v& a, p  ?) C4 E4 ^
    (2)因式分解 
    9 P- N9 T1 r/ N% ^- |
    ! i) l, j% h9 z, a# w# Q' nsyms 表达式中包含的变量     factor(表达式) # |8 I9 w8 U: a) D% E! s7 a

    3 S* I0 C- ?- e$ U(3)展开 0 d8 u' `# c  v
    " E  J/ j0 ~0 B/ j7 ^
    syms 表达式中包含的变量     expand(表达式)
    $ d  o9 w9 x+ j2 _1 ?+ z/ E' A2 @3 n$ e& Y$ [
    我们也可在matlab中调用maple的命令进行多项式的运算,调用格式如下:
      P5 S2 ^5 e7 w: s4 Q: [4 B$ D" @. A' ^7 {' Q' Y* |3 \
                                 maple(’maple中多项式的运算命令’)
    , v% f, r3 i  E& }4 x- p6 J8 ~- i- W4 x6 J
    如何用matlab进行分式运算 
    / E" H( `, |+ e' W( C# L2 I0 n" L( D+ h# s, }: G. ~0 U
    发现matlab只有一条处理分式问题的命令,其使用格式如下:
    9 q# ?) O/ _2 G" K2 D9 o' J* f# S6 f; L  z8 b% Z9 J
    [n,d]=numden(f)    把符号表达式f化简为有理形式,其中分子和分母的系数为整数且分子分母不含公约项,返回结果n为分子,d为分母。注意:f必须为符号表达式
    6 U6 `/ E- p. O/ n1 i* w' e* T! t# ?7 ~
    不过我们可以调用maple的命令,调用方法如下:
    # @$ Y  B9 Q/ f5 V2 w, D# Q& X! {' ~  @% i; Q- F0 I
    maple(’denom(f)’)
    4 [! p# M( |0 r' Y 提取分式f的分母
    ; w* Z$ d2 ]: d0 z# q * g# d5 Y* G/ u! S6 l$ H+ K
    maple(’numer(f)’) / l# V9 d& ~+ i* \0 C# G
    提取分式f的分子 # W6 y. a: x1 y0 l9 k

    , `& \4 ?; k" ]maple(’normal(f)’ ) 1 p, T  j# j2 q
    把分式f的分子与分母约分成最简形式
    8 ], r  s- w6 `4 h# v# \ 9 U1 m9 ~: m- a3 l; O; ~  V; O
    maple(’expand(f)’)
      v7 v5 b" W2 E+ M$ d7 n 把分式f的分子展开,分母不变且被看成单项。
      Q6 L* {( h! ]2 z. M' G9 ^$ E
    " ^& z2 I; I  v2 A, imaple(’factor(f)’)
    - B" P$ f* H8 h/ L7 g 把分式f的分母和分子因式分解,并进行约分。, R& \  L; M2 e1 S0 j
    5 B0 ^: C  `+ g5 R* F

    6 O: S0 q2 T5 d/ h* ]0 h如何用Matlab进行因式分解 0 O) r$ \% [  N, w2 v3 N& q: q( y% K

    ! b; ]6 W3 C; K# {$ o1 C, Rsyms 表达式中包含的变量           factor(表达式) ; v0 A0 _; Y2 \! X, C* G
    $ A+ Z7 `; [- K6 @- R& ?
      如何用Matlab展开
    . K1 {/ @! O. {7 ]$ j; d! k4 E. T3 H7 I) x# C8 J- y8 u
    syms 表达式中包含的变量        expand(表达式)  # E" S8 S! k  V) m0 }6 Y4 E) o; Q
    2 X9 B. j5 f6 `  U, d# K% C
     如何用Matlab进行化简
    3 k4 Z" }: h' i) A, l$ D
    " }* k$ P* w: q9 b, e, Q: P+ e% esyms 表达式中包含的变量     simplify(表达式)  6 K' C8 z: M3 X8 R+ x1 ]
    : Y, Z7 p3 a! Z6 b7 ~
    如何用Matlab合并同类项   z2 k; o; J: s2 [# w+ F
    # p& ]$ z4 _6 Q5 K. B
    syms 表达式中包含的变量     collect(表达式,指定的变量)
    2 `1 C. {6 p+ v5 \* X: u- K! C3 b
    0 I, S# s  B# T1 l' x+ o* W如何用Matlab进行数学式的转换  5 r7 Z- B# }$ x

    ! V2 o6 ~* B1 u0 |  n5 r调用Maple中数学式的转换命令,调用格式如下:
    , j( }% z( i2 X) p5 G  A# J
    2 I* g! I+ {1 O# Y& Tmaple(‘Maple的数学式转换命令’)
    ; d3 m2 W8 N) H  |7 T4 Z: g
    + T6 A0 S5 U" l! L3 n即:maple(‘convert(表达式,form)’)     将表达式转换成form的表示方式
    3 g/ p& q3 d5 @( y
    2 C* y" K4 W5 S2 ]! {; V1 qmaple(‘convert(表达式,form, x)’) 指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用)
    9 w- ~6 ]7 V# S: g, z& A8 @1 r  x: t! |" Y9 V$ X; c
    如何用Matlab进行变量替换 7 o; Y; {. T7 V* n
    ( L/ |3 T; B, K+ o; G: L
    syms 表达式和代换式中包含的所有变量    subs(表达式,要替换的变量或式子,代换式) 
      H8 h  d: }  o; c
    : X) D/ {* ~# h. n( C$ d: \ 如何用matlab进行复数运算  " B7 a$ l- q7 c7 \4 C+ u

    , F' r% ~3 n- |6 i5 ha+b*i 或 a +b*j
    7 w  [) i4 V* K5 e* \: e 表示复数a+bi 或 a+bj
    % u) N! w9 C+ N- ~$ v
    6 Q5 x' D5 l2 A/ w! {, R2 |/ Ireal(z)
    ( X+ T8 J7 {# r! v: D 求复数z的实部 / L" ^. |) q6 c! D

    " g1 @, p1 Q' Q: ?4 ?1 D$ kimag(z) * s1 v7 j! ^" W% p
    求复数z的虚部
    / G0 o7 n! D; A' ~6 [8 I
    9 \# G+ \' ~: n$ {abs(z) ( x1 [4 ], v# R2 |. ]- W
    求复数z的模 # F7 a+ J3 }" ^8 q9 s5 _

    # r7 X; `( s7 [$ `$ F; O8 ]angle(z)
    $ o4 u1 ?. c5 l 求复数z的辐角,
      m5 a: T0 C; h" C! L
    $ X1 s$ g& X3 k! c1 nconj(z)
    3 J* y+ f+ Y+ j8 h 求复数z的共轭复数 # i) }0 f+ O# v' T5 y/ T' j
    ( [. U& i4 z: G$ k
    exp(z) - [) p1 P" w8 M6 W1 x: i
    复数的指数函数,表示e^z
    * t( M0 V, F1 o
    ; B( w2 r/ D8 c  q0 m8 {9 c3 ]) x' N4 S! M" s; {+ e0 H
    如何在matlab中表示集合 ' D# m# t2 D  C
    - g" o' R1 k  ?, C5 d+ y
    [a, b, c,…]  表示由a, b, c,…组成的集合    (注意:元素之间也可用空格隔开) , d$ @9 f4 V8 N( G4 ~

    & L. ~# G- T6 N# W9 W! Hunique(A)   表示集合A的最小等效集合(每个元素只出现一次) 3 C- c  D3 k+ q2 Q' Y

    ' f, V: \9 c9 J6 l5 V9 }* a4 ]也可调用maple的命令,格式如下:
    . R3 ^5 F9 s3 ^7 D$ m( c0 r% F) Z& i0 L0 [0 \* g
    maple('{a, b, c,…}')                     表示由a, b, c,…组成的集合 : @% L3 k8 |( H% N! {, j* J

    # O  F. u5 R) e# ]- h: u1 m! g4 z5 W下列命令可以生成特殊的集合: + w/ m$ ?# }% R; q2 c5 C* |1 Y
    " t8 a7 _1 v$ W9 ]7 Z- }8 o. {
    maple(‘{seq(f(i),i=n..m)}’)               生成集合{f(n), f(n+1), f(n+2), … , f(m)}
    . o" O$ Z+ |; o" D7 c/ {( `
    2 g# N) q& q0 a8 O0 @8 B如何用Matlab求集合的交集、并集、差集和补集 
      M+ t. {+ _, |
    6 w$ Q7 C. H) C4 I) Cunion(A,B)
    0 N5 p7 H& B1 Z 求集合A和B的并集
    ; B+ y: n" @( L- `, r- e+ e + X' j+ U6 E0 t) S- t
    intersect(A,B)
    7 g6 b% X( M! H, I9 ]* f 求集合A和B的交集
    . i; H" E2 j  C5 X 3 L. F% T( D2 g: g6 T, g
    setdiff(A,B) : x) |2 A0 d& {) D- @  S; s
    求集合A和B的差集A-B 5 K  H4 S2 C. ]3 r" t

    4 o% V1 h6 I* g2 [1 v1 ksetdiff(U,A)
    4 k! k( ^8 b7 a' a- t; |! h( W 求集合A关于全集U的补集
    6 C2 c# ^' X/ C2 E" U. p- u! q. ^
    # @. V& F6 x1 \+ L8 F# o+ F* G8 T& P% a8 U- n" S
    我们也可以调用Maple的相应功能,调用方法如下:
    9 x* C7 a6 e) W7 }% z: w' [- c7 d6 T! ?; d5 z
    maple('用Maple求集合的交集、并集、差集和补集的命令 ')
    + a: o8 z1 N! P; T$ x0 h, T2 K$ a0 b! ]+ x4 m! Z% O
    具体地说,共有下列几个调用命令: 1 `& k, Q! ^4 x" }

    " V/ ^" X) s: R& N  ~( kmaple( 'A union B' )                                          求集合A和B的并集
    $ h( k6 M! z9 ~1 _( M( d' W9 m: q* K8 Z6 D, W6 P
    maple( 'A intersect B ' )                                   求集合A和B的交集 , h1 O& a# W, N" [! _9 h

    5 ~1 X# {9 R" @# W! U* Jmaple('A minus B ' )                                      求差集A-B
    + [4 E5 ^4 S! Q) d# X! Z$ _, p
    4 y' g6 ~: a; E) Z: J2 ~: J5 tmaple( '全集I minus A ' )                                求集合A关于全集I的补集 . ~+ u9 Y$ ~( M3 |0 y

    : `& A$ C3 \5 F; k如何用matlab排序 1 ^+ f+ {# }/ b! h. S

    ! W8 Y2 q5 p0 Tsort(v)                            将向量v的元素从小到大排列(升序排列)
    回复

    使用道具 举报

    madio        

    3万

    主题

    1311

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    Symbolic Math Toolbox   maple 9 D6 F, K1 |" s5 X6 q

    2 X6 Q$ X$ Y% c, E9 l. ~0 l( q1 l
    # N8 f5 P, X% B. LAccess Maple kernel
    * Y6 n8 @3 r4 F! B' Z" d" i; c- ?2 w5 I% P7 s
    Syntax6 R0 ?$ Y0 T( `& y
    + W5 V% c( m* |% R
    r = maple('statement')
    / i3 |* k4 ^& E# I- Hr = maple('function',arg1,arg2,...)
    . F5 s# f! O& M3 N- w[r, status] = maple(...)4 [) v# b3 h& b& A+ [$ |% I9 `
    maple('traceon') or maple trace on
    0 @" Z+ Q4 ]2 v5 y4 @6 V* M5 Nmaple('traceoff') or maple trace off  J) S4 f1 n6 E: b8 Y

    " ]2 F! m$ w4 r4 p7 i* ~5 I' K8 U7 B5 r! h

    6 [$ w% b: L4 }1 Q$ }; A  |, `* mDescription! m  V/ }7 h& c' z# I9 t
    & p; z% }" r# V0 z9 U" [6 Y7 Q
    # r# L" P3 _7 [/ T, j! ]& N
    maple('statement') sends statement to the Maple kernel and returns the result. A semicolon for the Maple syntax is appended to statement if necessary.
    9 i& j' Z2 p. S$ G  ^$ k& X3 J
    4 U) E- P6 X! smaple('function',arg1,arg2,...) accepts the quoted name of any Maple function and associated input arguments. The arguments are converted to symbolic expressions if necessary, and function is then called with the given arguments. If the input arguments are syms, then maple returns a sym. Otherwise, it returns a result of class char. ! v: T6 `4 T; Y3 t* w! w$ Y8 [- L' s

    . m4 J* [* D6 i8 |# u[r,status] = maple(...) is an option that returns the warning/error status. When the statement execution is successful, r is the result and status is 0. If the execution fails, r is the corresponding warning/error message, and status is a positive integer. 7 q! {; O+ I& s: N' |- f: D* B6 E

    1 b: Y+ ]4 W* B# F' |, X& T0 gmaple('traceon') (or maple trace on) causes all subsequent Maple statements and results to be printed. maple('traceoff') (or maple trace off) turns this feature off. " U( y+ i. _1 n3 L3 ^

    ( l2 j8 o7 T) ^Examples, _! I2 k( F$ x) }! C
    # W5 z/ X/ Y" U! o
    1 }" @1 g" u8 l
    Each of the following statements evaluate  to 100 digits.   Z2 A( T" A  N* M3 o% {
    maple('evalf(Pi,100)')
    6 G3 f6 i5 J/ G( r: Gmaple evalf Pi 100
    " w" u: v* B+ i6 Y0 bmaple('evalf','Pi',100)
    " @- m. @  b! x: _: j1 j# a& ?8 n' \7 k7 ]" F5 P$ o5 C/ D7 ^/ ^

    # {4 M3 J3 R3 o* f% ^+ ^8 j
    8 j; U1 I2 ?9 v2 x- U. s% i, UThe statement
    # d/ k! |6 \5 q/ k6 G. E7 G0 J[result,status] = maple('BesselK',4.3)
    ) _6 E7 q0 {+ }) k* @/ p% N
    & ?" R/ Q. j/ D: f. l) S" a9 k+ r1 b# y' T) ]3 `- D+ }, }, [

    * x' t  Z0 E' [% s: o8 ~returns the following output because Maple's BesselK function needs two input arguments.
    4 u3 n1 V1 e2 G) C7 P  F0 d/ ~result =
    : E, U& l  i/ B  X. J# C, L6 dError, (in BesselK) expecting 2 arguments, got 1
    & d0 c( }  f% astatus =; ~5 Y3 s* `9 g, j
    2
    6 W1 ?8 H' [: U3 w% j! o# k# O/ X* X6 B4 g$ O4 q
    # w- n5 B- a8 ?+ T2 G

    9 Z& {2 c$ W/ EThe traceon command shows how Symbolic Math Toolbox commands interact with Maple. For example, the statements
    & u; k8 `+ x2 R- u3 P' vsyms x
    7 k0 d/ }8 y9 K: o* \: }5 Vv = [x^2-1;x^2-4]
    ( `+ s# Y) t8 D% R# E# v" ~) S3 l6 fmaple traceon % or maple trace on
    ! x* L' f+ Q/ Iw = factor(v)
    9 z4 g- ~8 P  l
    ' _. O6 w$ ~" q0 Z; }3 q9 e8 y: Q3 S  U
    0 @0 F8 U# h$ k2 Z
    return
    2 V1 _5 p% J( w! l# n  A; G. A$ w% F6 ~v =
    * x6 C( J  k: g, {% L$ \[ x^2-1]
    9 Y" L0 z5 j- {/ g7 g& T4 B4 P[ x^2-4]1 f9 d/ t9 p' }- y, I) {) R  b

    , [  N" j9 \1 r8 Z; i  fstatement:
    6 n' V, G$ Z- F4 G( u: w   map(ifactor,array([[x^2-1],[x^2-4]]));7 j" N  r) z0 Q# p# j3 U6 W! M
    result:
    0 l1 B2 G& S8 b" {% M* V   Error, (in ifactor) invalid arguments- h% W: C& N8 f0 x+ a, d1 n2 ^
    statement:9 T8 U0 M0 x$ h/ p1 ^, C  C' i' E6 u
       map(factor,array([[x^2-1],[x^2-4]]));
    ( C3 ^9 }8 w. h" t# N9 sresult:
    & {  I2 a0 r, X   matrix([[(x-1)*(x+1)], [(x-2)*(x+2)]]), a/ f! Z* t* _2 O: Q9 m
    * u* G$ l. l$ T1 }  s; S. n
    w =+ n# u* P# R# [; W0 z' U

    0 q) H# A2 B# n' U7 k: J) Z[ (x-1)*(x+1)]
    + f+ F  a4 D- I% D% @[ (x-2)*(x+2)]9 O- [6 R3 [' |
    . t& a, [: F, X' |7 D
    , |' d; y5 k0 n6 o5 U& w/ _% \
    7 R4 X0 E$ G) M
    This example reveals that the factor statement first invokes Maple's integer factor (ifactor) statement to determine whether the argument is a factorable integer. If Maple's integer factor statement returns an error, the Symbolic Math Toolbox factor statement then invokes Maple's expression factoring statement. ! {+ B1 m$ {2 P9 V' x
    / N2 W6 O7 z7 u
    See Also8 c" D7 D% m5 M1 H

    5 d* Z+ y7 k- E, R0 |; x) O( a9 j  }2 ?/ {, h
    mhelp, procread
    回复

    使用道具 举报

    suolunga 实名认证       

    40

    主题

    5

    听众

    2388

    积分

  • TA的每日心情
    开心
    2024-11-2 10:26
  • 签到天数: 89 天

    [LV.6]常住居民II

    邮箱绑定达人 新人进步奖 最具活力勋章 发帖功臣

    群组C 语言讨论组

    群组数学建模

    群组Matlab讨论组

    群组Latex研学群

    群组我行我数

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-8-17 11:54 , Processed in 0.622495 second(s), 69 queries .

    回顶部