楓葉/入門
所有輸入給楓葉的命令都在標記為 > 的區域中。
這些是輸入區域。
按回車鍵執行命令。
> sample code;
程式碼行必須以分號或冒號結尾。注意它們之間的區別
> p - ln( p );
> p - ln (p ):
如果程式碼行以分號結尾,則驗證順序並軟體在輸出區域顯示答案。如果程式碼行以冒號結尾,則驗證順序,但答案不顯示。
> (1-1/7)*(1+2/3)^2;
> (25)^(1/2);
> factorial(15);
> 15!;
> sqrt(81);
> sqrt(56.81);
> %^2;
與任何其他程式語言一樣,楓葉允許我們將值分配給命名變數。這通常使程式更具可讀性,並且它允許我們儲存結果以供以後在計算中使用。在這裡,2.14 被分配給變數 p。然後我們可以計算 使 p 評估(替換為)2.14
> p:=2.14;
> p - ln(p);
您也可以在單個表示式中使用多個變數
> x := 2*a-p;
> x-sqrt(a*p);
> expr := a*x^2 + b*x + c = 0;
楓葉擁有廣泛的命令來幫助您操作表示式
> f := (a+b)^6;
> expand(f);
> factor(%);
> %%;
> sin(x)^2+cos(x)^2;
> simplify(%);
這裡,%符號表示 Maple 最後一次計算的結果。%%表示倒數第二次計算的結果。%%%表示倒數第三次計算的結果。如果你想檢視更早的計算結果,需要將它們分配給變數。
你也可以使用subs命令和帶兩個引數的eval命令來將表示式中的變數替換為值。
> subs( x=2, x^2+x+1 );
> eval( x^2+x+1,x=2 );
subs命令進行語法替換,
> subs( y=0, sin(y) );
而eval命令則進行替換後計算
> eval( sin(y), y=0 );
> eval(f, a=c);
> eval(f, [a=2, b=4/5]);
subs命令替換繫結(虛擬)變數,而eval命令不替換。
> subs(x=u,int(f(x),x=0..1) );
> eval(int(f(x),x=0..1),x=u );
eval命令進行同步替換,而subs命令則進行順序替換。
> subs( x=y, y=x, [x,y] );
> eval([x,y], {x=y, y=x});
以下等價:
同步替換
> subs( [x=y, y=x], [x,y] );
> eval([x,y], {x=y, y=x});
以及
順序替換
> subs( x=y, y=x, [x,y] );
> eval(eval([x,y], x=y), y=x);
evalf命令計算表示式的浮點數(數值)近似值。你也可以指定所需的精度。
> evalf(sqrt(3));
> evalf(sqrt(3), 50);
> evalf[50](sqrt(3));
print、lprint和printf命令用於顯示數學表示式。print命令使用當前的漂亮列印方法顯示錶達式。lprint命令以 1D 格式(沒有漂亮列印)顯示錶達式,就像在 Maple 中輸入一樣。printf命令與 C 或 C++ 語言中使用的相同,你可以在其中使用格式顯示變數:%d 表示整數變數,%f 表示浮點數,\n 表示換行符。
> f:=a-3/a+1/(a*a+1);
> print(f);
> lprint(f);
a-3/a+1/(a^2+1)
> printf("%d %f \n",123,1234/567);
123 2.176367
使用 Maple 定義函式
[edit | edit source]定義函式的最簡單形式是使用箭頭(對映)運算子 ->
> f := t -> sin(t) - t;
> f(3*x + 2);
注意
> f := x->2*x+2;
定義 f 作為函式,即
> f(u);
> f(x):=2*x+2;
定義 f 作為帶有“記憶表”的過程,該表僅針對引數 x:
> f(u);
以及
> f(x)=2*x+2;
是一個方程。
使用 Maple 進行微積分
[edit | edit source]可以使用 diff 命令對錶達式進行求導
> diff(f(t), t);
可以將多個偏導數作為列表給出。要對 g 相對於 u 然後相對於 v 求導,可以使用以下命令
> diff(g(u,v,w), [u,v]);
Maple 也可以使用 D 運算子對函式進行求導
> D(f);
如果函式有多個變數,可以將變數指定為索引
> D[1](g);
注意 diff 和 D 之間的區別:diff 對錶達式進行操作,並返回一個表示式,而 D 對函式進行操作,並返回另一個函式。
Maple 可用於查詢表示式的原函式、不定積分或反導數。例如,要獲得 f(t) 函式關於 t 的不定積分和 g(u,v,w) 函式關於 v 的不定積分,可以輸入以下命令
> Int(f(t), t) = int(f(t), t);
> Int(g(u,v,w), v) = int(g(u,v,w), v);
注意 Int 和 int 命令之間的區別。前者是惰性形式,它只顯示積分。後者是活動形式,並計算其值。
Maple 也可以計算定積分
> Int(f(t),t=0..Pi)=int(f(t),t=0..Pi);
要計算惰性積分,可以使用 value 命令
> value(Int(f(t), t));
惰性形式的另一個用途是對定積分進行數值逼近
> evalf(Int(f(t),t=0..Pi));
這應該與 evalf(int(f(t), t=0..Pi)) 給出相同的答案,但計算方式不同。當使用積分的惰性形式時,Maple 會使用定積分的定義來計算曲線下方區域的近似值。然後,當使用 int 形式時,將計算定積分的精確值,然後對該值進行數值逼近。使用惰性形式直接計算逼近值對於大型問題可能快得多。
使用 Maple 進行求極限、求和和求積
[edit | edit source]您還可以分別使用 sum、limit 和 product 函式找到和、極限和積的數值和符號值
> limit((2*t-3)/(3*t+4),t=infinity);
> limit((2*t-3)/(3*t+4),t=-4/3,right); #right-bound of the limit
> Sum(i^2,i=1..10)=sum(i^2,i=1..10);
> Product(1/i,i=1..10)=product(1/i,i=1..10);
命令 Sum 和 Product 是惰性的,它們實際上並不計算求和或乘積。
用 Maple 求解方程
[edit | edit source]函式 solve(eqn,x) 嘗試在 eqn 中找到 x 的值。您還可以使用更多變數或更多方程,使用 solve({eqn1,eqn2,...},{x,y,...}):
> solve(2*t+3=-t+6*sqrt(2));
> solve(t-15/4*u=5/2*(u-t)+3,u);
> solve({a-b=2,a+3*b=7},{a,b});
有時,可能無法找到方程的精確解。然後您可以使用 fsolve() 獲取數值近似值
> fsolve(cos(t)=t);
> fsolve({t^3+u=1,u-(t-1)^3=t},{t,u});
為解命名
[edit | edit source]解可以儲存在一個變數中,就像任何其他表示式一樣
> solution := solve({a-b = x, a+b = 1/x}, {a, b});
在示例中,變數 solution 被分配了值,然後可以在後續計算中使用。有時,值得將解的一部分保留在獨立變數中。這可以透過適當的替換來完成。為了能夠複製微積分的每一步,最好不要替換用於編寫原始方程的變數 (a,b),而是建立新的名稱,例如,solutiona" 和 "solutionb":
> solutiona := eval(a, solution)
> solutionb := eval(b, solution)
然後,可以透過一些圖或未來的計算中的識別符號訪問這些表示式。
用 Maple 繪製函式
[edit | edit source]要繪製函式 f(x),請使用命令 plot(f(x),x)
> plot(sin(t)/t,t=-20..20,title="function t ---> sin t / t");

> plot3d(x*exp(-x^2-y^2),x=-2..2,y=-2..2,color=x,orientation=[120,75]);
