Maple 公式推导
Maple 公式推導??
2012-03-24 13:07:35|??分類: 學習 |??標簽:maple?? |舉報 |字號?訂閱
即以此功德,莊嚴佛凈土。上報四重恩,下救三道苦。惟愿見聞者,悉發菩提心。在世富貴全,往生極樂國。
阿英按:個人認為公式推導最主要的就是“代入”和“化簡”兩步,大家抓住這兩步其實就夠用了,其他的用到了再查啊,阿彌陀佛!① 選擇哪個函數進行變量替換?
Maple中是subs函數,algsubs函數和simplify函數。
原來我不知道要把一個表達式帶入另外一個表達式要用algsubs函數,subs函數僅僅只能替換一個變量而已,比如z=a+b, 如果x+y是一個通項中的operand,則有x + y = a + b + c ;algsubs一次能替換一個表達式中的某些中間項,比如algsubs( a+b=d, 1+a+b+c );中a+b就是表達式1+a+b+c中的中間項。
②? 公式推導中要使用哪些函數?
factor, combine, expand, subs,algsubs,simplify, convert,alias
③? 變量的約束條件如何加?
變量的約束條件由assume給出,如assume(x>0); 經過assume后的x后邊跟了一個flag,顯示為"x~"; about(x)是查詢x的約束條件是什么;在assume的基礎上附加一個assumption,通過additionally函數,例如additionally(x<2); 去除所有約束采用x := 'x';
?
例1: subs 單變量替換
p := (x+y)^2 + 1/(x+y)^2;
normal(p); (* normal(f) The expression f is converted to factored normal form. This is the form numerator/denominator, where the numerator and denominator are relatively prime polynomials with integer coefficients. *)
?我們希望p的分子上包含(x+y)^4的項,我們可以令 z = (x + y),然后代入p的表達式。
pz := subs(x+y=z,p);? (*替代規則是將 x+y = z 等式左手邊的項x+y用右手邊的項z替代,然后代入多項式p中*)
?npz := normal(pz);
?q := subs(z = x + y, npz);
(*下面做一個簡要的說明,關于op函數的用法*)
op([2,1], q);??? (*op是取出表達式q中的operand,前面[2,1]是個列表,表示以q的第二個操作數為新的子表達式,取出該子表達式中的第一個操作數,具體分解見下面執行結果*)
?(* 言歸正傳:subsop - substitute for specified operands in an expression *)
subsop([2,1] = x-y,q);??? (* 將q中嵌套的操作數 [2,1] = (x+y) 用(x-y)替換?,嵌套的operand用[2,1]表示我以前不知道 *)
?
例2: subs 嵌套替換和多個變量同時替換
p := a + 2*b + 3*c;? (*定義一個新的多項式*)
subs(a=b, b=c, c=a, p); (*我以前不知道原來是從左到右依次嵌套替換,此句的效果與 subs(c=a,subs(b=c,subs(a=b,p))); 等價*)
?(* The substitutions within a set or list are performed simultaneously,如果要同時替換p中的多個變量,需要將各個替換等式用花括號或者方括號括起來 *)
subs({a=b, b=c, c=a}, p);
subs([a=b, b=c, c=a], p);
?例3:如何用一個子表達式替換表達式中的一部分,將一個表達式帶入另外一個表達式不能用subs函數,而是要用algsubs函數。
p := a + 2*b + 3*c;
subs(a+b=c,p);
algsubs(a+b=c,p);
例4: expand 命令,matlab中也由此命令expand命令,matlab中 expand((x+1)^3)?? returns? x^3+3*x^2+3*x+1
p := (a+b+c)*(x^3 + 9*x + 8);
expand(p);? (* expand命令的作用是將多項式乘開 *)
(*?下面的內容演示如何在expand過程中保持第二個operand?不變 *)
?op(2,p);?? (* p的第二個因子?,第二個operand,這里打印出來看看是啥東東?*)
q := subsop(2=z,p);?? (* 將p的第二個operand用z代替?*)
eq := expand(q);
eq := subs(z=op(2,p),eq);
p2 := op(2,p);
irreduc(p2);?? (* p2是不可化簡的?*)
alias(alpha=RootOf(p2));? % alias就是變量替換,這個在化簡的過程中也有用
ap := (alpha + 1)^7;
expand(ap);
evala(%);
例5. factor的數域擴展,factor僅僅分解到有理數就停止了,下面的例子演示如何通過數域擴展,在無理數域進行?因式分解
p := x^2 + 2;
factor(p);
factor(p,{sqrt(2),I});?fp := polytools[split](p,x);?? % polytools[split] - complete Factorization of a Polynomial
rfp := convert(fp,radical);
map(evalc,rfp);? % 我以前不知道要map一下,注意與evalc(rfp);的結果有差異
evalc(rfp);
總結
以上是生活随笔為你收集整理的Maple 公式推导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 年薪50-80万 | 海南省崖州湾种子实
- 下一篇: 并发、并行、线程、进程与CPU基本概念