建模笔记之maple学习
建模筆記之 maple 學(xué)習(xí)
本筆記主要介紹基本的方程組求解,對(duì)于語(yǔ)法、畫(huà)圖功能不加以闡述。在數(shù)學(xué)建模中,大部分的編程工作還是由matlab或python來(lái)完成,而maple可以快速解決一些需要手算的操作。比如建模國(guó)賽18年的A題隔熱服的問(wèn)題,掌握maple就會(huì)簡(jiǎn)單的多。
若想更深入的學(xué)習(xí),可以看看這個(gè)博客。http://blog.sina.com.cn/s/articlelist_1525587631_5_1.html
在學(xué)習(xí)的過(guò)程中,建議多使用maple自帶的幫助,里面也提供了一些簡(jiǎn)單易懂的例子
% 代指上一個(gè)公式
ifactor
分解的意思,頗有最小公倍數(shù)的意味。
ifactor(60);
expand
展開(kāi)
expand((x + 1)*(x + 2));
evalf
將結(jié)果轉(zhuǎn)化為浮點(diǎn)數(shù),也有求解的意思,求解后直接化為浮點(diǎn)數(shù)
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(%);
發(fā)現(xiàn)個(gè)規(guī)律,sum和product也可以寫(xiě)成Sum和Product,即第一個(gè)英文字母大寫(xiě),若寫(xiě)成Sum時(shí),Maple出來(lái)的結(jié)果帶著∑,而不是數(shù)值,例:
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
化簡(jiǎn)、求值,可以求解sum、product、limit等
Sum( 1/k^2, k=1…infinity ); value(%);
factor
合并
expr := (x + y)^15; expand(expr);factor(%);
simplify
化簡(jiǎn)
normal
化簡(jiǎn)
eval
相當(dāng)于求解,返回表達(dá)式計(jì)算結(jié)果
expr1 := (41x^2 + x + 1)^2(2*x - 1);
eval(expr1, x = 1);
用來(lái)檢驗(yàn)計(jì)算方程在特殊點(diǎn)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);
定義函數(shù)
f := x -> x^2 + 1/2;
unapply
使用unapply命令將表達(dá)式轉(zhuǎn)化為函數(shù)
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來(lái)表示其他未知數(shù)a,b,c,d,得到一組解
solve((ab+bc=c),{c}); #用a、b來(lái)表示c
解不等式
ineq := x+y+4/(x+y) < 10: # 此處的:類似于matlab的循環(huán)運(yùn)算里的冒號(hào),不過(guò)也可以改成分號(hào)
solve( ineq, {x} );
{solve({x^2 = 9, x + y < 10}, {x, y})};
微積分
f := x -> xsin(ax) + b*x^2; #定義函數(shù)
diff(f(x), x); #求導(dǎo)
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); #定義表達(dá)式
limit(expr, x = infinity); #求函數(shù)式在正無(wú)窮處的極限
展開(kāi)為級(jí)數(shù)和轉(zhuǎn)化為多項(xiàng)式
expr := sin(4*x)*cos(x): #定義表達(dá)式
approx1 := series( expr, x=0 ); #展開(kāi)為級(jí)數(shù)
poly1 := convert( approx1, polynom ); #轉(zhuǎn)化為多項(xiàng)式
diff
求解微分方程
格式為 dsolve({equn,conds},y(x)); 其中equn為方程 conds為條件
ode := diff(x(t), t) = 2*x(t); #maple中因變量必須連同它的自變量一起出現(xiàn),即x(t)不能簡(jiǎn)寫(xiě)成x
? #ode表示微分方程x‘(t)=2*x(t)
dsolve(ode, x(t)); #給出通解
dsolve({ode, x(0) = 3}, x(t)); #給出特解
對(duì)于一階常微分方程 可用dsolve直接求得解析解
ODE:=x*diff(y(x),x)=y(x)*ln(x*y(x))-y(x);
dsolve(ODE, y(x));
對(duì)于上面例題,必須用y(x)而不能用y,這一點(diǎn)有區(qū)別于我們平時(shí)的書(shū)寫(xiě)方法,為了使其與我們的習(xí)慣一致, 可用alias將函數(shù)用別稱表示:
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; #定義第一個(gè)二階方程
ode2 := diff(y(t), t $ 2) + 2*x(t) + y(t) = t^2; #定義第二個(gè)二階方程
dsolve({ode1, ode2, x(0) = 0, y(0) = 0, D(x)(0) = 1, D(y)(0) = 0}, {x(t), y(t)});
#求解,分別給出x、y的一階導(dǎo)數(shù)和原函數(shù)的特值
主次迭代法
已知y’=1+y^3,y(0)=1,求原函數(shù)
普通方法代碼如下:
ode := diff(y(x), x) = 1 + y(x)^3;
dsolve({ode, y(0) = 1}, y(x));
輸出結(jié)果
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
發(fā)現(xiàn)這根本不是常見(jiàn)的結(jié)果,在這里,我給大家推薦另外一種方法,主次迭代法。
該問(wèn)題的等價(jià)積分方程為:
ode1 := y(x) = 1 + int(1 + y(x)^3, x = 0 … x);
并利用maple去進(jìn)行重復(fù)的迭代:
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);
公眾號(hào):湛嵐寧的小屋
總結(jié)
以上是生活随笔為你收集整理的建模笔记之maple学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DEDECMS安装使用教程
- 下一篇: 萤石网络,难当「孤勇者」