日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

建模笔记之maple学习

發布時間:2023/12/31 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 建模笔记之maple学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建模筆記之 maple 學習

本筆記主要介紹基本的方程組求解,對于語法、畫圖功能不加以闡述。在數學建模中,大部分的編程工作還是由matlab或python來完成,而maple可以快速解決一些需要手算的操作。比如建模國賽18年的A題隔熱服的問題,掌握maple就會簡單的多。

若想更深入的學習,可以看看這個博客。http://blog.sina.com.cn/s/articlelist_1525587631_5_1.html

在學習的過程中,建議多使用maple自帶的幫助,里面也提供了一些簡單易懂的例子

  • % 代指上一個公式

  • ifactor

    分解的意思,頗有最小公倍數的意味。

    ifactor(60);

  • expand

    展開

    expand((x + 1)*(x + 2));

  • evalf

    將結果轉化為浮點數,也有求解的意思,求解后直接化為浮點數

    2^30*sqrt(3); evalf(%);

  • sum

    求和

    sum((1 + i)/(i^4 + 1), i = 1 … 100); evalf(%);

  • product

    連乘

    product( ((i^2+3*i-11)/(i+3)), i=0…10 );evalf(%);

    發現個規律,sum和product也可以寫成Sum和Product,即第一個英文字母大寫,若寫成Sum時,Maple出來的結果帶著∑,而不是數值,例:

    Sum((1 + i)/(i^4 + 1), i = 1 … 100); value(%);evalf(%)

    Sum((1 + i)/(i^4 + 1), i = 1 … 100); evalf(%)

    sum((1 + i)/(i^4 + 1), i = 1 … 100); evalf(%)

    product同理

  • value

    化簡、求值,可以求解sum、product、limit等

    Sum( 1/k^2, k=1…infinity ); value(%);

  • factor

    合并

    expr := (x + y)^15; expand(expr);factor(%);

  • simplify

    化簡

  • normal

    化簡

  • eval

    相當于求解,返回表達式計算結果

    expr1 := (41x^2 + x + 1)^2(2*x - 1);
    eval(expr1, x = 1);

    用來檢驗計算方程在特殊點x的值

    eqn:=x3-1/2*a*x2+13/3*x^2=13/6*a*x+10/3*x-5/3*a;
    eval(eqn , x=1/2*a );

  • :=

    定義變量

    expr1 := (41*x2+x+1)2*(2*x-1);

  • 定義函數

    f := x -> x^2 + 1/2;

  • unapply

    使用unapply命令將表達式轉化為函數

    g := unapply(x^2 + 1/2, x); g(2);

  • 解方程(組)

    eqn1 := a+2*b+3*c+4*d+5*e=41;

    eqn2 := 5*a+5*b+4*c+3*d+2*e=20;

    eqn3 := 3*b+4*c-8*d+2*e=125;

    eqn4 := a+b+c+d+e=9;

    solve( {eqn1, eqn2, eqn3, eqn4}, {a, b, c, d} ); # 用變量e來表示其他未知數a,b,c,d,得到一組解

    solve((ab+bc=c),{c}); #用a、b來表示c

  • 解不等式

    ineq := x+y+4/(x+y) < 10: # 此處的:類似于matlab的循環運算里的冒號,不過也可以改成分號

    solve( ineq, {x} );

    {solve({x^2 = 9, x + y < 10}, {x, y})};

  • 微積分

    f := x -> xsin(ax) + b*x^2; #定義函數

    diff(f(x), x); #求導

    int(f(x), x); #不定積分

    int(f(x), x = 1 … 2); #定積分

  • 三重積分

    Int(Int(Int(1, x = 0 … 1), y = 0 … 2), z = 0 … 3);

    value(%);

  • 求極限

    expr := (2x + 3)/(7x + 5); #定義表達式

    limit(expr, x = infinity); #求函數式在正無窮處的極限

  • 展開為級數和轉化為多項式

    expr := sin(4*x)*cos(x): #定義表達式
    approx1 := series( expr, x=0 ); #展開為級數
    poly1 := convert( approx1, polynom ); #轉化為多項式

  • diff

    求解微分方程

    格式為 dsolve({equn,conds},y(x)); 其中equn為方程 conds為條件

    ode := diff(x(t), t) = 2*x(t); #maple中因變量必須連同它的自變量一起出現,即x(t)不能簡寫成x

    ? #ode表示微分方程x‘(t)=2*x(t)

    dsolve(ode, x(t)); #給出通解

    dsolve({ode, x(0) = 3}, x(t)); #給出特解

    對于一階常微分方程 可用dsolve直接求得解析解

    ODE:=x*diff(y(x),x)=y(x)*ln(x*y(x))-y(x);

    dsolve(ODE, y(x));

    對于上面例題,必須用y(x)而不能用y,這一點有區別于我們平時的書寫方法,為了使其與我們的習慣一致, 可用alias將函數用別稱表示:

    alias(y = y(x));

    ODE := x*diff(y, x) = y*ln(x*y) - y;

    dsolve(ODE, y);

  • 求解微分方程組

    格式為 dsolve({sysODE, ICs}, {funcs}); sysODE為方程組,ICs為條件組

    sys := {diff(x(t), t) = x(t) + y(t), diff(y(t), t) = y(t) - x(t)}; #定義微分方程組

    dsolve(sys, {x(t), y(t)}); #求解

    ode1 := 2*diff(x(t), t $ 2) + 2*x(t) + y(t) = 2*t; #定義第一個二階方程

    ode2 := diff(y(t), t $ 2) + 2*x(t) + y(t) = t^2; #定義第二個二階方程

    dsolve({ode1, ode2, x(0) = 0, y(0) = 0, D(x)(0) = 1, D(y)(0) = 0}, {x(t), y(t)});

    #求解,分別給出x、y的一階導數和原函數的特值

  • 主次迭代法

    已知y’=1+y^3,y(0)=1,求原函數

    普通方法代碼如下:

    ode := diff(y(x), x) = 1 + y(x)^3;

    dsolve({ode, y(0) = 1}, y(x));

    輸出結果

    y(x) = sqrt(3)tan(RootOf(sqrt(3)ln(4/(3(tan(_Z)^2 + 1))) + 2sqrt(3)*ln(3/2 + sqrt(3)tan(_Z)/2) - 2sqrt(3)ln(2) - Pi - 6sqrt(3)x + 6_Z))/2 + 1/2

    發現這根本不是常見的結果,在這里,我給大家推薦另外一種方法,主次迭代法。

    該問題的等價積分方程為:

    ode1 := y(x) = 1 + int(1 + y(x)^3, x = 0 … x);

    并利用maple去進行重復的迭代:

    y0 := 1;
    y1 := 1 + int(x^2 + y0^2, x = 0 … x);
    y2 := 1 + int(x^2 + y1^2, x = 0 … x);
    y3 := 1 + int(x^2 + y2^2, x = 0 … x);
    y4 := 1 + int(x^2 + y3^2, x = 0 … x);

  • 公眾號:湛嵐寧的小屋

    總結

    以上是生活随笔為你收集整理的建模笔记之maple学习的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。