![軟件介紹匯總課件_第1頁](http://file4.renrendoc.com/view/f01508af9d0e3374a1c988b261597e9e/f01508af9d0e3374a1c988b261597e9e1.gif)
![軟件介紹匯總課件_第2頁](http://file4.renrendoc.com/view/f01508af9d0e3374a1c988b261597e9e/f01508af9d0e3374a1c988b261597e9e2.gif)
![軟件介紹匯總課件_第3頁](http://file4.renrendoc.com/view/f01508af9d0e3374a1c988b261597e9e/f01508af9d0e3374a1c988b261597e9e3.gif)
![軟件介紹匯總課件_第4頁](http://file4.renrendoc.com/view/f01508af9d0e3374a1c988b261597e9e/f01508af9d0e3374a1c988b261597e9e4.gif)
![軟件介紹匯總課件_第5頁](http://file4.renrendoc.com/view/f01508af9d0e3374a1c988b261597e9e/f01508af9d0e3374a1c988b261597e9e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件介紹第4講Mathematica編程簡介軟件介紹第4講Mathematica編程簡介4.1Mathematica編程簡介1.Mathematica文件可保存數(shù)據(jù)也可保存命令2.基本程序結(jié)構(gòu)每個單元中的命令可自動執(zhí)行,因此在每個單元中可有三種基本結(jié)構(gòu):順序、分支、循環(huán)。4.1Mathematica編程簡介4.1.1基本概念4.1.2選擇結(jié)構(gòu)(分支結(jié)構(gòu))4.1.3循環(huán)結(jié)構(gòu)4.1.4全局變量與局部變量4.1.5輸入與輸出4.1.1基本概念4.1.1基本概念1.關(guān)系運(yùn)算符、關(guān)系表達(dá)式與關(guān)系函數(shù)關(guān)系表達(dá)式是指用關(guān)系運(yùn)算符將兩個表達(dá)式連接起來的式子(例如a+b>0)關(guān)系運(yùn)算符又稱比較運(yùn)算符,用來對兩個表達(dá)式的值進(jìn)行比較比較的結(jié)果是一個邏輯值(True或False),這個結(jié)果就是關(guān)系表達(dá)式的值。4.1.1基本概念4.1.1基本概念1.關(guān)系運(yùn)算符、關(guān)系表達(dá)式與關(guān)系函數(shù)x==y Equal[x,y]xy Unequal[x,y]x<y Less[x,y]xy LessEqual[x,y]x>y Greater[x,y]xy GreaterEqual[x,y]4.1.1基本概念2.邏輯運(yùn)算符、邏輯表達(dá)式與邏輯函數(shù)對于較為復(fù)雜的條件,必須使用邏輯表達(dá)式。邏輯表達(dá)式是指用邏輯運(yùn)算符連接若干關(guān)系表達(dá)式或邏輯值而成的式子。邏輯表達(dá)式的值也是一個邏輯值。p&&q pq And[p,q]p||q pq Or[p,q]!p ?p Not[p]2.邏輯運(yùn)算符、邏輯表達(dá)式與邏輯函數(shù)2.邏輯運(yùn)算符、邏輯表達(dá)式與邏輯函數(shù)p&&q pq And[p,q]p||q pq Or[p,q]!p ?p Not[p]【例3-1】驗證邏輯分配律:p(qr)=(pq)(pr)a=p&&(q||r);b=(p&&q)||(p&&r);a==bLogicalExpand[a]==LogicalExpand[b]2.邏輯運(yùn)算符、邏輯表達(dá)式與邏輯函數(shù)【例3-2】判斷閏年閏年的條件是:被4整除但不能被100整除,或者能被400整除。y=2000;L=(Mod[y,4]==0&&(!Mod[y,100]==0))||(Mod[y,400]==0)【例3-2】判斷閏年4.1.2選擇結(jié)構(gòu)(分支結(jié)構(gòu))實現(xiàn)選擇結(jié)構(gòu)的函數(shù)有If函數(shù)、Which函數(shù)與Switch函數(shù)三種。1.If函數(shù)If函數(shù)的語法格式為:If[條件,語句1,語句2]注:省略格式:If[條件,語句1]If[條件,,語句2]條件T語句1F語句24.1.2選擇結(jié)構(gòu)(分支結(jié)構(gòu))條件T語句1F語句24.1.2選擇結(jié)構(gòu)(分支結(jié)構(gòu))1.If函數(shù)If函數(shù)的語法格式為:If[條件,語句1,語句2]【例3-3】使用If函數(shù)If[Random[Integer,{1,6}]==3,0,-1]注1:其中隨機(jī)函數(shù)的格式如下:Random[Integer,{1,6}] 返回1~6之間的隨機(jī)整數(shù)Random[Real,{1,6},20] 返回1~6之間的隨機(jī)實數(shù)Random[] 返回0~1之間的隨機(jī)實數(shù)條件T語句1F語句24.1.2選擇結(jié)構(gòu)(分支結(jié)構(gòu))條件T語句1F語句2注2:If函數(shù)格式中的語句1或語句2都可以是以分號相隔的命令列表【例3-4】If[Random[]<=0.5,x=Random[];y=1;Print[x+y],Print[0]]注2:If函數(shù)格式中的語句1或語句2都可以是以分號相隔的命注3:If函數(shù)可以嵌套【例3-5】鐵路托運(yùn)行李,從甲地到乙地,規(guī)定每張客票托運(yùn)費(fèi)計算方法是行李重量不超過50kg時,0.25元/kg,超過50kg而不超過100kg時,其超過部分按0.35元/kg收費(fèi),超過100kg時,其超過部分按0.45元/kg收費(fèi)。編寫程序,輸入行李重量,計算并輸出托運(yùn)的費(fèi)用。分析:設(shè)行李重量為wkg,應(yīng)付運(yùn)費(fèi)為x元,則運(yùn)費(fèi)公式為:注3:If函數(shù)可以嵌套根據(jù)以上分析,畫出流程圖如圖所示。編寫代碼如下:w=40;x=If[w<=50,0.25w,If[w<=100,0.35w-5,0.45w-15]]輸入w{輸入行李重量}如果w<=50真x←0.25*w假如果w<=100真x←0.25*50+0.35*(w–50)假x←0.25*50+0.35*50+0.45*(w–100)輸出x{輸出托運(yùn)費(fèi)}根據(jù)以上分析,畫出流程圖如圖所示。輸入w{輸入行李重2.Which函數(shù)Which函數(shù)的語法格式為:Which[條件1,表達(dá)式1,條件2,表達(dá)式2,...]注:其中表達(dá)式可以是命令列表,其值為最后表達(dá)式的值True條件1表達(dá)式1{條件1成立時返回的值}條件2表達(dá)式2{條件2成立時返回的值}……2.Which函數(shù)True條件1表達(dá)式1{條件1成立時3.Switch函數(shù)Switch函數(shù)的語法格式為:Switch[表達(dá)式, 值1,表達(dá)式1,值2,表達(dá)式2, ...]Switch[表達(dá)式,值1,表達(dá)式1,值2,表達(dá)式2,...,_,表達(dá)式n+1]表達(dá)式值1表達(dá)式1{表達(dá)式的值與值1相等時計算表達(dá)式1}值2表達(dá)式2{表達(dá)式的值與值2相等時計算表達(dá)式2}……3.Switch函數(shù)表達(dá)式值1表達(dá)式1{表達(dá)式的值與值3.Switch函數(shù)Switch函數(shù)的語法格式為:Switch[表達(dá)式,值1,表達(dá)式1,值2,表達(dá)式2,...,_,表達(dá)式n+1]【例3-6】x=Random[Integer,{1,60}]Switch[Mod[x,4],0,"a",1,"b",2,"c",3,"d"]表達(dá)式值1表達(dá)式1{表達(dá)式的值與值1相等時計算表達(dá)式1}值2表達(dá)式2{表達(dá)式的值與值2相等時計算表達(dá)式2}……3.Switch函數(shù)表達(dá)式值1表達(dá)式1{表達(dá)式的值與值4.1.3循環(huán)結(jié)構(gòu)循環(huán)是指在程序設(shè)計中,從某處開始有規(guī)律地反復(fù)執(zhí)行某一程序塊的現(xiàn)象,重復(fù)執(zhí)行的程序塊稱為“循環(huán)體”。使用循環(huán)可以避免重復(fù)不必要的操作,簡化程序,節(jié)約內(nèi)存,從而提高效率。Mathematica提供的循環(huán)結(jié)構(gòu)函數(shù)有:For、Do、While。4.1.3循環(huán)結(jié)構(gòu)1.For函數(shù)For函數(shù)的語法格式為:For[i=初值,i<=終值,i增量,循環(huán)體]
For(i=初值,i<=終值,i增量){循環(huán)條件成立嗎}循環(huán)體{循環(huán)條件真時執(zhí)行的命令序列}1.For函數(shù)For(i=初值,i<=終值,i增量){1.For函數(shù)For[i=初值,i<=終值,i增量,循環(huán)體]
【例3-7】使用For函數(shù):For[i=1,i<=5,i++,Print[i]] For[s=0;i=5,i<=25,i=i+2,s=s+i];sFor[s=0;i=5,i<=25,i=i+2,s=s+i;Print[s]];For(i=初值,i<=終值,i增量){循環(huán)條件成立嗎}循環(huán)體{循環(huán)條件真時執(zhí)行的命令序列}1.For函數(shù)For(i=初值,i<=終值,i增量){【例3-8】我國古代數(shù)學(xué)家張丘建在算經(jīng)里提出一個世界數(shù)學(xué)史上有名的百雞問題:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問雞翁、母、雛各幾何?解答:設(shè)公雞x只,母雞y只,小雞z只,依題義可以列出以下方程組:在這2個方程中,由于有3個未知數(shù),屬于不定方程,無法直接求解。下面用窮舉法,將各種可能的組合全部一一測試,將符合條件的組合輸出即可【例3-8】我國古代數(shù)學(xué)家張丘建在算經(jīng)里提出一個世界數(shù)學(xué)流程圖如下所示。For[x=1,x<=100,x++,For[y=1,y<=100,y++,z=100-x-y;If[5*x+3*y+z/3==100,Print[x,",",y",",z]]]]x從1到100y從1到100z100-x-y若5*x+3*y+z/3=100T輸出x,y,z流程圖如下所示。x從1到100y從1到100z100-x-【例3-9】輸出能被37整除的三位整數(shù)。str={};For[n=100,n<=1000,n++, If[Mod[n,37]==0,AppendTo[str,n]]]str【例3-9】輸出能被37整除的三位整數(shù)?!纠?-10】輸出九九乘法表p={};For[i=1,i<=9,i++,q={};For[j=1,j<=i,j++,AppendTo[q,i*j]]AppendTo[p,q]]MatrixForm[p]【例3-10】輸出九九乘法表【例3-11】找出1~1000之間的全部“同構(gòu)數(shù)”
分析:如果一個數(shù)出現(xiàn)在其平方數(shù)的右端,則稱此數(shù)為同構(gòu)數(shù)。如:1在12=1的右端,5在52=25的右端,25在252=625的右端等等。一個1位數(shù)是同構(gòu)數(shù)的條件是:x=Mod[x^2,10],一個2位數(shù)是同構(gòu)數(shù)的條件是:x=Mod[x^2,100]等,據(jù)此畫出流程圖,如圖所示。
n從1到1000L1←n=Mod[n^2,10]L2←n=Mod[n^2,100]L3←n=Mod[n^2,1000]如果L1OrL2OrL3T輸出n【例3-11】找出1~1000之間的全部“同構(gòu)數(shù)”n從1到1【例3-11】找出1~1000之間的全部“同構(gòu)數(shù)”For[n=1,n<=1000,n++,L1=(n==Mod[n^2,10]);L2=(n==Mod[n^2,100]);L3=(n==Mod[n^2,1000]);If[L1||L2||L3,Print[n]]]n從1到1000L1←n=Mod[n^2,10]L2←n=Mod[n^2,100]L3←n=Mod[n^2,1000]如果L1OrL2OrL3T輸出n【例3-11】找出1~1000之間的全部“同構(gòu)數(shù)”n從1到12.While函數(shù)While函數(shù)的語法格式為:While[條件,循環(huán)體]【例3-12】s=0;i=5;While[i<=25,s=s+i;i=i+2];s條件循環(huán)體2.While函數(shù)條件循環(huán)體【例3-13】編程求滿足下列不等式的最小自然數(shù)n的值。s=0;n=1;While[s<=5,s=s+1/n;n++]n【例3-13】編程求滿足下列不等式的最小自然數(shù)n的值?!纠?-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6的因子為1、2、3,而6=1+2+3,因而6就是完數(shù)。編制程序,找出1~1000之間的全部“完備數(shù)”。
分析:根據(jù)所提問題可知,要想知道一個自然數(shù)是否為完數(shù),首先必須找出其所有因數(shù)。從2開始到這個數(shù)的最大因數(shù)為止(偶數(shù)不大于其值的二分之一,奇數(shù)不大于其值的三分之一),進(jìn)行整除判斷,凡是可以被整除的數(shù)均為這個數(shù)的因數(shù)。據(jù)此畫出流程圖。
n從1到1000如果n為偶數(shù)真t←n/2假t←n/3a←2,s←1a<=t如果a是n的因子Ts←s+aa←a+1如果s=nT輸出n【例3-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6【例3-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6的因子為1、2、3,而6=1+2+3,因而6就是完數(shù)。編制程序,找出1~1000之間的全部“完備數(shù)”。
For[n=1,n<=1000,n++, t=If[Mod[n,2]==0,n/2,n/3];a=2;s=1;While[a<=t,If[Mod[n,a]==0,s=s+a];a++;];If[s==n,Print[n]]n從1到1000如果n為偶數(shù)真t←n/2假t←n/3a←2,s←1a<=t如果a是n的因子Ts←s+aa←a+1如果s=nT輸出n【例3-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6【例3-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6的因子為1、2、3,而6=1+2+3,因而6就是完數(shù)。編制程序,找出1~1000之間的全部“完備數(shù)”。
For[n=1,n<=1000,n++, t=If[Mod[n,2]==0,n/2,n/3];a=2;s=1;While[a<=t,If[Mod[n,a]==0,s=s+a];a++;];If[s==n,Print[n]]【例3-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如63.Do函數(shù)Do函數(shù)是使用最方便的循環(huán)函數(shù),其語法格式為:(1)執(zhí)行k次循環(huán)體Do[循環(huán)體,{k}](2)執(zhí)行imax次循環(huán)體,i從1變到imax,步長為1Do[循環(huán)體,{i,imax}]相當(dāng)于:For[i=1,i<=imax,i++,循環(huán)體](3)i從imin變到imaxDo[循環(huán)體,{i,imin,imax}]相當(dāng)于:For[i=imin,i<=imax,i++,循環(huán)體]3.Do函數(shù)3.Do函數(shù)Do函數(shù)是使用最方便的循環(huán)函數(shù),其語法格式為:(4)i從imin變到imax,步長為1Do[循環(huán)體,{i,imin,imax,i步長}]相當(dāng)于:For[i=imin,iimax,i=i+i步長,循環(huán)體](5)i從imin變到imax,j從jmin變到j(luò)maxDo[循環(huán)體,{i,imin,imax,i步長},{j,jmin,jmax,j步長}]相當(dāng)于:For[i=imin,iimax,i=i+i步長,For[j=jmin,jjmax,j=j+j步長,循環(huán)體]]3.Do函數(shù)【例3-15】s=0;i=5;While[i<=25,s=s+i;i=i+2];s可以改為如下代碼:s=0;Do[s=s+i,{i,5,25,2}];s【例3-15】【例3-16】將素數(shù)與非素數(shù)分開Do[If[PrimeQ[k],Print[k],Print["",k]],{k,1,20}]【例3-16】將素數(shù)與非素數(shù)分開p={};q={};Do[If[PrimeQ[k],AppendTo[p,k],AppendTo[q,k]],{k,1,20}]pqp={};q={};【例3-17】百雞問題Do[z=100-x-y;If[5*x+3*y+z/3==100,Print[x,",",y",",z]],{x,1,100},{y,1,100}]【例3-17】百雞問題如果整數(shù)方陣的每行各數(shù)之和、每列各數(shù)之和以及兩個對角線上各數(shù)之和全都相等,則稱之為幻方陣。如果整數(shù)方陣的每行各數(shù)之和、每列各數(shù)之和以及兩個對角【例3-18】奇數(shù)階幻方陣中各數(shù)的分布規(guī)律:1.?dāng)?shù)1放在第一行的正中一列。2.從數(shù)2起(1)每數(shù)所在的行數(shù)比前一數(shù)所在的行數(shù)減1,所在的列數(shù)比前一數(shù)所在的列數(shù)加1。(2)若行數(shù)超出下界(即I=0),則改為上界(令I(lǐng)=N),若列數(shù)超出上界(即J=N+1),則改為下界(令J=1)。(3)若某數(shù)為N的倍數(shù),則其后之?dāng)?shù)所在位置為:列數(shù)不變,行數(shù)加1?!纠?-18】奇數(shù)階幻方陣中各數(shù)的分布規(guī)律:據(jù)此分析,畫出流程圖:定義數(shù)組a()i=1,j=(n+1)/21所放的位置a(i,j)=1x從2到n*n若(x–1)Modn=0若x–1是n的倍數(shù),則排下一行Ti=i+1Fi=If(i=1,n,i–1)否則按規(guī)律(1)–(3)j=If(j=n,1,j+1)a(i,j)=xx所放的位置據(jù)此分析,畫出流程圖:定義數(shù)組a()i=1,jn=7;a=Table[0,{i,n},{j,n}];i=1;j=(n+1)/2;a[[i,j]]=1;For[x=2,x<=n*n,x++,If[Mod[x-1,n]==0,i++,i=If[i==1,n,i-1];j=If[j==n,1,j+1]];a[[i,j]]=x]MatrixForm[a]n=7;【例3-19】用Newdon迭代法求方程x=ex–2在1.2附近的根。流程圖:代碼如下:f[x_]:=x-Exp[x]+2;x0=1.2;While[Abs[x-x0]>10^(-6),x=x0;x0=x-f[x]/f'[x];Print[NumberForm[x0,9]]]輸入0次近似值x0與允許誤差限eps當(dāng)|x0-x|>epsx
x0x0
x–f(x)/f'(x)輸出近似值x0【例3-19】用Newdon迭代法求方程x=ex–2在14.1.5輸入與輸出1.輸入框函數(shù)Input[] 輸入數(shù)值表達(dá)式Input[提示字符串]InputString[] 輸入字符串InputString[提示字符串]【例5-1】Input["aaaa"]InputString[提示字符串]4.1.5輸入與輸出2.輸入/出數(shù)據(jù)文件(1)輸出到文件:Export["文件名",表](2)輸入文件:Import["文件名"](3)顯示文件內(nèi)容:!!"文件名"(4)讀數(shù)據(jù)文件:ReadList["文件名",Number]ReadList["文件名",Number,RecordListsTrue]注:無Number,以","作間隔;有Number以空格作間隔2.輸入/出數(shù)據(jù)文件注:無Number,以","作間隔;有【例5-2】a=Table[i+j,{i,0,1},{j,1,4}]Export["out.dat",a]!!out.datImport["out.dat"]Import["out.dat"]ReadList["out.dat"]ReadList["out.dat",RecordLists->True]ReadList["t"]【例5-2】軟件介紹第4講Mathematica編程簡介軟件介紹第4講Mathematica編程簡介4.1Mathematica編程簡介1.Mathematica文件可保存數(shù)據(jù)也可保存命令2.基本程序結(jié)構(gòu)每個單元中的命令可自動執(zhí)行,因此在每個單元中可有三種基本結(jié)構(gòu):順序、分支、循環(huán)。4.1Mathematica編程簡介4.1.1基本概念4.1.2選擇結(jié)構(gòu)(分支結(jié)構(gòu))4.1.3循環(huán)結(jié)構(gòu)4.1.4全局變量與局部變量4.1.5輸入與輸出4.1.1基本概念4.1.1基本概念1.關(guān)系運(yùn)算符、關(guān)系表達(dá)式與關(guān)系函數(shù)關(guān)系表達(dá)式是指用關(guān)系運(yùn)算符將兩個表達(dá)式連接起來的式子(例如a+b>0)關(guān)系運(yùn)算符又稱比較運(yùn)算符,用來對兩個表達(dá)式的值進(jìn)行比較比較的結(jié)果是一個邏輯值(True或False),這個結(jié)果就是關(guān)系表達(dá)式的值。4.1.1基本概念4.1.1基本概念1.關(guān)系運(yùn)算符、關(guān)系表達(dá)式與關(guān)系函數(shù)x==y Equal[x,y]xy Unequal[x,y]x<y Less[x,y]xy LessEqual[x,y]x>y Greater[x,y]xy GreaterEqual[x,y]4.1.1基本概念2.邏輯運(yùn)算符、邏輯表達(dá)式與邏輯函數(shù)對于較為復(fù)雜的條件,必須使用邏輯表達(dá)式。邏輯表達(dá)式是指用邏輯運(yùn)算符連接若干關(guān)系表達(dá)式或邏輯值而成的式子。邏輯表達(dá)式的值也是一個邏輯值。p&&q pq And[p,q]p||q pq Or[p,q]!p ?p Not[p]2.邏輯運(yùn)算符、邏輯表達(dá)式與邏輯函數(shù)2.邏輯運(yùn)算符、邏輯表達(dá)式與邏輯函數(shù)p&&q pq And[p,q]p||q pq Or[p,q]!p ?p Not[p]【例3-1】驗證邏輯分配律:p(qr)=(pq)(pr)a=p&&(q||r);b=(p&&q)||(p&&r);a==bLogicalExpand[a]==LogicalExpand[b]2.邏輯運(yùn)算符、邏輯表達(dá)式與邏輯函數(shù)【例3-2】判斷閏年閏年的條件是:被4整除但不能被100整除,或者能被400整除。y=2000;L=(Mod[y,4]==0&&(!Mod[y,100]==0))||(Mod[y,400]==0)【例3-2】判斷閏年4.1.2選擇結(jié)構(gòu)(分支結(jié)構(gòu))實現(xiàn)選擇結(jié)構(gòu)的函數(shù)有If函數(shù)、Which函數(shù)與Switch函數(shù)三種。1.If函數(shù)If函數(shù)的語法格式為:If[條件,語句1,語句2]注:省略格式:If[條件,語句1]If[條件,,語句2]條件T語句1F語句24.1.2選擇結(jié)構(gòu)(分支結(jié)構(gòu))條件T語句1F語句24.1.2選擇結(jié)構(gòu)(分支結(jié)構(gòu))1.If函數(shù)If函數(shù)的語法格式為:If[條件,語句1,語句2]【例3-3】使用If函數(shù)If[Random[Integer,{1,6}]==3,0,-1]注1:其中隨機(jī)函數(shù)的格式如下:Random[Integer,{1,6}] 返回1~6之間的隨機(jī)整數(shù)Random[Real,{1,6},20] 返回1~6之間的隨機(jī)實數(shù)Random[] 返回0~1之間的隨機(jī)實數(shù)條件T語句1F語句24.1.2選擇結(jié)構(gòu)(分支結(jié)構(gòu))條件T語句1F語句2注2:If函數(shù)格式中的語句1或語句2都可以是以分號相隔的命令列表【例3-4】If[Random[]<=0.5,x=Random[];y=1;Print[x+y],Print[0]]注2:If函數(shù)格式中的語句1或語句2都可以是以分號相隔的命注3:If函數(shù)可以嵌套【例3-5】鐵路托運(yùn)行李,從甲地到乙地,規(guī)定每張客票托運(yùn)費(fèi)計算方法是行李重量不超過50kg時,0.25元/kg,超過50kg而不超過100kg時,其超過部分按0.35元/kg收費(fèi),超過100kg時,其超過部分按0.45元/kg收費(fèi)。編寫程序,輸入行李重量,計算并輸出托運(yùn)的費(fèi)用。分析:設(shè)行李重量為wkg,應(yīng)付運(yùn)費(fèi)為x元,則運(yùn)費(fèi)公式為:注3:If函數(shù)可以嵌套根據(jù)以上分析,畫出流程圖如圖所示。編寫代碼如下:w=40;x=If[w<=50,0.25w,If[w<=100,0.35w-5,0.45w-15]]輸入w{輸入行李重量}如果w<=50真x←0.25*w假如果w<=100真x←0.25*50+0.35*(w–50)假x←0.25*50+0.35*50+0.45*(w–100)輸出x{輸出托運(yùn)費(fèi)}根據(jù)以上分析,畫出流程圖如圖所示。輸入w{輸入行李重2.Which函數(shù)Which函數(shù)的語法格式為:Which[條件1,表達(dá)式1,條件2,表達(dá)式2,...]注:其中表達(dá)式可以是命令列表,其值為最后表達(dá)式的值True條件1表達(dá)式1{條件1成立時返回的值}條件2表達(dá)式2{條件2成立時返回的值}……2.Which函數(shù)True條件1表達(dá)式1{條件1成立時3.Switch函數(shù)Switch函數(shù)的語法格式為:Switch[表達(dá)式, 值1,表達(dá)式1,值2,表達(dá)式2, ...]Switch[表達(dá)式,值1,表達(dá)式1,值2,表達(dá)式2,...,_,表達(dá)式n+1]表達(dá)式值1表達(dá)式1{表達(dá)式的值與值1相等時計算表達(dá)式1}值2表達(dá)式2{表達(dá)式的值與值2相等時計算表達(dá)式2}……3.Switch函數(shù)表達(dá)式值1表達(dá)式1{表達(dá)式的值與值3.Switch函數(shù)Switch函數(shù)的語法格式為:Switch[表達(dá)式,值1,表達(dá)式1,值2,表達(dá)式2,...,_,表達(dá)式n+1]【例3-6】x=Random[Integer,{1,60}]Switch[Mod[x,4],0,"a",1,"b",2,"c",3,"d"]表達(dá)式值1表達(dá)式1{表達(dá)式的值與值1相等時計算表達(dá)式1}值2表達(dá)式2{表達(dá)式的值與值2相等時計算表達(dá)式2}……3.Switch函數(shù)表達(dá)式值1表達(dá)式1{表達(dá)式的值與值4.1.3循環(huán)結(jié)構(gòu)循環(huán)是指在程序設(shè)計中,從某處開始有規(guī)律地反復(fù)執(zhí)行某一程序塊的現(xiàn)象,重復(fù)執(zhí)行的程序塊稱為“循環(huán)體”。使用循環(huán)可以避免重復(fù)不必要的操作,簡化程序,節(jié)約內(nèi)存,從而提高效率。Mathematica提供的循環(huán)結(jié)構(gòu)函數(shù)有:For、Do、While。4.1.3循環(huán)結(jié)構(gòu)1.For函數(shù)For函數(shù)的語法格式為:For[i=初值,i<=終值,i增量,循環(huán)體]
For(i=初值,i<=終值,i增量){循環(huán)條件成立嗎}循環(huán)體{循環(huán)條件真時執(zhí)行的命令序列}1.For函數(shù)For(i=初值,i<=終值,i增量){1.For函數(shù)For[i=初值,i<=終值,i增量,循環(huán)體]
【例3-7】使用For函數(shù):For[i=1,i<=5,i++,Print[i]] For[s=0;i=5,i<=25,i=i+2,s=s+i];sFor[s=0;i=5,i<=25,i=i+2,s=s+i;Print[s]];For(i=初值,i<=終值,i增量){循環(huán)條件成立嗎}循環(huán)體{循環(huán)條件真時執(zhí)行的命令序列}1.For函數(shù)For(i=初值,i<=終值,i增量){【例3-8】我國古代數(shù)學(xué)家張丘建在算經(jīng)里提出一個世界數(shù)學(xué)史上有名的百雞問題:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問雞翁、母、雛各幾何?解答:設(shè)公雞x只,母雞y只,小雞z只,依題義可以列出以下方程組:在這2個方程中,由于有3個未知數(shù),屬于不定方程,無法直接求解。下面用窮舉法,將各種可能的組合全部一一測試,將符合條件的組合輸出即可【例3-8】我國古代數(shù)學(xué)家張丘建在算經(jīng)里提出一個世界數(shù)學(xué)流程圖如下所示。For[x=1,x<=100,x++,For[y=1,y<=100,y++,z=100-x-y;If[5*x+3*y+z/3==100,Print[x,",",y",",z]]]]x從1到100y從1到100z100-x-y若5*x+3*y+z/3=100T輸出x,y,z流程圖如下所示。x從1到100y從1到100z100-x-【例3-9】輸出能被37整除的三位整數(shù)。str={};For[n=100,n<=1000,n++, If[Mod[n,37]==0,AppendTo[str,n]]]str【例3-9】輸出能被37整除的三位整數(shù)?!纠?-10】輸出九九乘法表p={};For[i=1,i<=9,i++,q={};For[j=1,j<=i,j++,AppendTo[q,i*j]]AppendTo[p,q]]MatrixForm[p]【例3-10】輸出九九乘法表【例3-11】找出1~1000之間的全部“同構(gòu)數(shù)”
分析:如果一個數(shù)出現(xiàn)在其平方數(shù)的右端,則稱此數(shù)為同構(gòu)數(shù)。如:1在12=1的右端,5在52=25的右端,25在252=625的右端等等。一個1位數(shù)是同構(gòu)數(shù)的條件是:x=Mod[x^2,10],一個2位數(shù)是同構(gòu)數(shù)的條件是:x=Mod[x^2,100]等,據(jù)此畫出流程圖,如圖所示。
n從1到1000L1←n=Mod[n^2,10]L2←n=Mod[n^2,100]L3←n=Mod[n^2,1000]如果L1OrL2OrL3T輸出n【例3-11】找出1~1000之間的全部“同構(gòu)數(shù)”n從1到1【例3-11】找出1~1000之間的全部“同構(gòu)數(shù)”For[n=1,n<=1000,n++,L1=(n==Mod[n^2,10]);L2=(n==Mod[n^2,100]);L3=(n==Mod[n^2,1000]);If[L1||L2||L3,Print[n]]]n從1到1000L1←n=Mod[n^2,10]L2←n=Mod[n^2,100]L3←n=Mod[n^2,1000]如果L1OrL2OrL3T輸出n【例3-11】找出1~1000之間的全部“同構(gòu)數(shù)”n從1到12.While函數(shù)While函數(shù)的語法格式為:While[條件,循環(huán)體]【例3-12】s=0;i=5;While[i<=25,s=s+i;i=i+2];s條件循環(huán)體2.While函數(shù)條件循環(huán)體【例3-13】編程求滿足下列不等式的最小自然數(shù)n的值。s=0;n=1;While[s<=5,s=s+1/n;n++]n【例3-13】編程求滿足下列不等式的最小自然數(shù)n的值?!纠?-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6的因子為1、2、3,而6=1+2+3,因而6就是完數(shù)。編制程序,找出1~1000之間的全部“完備數(shù)”。
分析:根據(jù)所提問題可知,要想知道一個自然數(shù)是否為完數(shù),首先必須找出其所有因數(shù)。從2開始到這個數(shù)的最大因數(shù)為止(偶數(shù)不大于其值的二分之一,奇數(shù)不大于其值的三分之一),進(jìn)行整除判斷,凡是可以被整除的數(shù)均為這個數(shù)的因數(shù)。據(jù)此畫出流程圖。
n從1到1000如果n為偶數(shù)真t←n/2假t←n/3a←2,s←1a<=t如果a是n的因子Ts←s+aa←a+1如果s=nT輸出n【例3-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6【例3-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6的因子為1、2、3,而6=1+2+3,因而6就是完數(shù)。編制程序,找出1~1000之間的全部“完備數(shù)”。
For[n=1,n<=1000,n++, t=If[Mod[n,2]==0,n/2,n/3];a=2;s=1;While[a<=t,If[Mod[n,a]==0,s=s+a];a++;];If[s==n,Print[n]]n從1到1000如果n為偶數(shù)真t←n/2假t←n/3a←2,s←1a<=t如果a是n的因子Ts←s+aa←a+1如果s=nT輸出n【例3-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6【例3-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6的因子為1、2、3,而6=1+2+3,因而6就是完數(shù)。編制程序,找出1~1000之間的全部“完備數(shù)”。
For[n=1,n<=1000,n++, t=If[Mod[n,2]==0,n/2,n/3];a=2;s=1;While[a<=t,If[Mod[n,a]==0,s=s+a];a++;];If[s==n,Print[n]]【例3-14】“完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如63.Do函數(shù)Do函數(shù)是使用最方便的循環(huán)函數(shù),其語法格式為:(1)執(zhí)行k次循環(huán)體Do[循環(huán)體,{k}](2)執(zhí)行imax次循環(huán)體,i從1變到imax,步長為1Do[循環(huán)體,{i,imax}]相當(dāng)于:For[i=1,i<=imax,i++,循環(huán)體](3)i從imin變到imaxDo[循環(huán)體,{i,imin,imax}]相當(dāng)于:For[i=imin,i<=imax,i++,循環(huán)體]3.Do函數(shù)3.Do函數(shù)Do函數(shù)是使用最方便的循環(huán)函數(shù),其語法格式為:(4)i從imin變到imax,步長為1Do[循環(huán)體,{i,imin,imax,i步長}]相當(dāng)于:For[i=imin,iimax,i=i+i步長,循環(huán)體](5)i從imin變到imax,j從jmin變到j(luò)maxDo[循環(huán)體,{i,imin,imax,i步長},{j,jmin,jmax,j步長}]相當(dāng)于:For[i=imin,iimax,i=i+i步長,For[j=jmin,jjmax,j=j+j步長,循環(huán)體]]3.Do函數(shù)【例3-15】s=0;i=5;While[i<=25,s=s+i;i=i+2];s可以改為如下代碼:s=0;Do[s=s+i,{i,5,25,2}];s【例3-15】【例3-16】將素數(shù)與非素數(shù)分開Do[If[PrimeQ[k],Print[k],Print["",k]],{k,1,20}]【例3-16】將素數(shù)與非素數(shù)分開p={};q={};Do[If[PrimeQ[k],AppendTo[p,k],AppendTo[q,k]],{k,1,20}]pqp={};q={};【例3-17】百雞問題D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專利代理居間合同樣本
- 物業(yè)管理委托合同
- 家庭室內(nèi)外裝修合同書
- 多模式跨境電子商務(wù)解決方案策劃與設(shè)計全案指南
- 研發(fā)項目管理作業(yè)指導(dǎo)書
- 生物技術(shù)與實驗室技能作業(yè)指導(dǎo)書
- 電線電纜購銷合同
- 2025年天津年貨運(yùn)從業(yè)資格證考試從業(yè)從業(yè)資格資格題庫及答案
- 2025年烏魯木齊貨運(yùn)從業(yè)資格考試題目大全
- 小學(xué)青島版一年級數(shù)學(xué)上冊口算練習(xí)題總匯
- 交管12123學(xué)法減分題庫(含答案)
- 山東省濟(jì)南市槐蔭區(qū)2024-2025學(xué)年八年級上學(xué)期期末語文試題(含答案)
- 北京市海淀區(qū)2024-2025學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 23G409先張法預(yù)應(yīng)力混凝土管樁
- 2025年廣西柳州市中級人民法院招錄聘用工作人員17人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年全國職業(yè)院校技能大賽高職組(研學(xué)旅行賽項)考試題庫(含答案)
- 十八項核心制度
- 煤礦機(jī)電運(yùn)輸培訓(xùn)課件
- “德能勤績廉”考核測評表
- 三年級下冊口算天天100題(A4打印版)
- 九年級數(shù)學(xué)上冊黃金分割PPT課件
評論
0/150
提交評論