天天看點

mathematica模組化學習系列1

所練習的函數

Solve/NSolve/Reduce(解方程)/Roots/Plot+FindRoot(圖像+估計找根)/

Eliminate(消元)/Limit/ListPlot(繪制點集)/Table(制表)/Direction左右極限/Dt和D/Table+D(輸出多個n階導數)/Integrate(包括重積分)/NIntegrate/Sum(求和函數)/Series(級數展開)

Solve和Eliminate在化簡消元的差別:Solve最後是要留什麼,Eliminate是要去掉什麼

(1)蕩杯問題

《孫子算經》中,卷下第十七問,有一個著名的“蕩杯問題”,曰:“今有婦人河上蕩杯。津吏問曰:‘杯何以多?’婦人曰:‘有客。’津吏曰:‘客幾何?’婦人曰:‘二人共飯,三人共羹,四人共肉,凡用杯六十五。不知客幾何?”這裡說的故事是一個婦人在河裡蕩杯(洗滌杯碗),掌管橋梁的官吏(津吏)就問她為何要洗這麼多杯碗,來了多少客人?婦人就回答,兩個人共用一個飯碗,三個人共用一個湯碗,四個人共用一個肉碗,一共用了六十五個碗,你說來了多少客人?(提示:一進制方程的模組化)

Reduce[x/2+x/3+x/465,x]

x60

(2)湊零為整

手邊有标準的貨币1元、5元、10元,如何支付19元?有多少種方式可以實作支付?(提示:多元方程的模組化)

Reduce[x+5y+10z==19&&x>=0&&y>=0&&z>=0,Element[{x,y,z},Integers]]

(x4&&y1&&z1)||(x4&&y3&&z0)||(x9&&y0&&z1)||(x9&&y2&&z0)||(x14&&y1&&z0)||(x19&&y0&&z0)

(3)“雞兔同籠”的問題

在《孫子算經》中,有一個著名的“雞兔同籠”問題,曰:“今有雉、兔同籠,上有三十五頭,下有九十四足。問:雉、兔各幾何?”給出的答案是:“雉二十三,兔一十二。”計算的方法是,術曰:“上置三十五頭,下置九十四足。半其足,得四十七,以少減多,再命之,上三除下三,上五除下五,下有一除上一,下有二除上二,即得。又術曰:上置頭,下置足,半其足,以頭除足,以足除頭,即得。”這一段文字,比較晦澀難懂,如果我們用方程組來求解,在Mathematica中,隻用寫一條語句,即可得到答案。請思考求解。(提示:建立聯立方程組求解)

Reduce[{x+y2,2x+4y94},{x,y}]

x==-43&&y==45

(4)“韓信點兵”的問題

在曆史上,流傳有一個韓信點兵的典故,是說大将韓信有次帶兵打仗,出征有1500名士兵,戰死大約有四五百人,戰後清點人數,韓信用的方法是,讓士兵站成隊列,就得到總人數。3人站一排,多出2人;5人站一排,多出4人;7人站一排,多出6人;韓信很快就知道現有士兵總數是1049人。韓信是怎麼計算的呢?這裡要用到一些數學知識。但是在Mathematica中,同樣可以用很簡便方法的方法求解“韓信點兵”。請思考求解。(提示:建立聯立方程組求解)

Solve[{3x+2s,5y+4s,7z+6==s,s<=1100,s>1000},{x,y,z,s},PositiveIntegers]

{{x->349,y->209,z->149,s->1049}}