版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
求解線性方程組摘要:自從1946年世界上第一臺(tái)計(jì)算機(jī)誕生,計(jì)算機(jī)在我們的生活作用也越來(lái)越重要,它多樣化的功能與日趨簡(jiǎn)便的操作使得利用計(jì)算機(jī)求解算數(shù)問(wèn)題成為一種趨勢(shì)。線性方程組求解計(jì)算量大過(guò)程復(fù)雜,所以我們小組通過(guò)C++軟件編寫(xiě)求解線性方程組程序。該程序功能強(qiáng)大,具有求解線性方程組、三角函數(shù)、對(duì)數(shù)函數(shù)、指數(shù)函數(shù)的功能。而且程序加了新的元素,全數(shù)字化控制,使用簡(jiǎn)單方便。關(guān)鍵詞:高斯消元法;C語(yǔ)言;線性方程組;常用函數(shù)求解。1緒論1.1研究背景隨著人們對(duì)計(jì)算類軟件的需求,求解線性方程組成為常見(jiàn)的應(yīng)用。線性方程組求解未知數(shù)多,方程復(fù)雜,人工計(jì)算較難實(shí)現(xiàn)。為解決這類問(wèn)題,本小組通過(guò)微軟公司的VC6.0軟件設(shè)計(jì)一款用C語(yǔ)言求解線性方程組的軟件,并能進(jìn)行常用函數(shù)的輔助運(yùn)算。1.2主要工作一個(gè)軟件開(kāi)發(fā)需要大量人力、物力支持,還需要合理有序的工作分配,明確一個(gè)軟件必須要有哪些功能,可以添加哪些功能。線性方程組求解程序有求解功能和輔助功能。因此主要工作是深刻理解高斯消元法原理和初等矩陣,掌握矩陣變換步驟,常用函數(shù)的原理;再利用C語(yǔ)言編寫(xiě)一系列代碼,解決方程組求解問(wèn)題。1.3本文結(jié)構(gòu)本文第1部分緒論主要說(shuō)明了本文的研究背景、主要工作和實(shí)現(xiàn)方法。第2部分相關(guān)知識(shí)介紹。第3部分系統(tǒng)設(shè)計(jì),闡述了需求分析、系統(tǒng)模型設(shè)計(jì)和系統(tǒng)工作流程設(shè)計(jì)。第4部分系統(tǒng)實(shí)現(xiàn)介紹了系統(tǒng)各個(gè)功能模塊,并描述了系統(tǒng)功能圖。第5部分軟件的調(diào)試和驗(yàn)證,進(jìn)行截圖。第六部分總結(jié)和心的體會(huì)。2相關(guān)知識(shí)以下就線形方程求解過(guò)程中和其它的相關(guān)知識(shí)進(jìn)行間要介紹。2.1高斯消元法原理2.1.1初等矩陣(1)單位矩陣第i,j兩行(列)互換得到的方陣為與.。將矩陣B的第i,j兩行(列)互換所得矩陣B1,即有PijB=B1單位矩陣第i行(列)乘以常數(shù)化得到初等方陣D(k),將矩陣B的第i行(列)乘以k得到矩陣&2,即有B2=Dj(k)B。將單位矩陣的第j行(列)的k倍加到第i行(列)得到初等方陣七.(k),矩陣B的第j行(列)的k倍加到第i行(列)得到矩陣B3,即有B3=Tj(k)B。矩陣B的第i列的k倍加到第j列得到矩陣B3,即有B3=BT..(k)02.1.2高斯消元法 '消元法可用來(lái)找出下列方程組的解或其解的限制:2a+b-x=8...X)-3a-b+2c=-11.(.Y)-2a+b+2c=-3...(Z)這個(gè)算法的原理是:首先,要將X以下的等式中的a消除,然后再將Y以下的等式中的b消除。這樣可使整個(gè)方程組變成一個(gè)三角形似的格式。之后再將已得出的答案一個(gè)個(gè)地代入已被簡(jiǎn)化的等式中的未知數(shù)中,就可求出其余的答案了。在剛才的例子中,將3/2X和Y相加,就可以將Y中的a消除了。然后再將X和Z相加,就可以將Z中的a消除??梢赃@樣寫(xiě):Y+3/2X—Y;Z+X—Z結(jié)果就是:2a+b-c=8;1/2b+1/2c=1;2b+c=5現(xiàn)在將-4Y和Z相加,就可將Z中的b消除:Z+(-4Y)—Z其結(jié)果是:2a+b一c=81/2b+1/2c=1-c=1這樣就完成了整個(gè)算法的初步,一個(gè)三角形的格式(指:變量的格式而言,上例中的變量各為(3,2,1個(gè))出現(xiàn)了。第二步,就是由尾至頭地將已知的答案代入其他等式中的未知數(shù)。第一個(gè)答案就是:c=-1然后就可以將c代入Y中,立即就可得出第二個(gè)答案:b=3之后,將c和b代入X之中,最后一個(gè)答案就出來(lái)了:a=23軟件設(shè)計(jì)3.1需求分析經(jīng)過(guò)對(duì)程序設(shè)計(jì)題目的分析可知,整個(gè)程序的設(shè)計(jì)實(shí)現(xiàn)大致分為三個(gè)模塊,分別是:輸入方程組,計(jì)算方程組,繼續(xù)運(yùn)算/退出。要求以菜單的形式調(diào)用各功能函數(shù):程序可讀性強(qiáng),界面新意,輸出形式美觀。3.2軟件流程設(shè)計(jì)打開(kāi)線性方程求解系統(tǒng)軟件,進(jìn)入主界面:輸入“1”進(jìn)入線性方程求解系統(tǒng)模塊,輸入線性方程組相關(guān)系求解,按任意鍵返回主界面;輸入“2”進(jìn)入輔助系統(tǒng)模塊,可進(jìn)行三角函數(shù),ex函數(shù),lgx函數(shù),lnx函數(shù)求解,以滿足不同 算函數(shù)計(jì)算的需求;輸入“0”退出線性方程求界系統(tǒng)軟件。4軟件功能實(shí)現(xiàn)該程序解決了線性方程組求值問(wèn)題,大大縮短了計(jì)算時(shí)間。同時(shí)還添加了輔助功能,可以求解三角函數(shù)、反三角函數(shù)、指數(shù)函數(shù)、對(duì)數(shù)函數(shù)。4.1方程組參數(shù)輸入和存儲(chǔ)模塊本模塊主要實(shí)現(xiàn)對(duì)是方程組參數(shù)的輸入和存儲(chǔ),二維數(shù)組是存儲(chǔ)方程組參數(shù)非常方便的方法,這樣便于用戶輸入?yún)?shù)和程序的計(jì)算。定義一個(gè)二維數(shù)組a[i][j],確定線性方程組的方程個(gè)(fnumber)和未知數(shù)(wunumber)的個(gè)數(shù);輸入方程系數(shù)和常數(shù),且存儲(chǔ)在二維數(shù)組,用此語(yǔ)句{for(i=0;i<number;i++){for(j=0;j<number+1;j++){a[i][j]=0;}}對(duì)矩陣置零,這樣便于后面對(duì)程序的相關(guān)操作;{for(i=0;i<fnumber;i++)for(j=0;j<(wnumber+1);j++){scanf("%lf",&a[i][j]);}參數(shù)輸入語(yǔ)句,這樣用戶就能輸入所求解方程,并且能夠?qū)崟r(shí)調(diào)整。4.2方程組初等轉(zhuǎn)換模塊本模塊是對(duì)矩陣的初等變換,是利用高斯消元法求解方程組的關(guān)鍵步驟,能夠把方程組轉(zhuǎn)換為適合的形式,對(duì)程序的求解編寫(xiě)和減小時(shí)間復(fù)雜度有重要的影響,本模塊充分完成了對(duì)高斯法的正確編寫(xiě)。基于高斯消元法基本思想,為使能逐一對(duì)未知量的求解,第一步在初等矩陣中,定出每列的絕對(duì)值最大的一個(gè)非0的數(shù),將第一行的值與該行調(diào)換,使得第一行擁有這一列的最大值,每次計(jì)算都要記錄所用計(jì)算次數(shù),所以定義變量(cishu)作為計(jì)算次數(shù)。用下列語(yǔ)句實(shí)現(xiàn):for(cishu=1;cishu<number;cishu++){for(i=j=(cishu-1);i<number;i++){if(a[i][j]<0){A[i][j]=-a[i][j];}else{A[i][j]=a[i][j];}}〃將第i列數(shù)值取絕對(duì)值放入數(shù)組A中hangmax=j;max=A[cishu-1][j];for(i=j+1;i<number;i++){if(A[i][j]>max){hangmax=i;max=A[i][j];}}〃找到第i列的最大值以及所在行if(hangmax!=j){i=cishu-1;for(j=0;j<=number;j++){temp=a[i][j];a[i][j]=a[hangmax][j];a[hangmax][j]=temp;}}〃第i列最大值所在行的值與第一行的值互換第二步將第一行的數(shù)字除以該數(shù),使得該行的第一個(gè)數(shù)成為1:{for(j=i=(cishu-1);j<=number;j++){a[i][j]=a[i][j]/temp;},在第i行中,從第i列到第number列的數(shù)值依次除以a[i][i],這樣就實(shí)現(xiàn)了未知量系數(shù)的改變。第三步減去第一行乘以每一行的第一個(gè)數(shù),使得每一行的第一個(gè)數(shù)變?yōu)?:{a[i][j]=a[i][j]-(temp*a[cishu-1][j]);},這樣就完成逐一對(duì)未知量的消去,變成了對(duì)其中一個(gè)未知量的求解,生成了增廣矩陣。4.3方程組求解判斷模塊方程組的解的情況較復(fù)雜,有唯一解、無(wú)解和無(wú)數(shù)解三種情況,本模塊完成了對(duì)方程組解情況的判定和求解表示,系統(tǒng)的表現(xiàn)解的情況?;诔醯茸儞Q后,第一行以下的等式中的第一個(gè)未知量消除,然后再將第二個(gè)以下的等式中的第二個(gè)未知量消除。以此類推,這樣可使整個(gè)方程組變成一個(gè)三角形似的格式,最后一行變得出其中一個(gè)未知量的數(shù)值。之后再將已得出的未知量一個(gè)個(gè)地代入已被簡(jiǎn)化的等式中的未知方程中,就可求出其余未知量了。在模塊1中此語(yǔ)句(for(i=0;i<number;i++){biaoji[i]=1;})對(duì)方程組假設(shè)所有未知量都有解并進(jìn)行標(biāo)記。矩陣轉(zhuǎn)換并計(jì)算后,規(guī)定biaoji[i]=0表示為無(wú)解;biaoji[i]=1表示為有解;biao[i]=2表示為無(wú)窮解。這樣就對(duì)方程解的情況就行了詳細(xì)的區(qū)分,增強(qiáng)了程序的可操作性。4.4輔助計(jì)算模塊本模塊是對(duì)線性方程組求解程序的補(bǔ)充應(yīng)用,編寫(xiě)對(duì)常用函數(shù)進(jìn)行計(jì)算程序。c語(yǔ)言庫(kù)中含有各種函數(shù)庫(kù),直接進(jìn)行調(diào)用。此模塊可以對(duì)三角函數(shù),反三角函數(shù),#x,Inxlogx求解計(jì)算,并能進(jìn)行弧度制與角度制進(jìn)行切換。由于此模塊程序計(jì)算的函數(shù)較多,選擇具有代表性的三角函數(shù)計(jì)算程序。此程序如下:if(shuzhileixing=='1'){printf("角度值.<例如您想輸入60度,您輸入60即可.>\n");}if(shuzhileixing=='2'){printf("弧度值.\n<您只能輸入xpi類型數(shù)據(jù).例如您想輸入2pi,您輸入2即可.(pi=3.1415926535)>\n");printf("請(qǐng)您配合.否則系統(tǒng)可能不能正常運(yùn)行!\n");printf("\a\a");}if(ch2=T){printf("正在為您求解sinx函數(shù).\n");printf("請(qǐng)您輸入x:");scanf("%lf",&x);if(shuzhileixing=='2'){x1=x*PI;y=sin(x1);printf("sin%lfpi=%lf\n”,x,y);}else{x1=(x/180)*PI;y=sin(x1);printf("sin%lf度=%lf\n”,x,y);}}根據(jù)用戶輸入的不同字符,輸入字符1則可以輸入任意弧度,輸入字符2則可以輸入任意角度,用戶可以進(jìn)行弧度制與角度制間任意切換。4.5主函數(shù)模塊程序需要主函數(shù)對(duì)各模塊函數(shù)的調(diào)用,這樣就不需要把所有的模塊函數(shù)寫(xiě)在一個(gè)主函數(shù)內(nèi),便于讀懂程序,各模塊的分工清晰。本模塊對(duì)各模塊進(jìn)行調(diào)用,包括xianxingfangchengzuqiuj通數(shù)和fuzhuxitong函數(shù),選擇字符1,調(diào)用xianxingfangchengzuqiuj選擇字符2,調(diào)用fuzhuxitong選擇字符0,退出。4.6界面模塊界面模塊由主界面和輔助系統(tǒng)界面模塊組成,用戶輸入的字符不同就可以進(jìn)行相關(guān)的計(jì)算,同時(shí)規(guī)定輸入的字符必須符合程序相關(guān)的設(shè)定,否則在界面中沒(méi)有反應(yīng),這樣避免了出現(xiàn)錯(cuò)誤。例如語(yǔ)句{while((ch-'0')<0||(ch-'0')>2){ch限制了輸入字符的范圍。函數(shù)調(diào)用庫(kù)函數(shù)windows.h文件改變背景和字體顏色,使其背景為淡綠色,字體為亮白色。這樣不僅有了美化效果,更能保護(hù)視力。函數(shù)更調(diào)用了system(”clS,清屏函數(shù),保證了每個(gè)功能模塊有獨(dú)立的操作界面,改變了單界面的繁雜,簡(jiǎn)潔明了。5調(diào)試與操作說(shuō)明5.1程序調(diào)試分析本程序在求線性方程組的時(shí)候,充分考慮用戶輸入方程組不同形式和未知量的求解的不同情況?;诟咚瓜ㄇ蠼舛嘣€性方程核心思想,對(duì)程序的調(diào)試分析。為擴(kuò)充程序的使用能力,對(duì)程序功能進(jìn)行加強(qiáng),設(shè)計(jì)了輔助的程序。在調(diào)試過(guò)程中才用分模塊的調(diào)試方法,對(duì)程序進(jìn)行調(diào)試分析和改進(jìn)。5.2調(diào)試結(jié)果5.2.1開(kāi)始界面打開(kāi)VC6.0,運(yùn)行線性方程求解系統(tǒng)代碼,進(jìn)入線性方程組求解系統(tǒng),可看見(jiàn)選擇項(xiàng),輸入“1進(jìn)入線性方程組求解模塊;輸入“2進(jìn)入輔助系統(tǒng);輸入“0退出線性方程組求解操作系統(tǒng)???????????)<^:?用線性方程組求解操作系???????????>-進(jìn)X求辭系統(tǒng).-磐入輔商索統(tǒng)?肺一喪出-????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????>請(qǐng)茲又您的選母圖5-1開(kāi)始界面5.2.2方程組求解界面在主界面輸入“1,”進(jìn)入線性方程組求解模塊,按提示輸入線性方程組的方程個(gè)數(shù)和未知數(shù)個(gè)數(shù)后回車(chē)鍵,再按提示輸入每個(gè)方程的各項(xiàng)系數(shù)和常數(shù),回車(chē)鍵得到線性方程組的解,若所求線性方程組無(wú)解,則會(huì)顯示方程組無(wú)解,按任意鍵可返回主菜單。>>>>>>>>>>>>>>>>>>>>>>>>>>>>正在為忠束解線性方程組?>>>>>>>>>>>>>>>>>>>>>>>>>>>>請(qǐng)輸入線性方程組的方程個(gè)數(shù)和未岸*入第1個(gè)方程的各項(xiàng)系數(shù)和常數(shù):13-7-8請(qǐng)輸入第2個(gè)方程的各項(xiàng)系數(shù)和常數(shù):籬人蠢個(gè)方程的各項(xiàng)系數(shù)和常數(shù):高款肇尋方程的各項(xiàng)系數(shù)和常數(shù):14-12-15線性方程組的解為:xi=5.000000x2=-2.000000X3=1.000000>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>按任意鍵近I!主菜單=>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>圖5-2有解情況的圖求解線性方程組界面,通過(guò)輸入方程個(gè)數(shù)和未知數(shù),確定矩陣大小且輸入各項(xiàng)系數(shù)和常數(shù)。方程組輸入完畢按回車(chē)鍵即給出答案。再按任意鍵返回主菜單。??????????????11請(qǐng)輸入線性方程組的方程個(gè)數(shù)和未知數(shù)住??????????????11請(qǐng)輸入線性方程組的方程個(gè)數(shù)和未知數(shù)住請(qǐng)輸入第1個(gè)方程的各項(xiàng)系數(shù)和常數(shù):3-3156請(qǐng)輸入第2個(gè)方程的各項(xiàng)系數(shù)和W:帝盅搭捽方程的各項(xiàng)系數(shù)和常數(shù):翕忌翟且番解冷H無(wú)解,點(diǎn)無(wú)解,?無(wú)解,x4=C4成為任意常數(shù)-<x=l,2,3,……>???????????????按任意鍵返E1主菜^-???????????????圖5-3無(wú)解情)兄圖說(shuō)明:c4為任意常數(shù)。求解線性方程組界面,通過(guò)輸入方程個(gè)數(shù)和未知數(shù),確定矩陣大小且輸入各項(xiàng)系數(shù)和常數(shù)。方程組輸入完畢按回車(chē)鍵即給出答案。再按任意鍵返回主菜單。Cx為任意常數(shù),其中未知量用Cx表示,表示為無(wú)窮解情況。??????????????正在為您求解線性方程組.??????????????請(qǐng)輸入線性方程組的方程個(gè)數(shù)和未菊敏哦:*34請(qǐng)輸入第1個(gè)方程的各項(xiàng)系數(shù)和常數(shù):1-11-11請(qǐng)輸入第2個(gè)方程的各項(xiàng)系數(shù)和常數(shù):1-1-11請(qǐng)輸入第3個(gè)方程的各項(xiàng)系數(shù)和常數(shù):1-1-22-05&性方程組的靡如…xl=1.岫&姬『C2-C3+C4X2=-1.000000+2.000000C3-2.000000C4x3=0.500000+C4x4=C4成為任意常數(shù).<x=l,2,3,■???????????????按任意鍵返回主菜單.???????????????圖5-4無(wú)窮解情況選擇進(jìn)入輔助界面,并通過(guò)數(shù)字選擇計(jì)算哪一種函數(shù)。圖5-5輔助程序界面選擇進(jìn)入求解三角函數(shù)界面,并通過(guò)數(shù)字選擇計(jì)算哪一個(gè)函數(shù)。????????????歡迎您使用三角函數(shù)求解操作系統(tǒng)!????????????1- sinx 2 - cosx 3 - tanx4— cscx 5 - secx 6 - cota7— arcsinx 8 - arccosx 9 - arctanx???????????????????????????????????????>請(qǐng)輸入您的選擇:圖5-6三角函數(shù)求解界面選擇求解sin函數(shù),通過(guò)數(shù)字控制進(jìn)入求解sin函數(shù)界面,輸入x,即給定答案并再次選擇“0”返回輔助系統(tǒng)主菜單;“1”繼續(xù)計(jì)算。a度值.〈例如您想輸入舞度,您輸入6匝即可.>./MfeinxK'請(qǐng)您輸Ax:60[^=^.866025技偵返回蜀瞻統(tǒng)主菜單成一鍵繼續(xù);!藤其余任意矗返回三角函數(shù)求解主菜單.圖5-7正弦函數(shù)求解界面#include<stdio.h>#include<math.h>#include<conio.h>#include<windows.h>#defineMAX50#definePI3.1415926535intxianxingfangchengzuqiujie(){inti,j,fnumber,hangmax,k,cishu,wu=0,biaoji[MAX],i1,wnumber,number,index;doublea[MAX][MAX+1],A[MAX][MAX+1],max,temp,x[MAX],chazhi;charch;system("cls");printf(">>>>>>>>>>>>>>>>>>>>正在為您求解線性方程組.>>>>>>>>>>>>>>>>>>>>>>>>\n”);printf(-請(qǐng)輸入線性方程組的方程個(gè)數(shù)和未知數(shù)的個(gè)數(shù):\n");scanf("%d%d”,&fnumber,&wnumber);if(fnumber>=wnumber){number=fnumber;}else{number=wnumber;}if(fnumber!=wnumber){for(i=0;i<number;i++){for(j=0;j<number+1;j++){a[i][j]=0;}}〃矩陣置0}if(fnumber<=wnumber){for(i=0;i<fnumber;i++){printf("請(qǐng)輸入第%d個(gè)方程的各項(xiàng)系數(shù)和常數(shù):\n",i+1);for(j=0;j<(wnumber+1);j++){scanf("%lf",&a[i][j]);}}〃輸入系數(shù)和常數(shù)}else{for(i=0;i<fnumber;i++){printf("請(qǐng)輸入第%d個(gè)方程的各項(xiàng)系數(shù)和常數(shù):\n",i+1);for(j=0;j<(wnumber+1);j++){if(j!=wnumber){scanf("%lf",&a[i][j]);}else{scanf("%lf",&a[i][j+1]);}}〃輸入系數(shù)和常數(shù)}for(i=0;i<number;i++){biaoji[i]=1;}〃首先假設(shè)所有未知數(shù)有解for(cishu=1;cishu<number;cishu++){for(i=j=(cishu-1);i<number;i++){if(a[i][j]<0){A[i][j]=-a[i][j];}else{A[i][j]=a[i][j];}}〃將第1列數(shù)值取絕對(duì)值放入數(shù)組A中hangmax=j;max=A[cishu-1][j];for(i=j+1;i<number;i++){if(A[i][j]>max){hangmax=i;max=A[i][j];}}〃找到第1列的最大值以及所在行if(hangmax!=j){i=cishu-1;for(j=0;j<=number;j++){temp=a[i][j];a[i][j]=a[hangmax][j];a[hangmax][j]=temp;}}〃第洌最大值所在行的值與第一行的值互換temp=a[cishu-1][cishu-1];if(temp){for(j=i=(cishu-1);j<=number;j++){a[i][j]=a[i][j]/temp;}〃在第i彳亍中,從第洌到第number列的數(shù)值依次除以a[i][i];for(k=cishu;k<number;k++){temp=a[k][cishu-1];for(i=k,j=cishu-1;j<=number;j++){a[i][j]=a[i][j]-(temp*a[cishu-1][j]);}}}for(i=cishu-1;i<number;i++){for(j=cishu-1;j<=number;j++){if(a[i][j]!=0){if(fabs(a[i][j])<pow(0.1,15)){a[i][j]=0;}}}}}〃生產(chǎn)增廣矩陣for(i=number-1;i>=0;i--){i1=i;if(i1==(number-1)){if(a[i][i]!=0){chazhi=a[i][number];x[i+1]=chazhi/a[i][i];}else{if(a[i][i+1]!=0){biaoji[i]=0;//標(biāo)記為無(wú)解wu++;}else{biaoji[i]=2;//標(biāo)記為無(wú)窮解}}}else{chazhi=a[i][number];for(j=i+1;(j<number)&&(biaoji[i]!=0);j++){if(biaoji[j]==1){if(a[i][j]!=0){chazhi=chazhi-a[i][j]*x[j+1];}}if(biaoji[j]==0){if(a[i][j]!=0){biaoji[i]=0;wu++;}else{if((a[i][j-1]!=0)&&(a[i][j+1])!=0){biaoji[i]=0;wu++;}}}if(biaoji[j]==2){if(a[i][j]!=0){biaoji[i]=2;}}}if(biaoji[i]==1){if(a[i][i]!=0)x[i+1]=chazhi/a[i][i];}else{if(chazhi==0){biaoji[i]=2;}else{biaoji[i]=0;wu++;}}}}}〃根據(jù)增廣矩陣代入求解if(wu!=number){printf("線性方程組的解為:\n");for(i=1;i<=wnumber;i++){index=0;if(biaoji[i-1]==1){if(x[i]!=0){printf("x%d=%lf”,i,x[i]);}else{printf("x%d=0”,i);}}if(biaoji[i-1]==0){printf("x%d無(wú)解!”,i);}if(biaoji[i-1]==2){chazhi=a[i-1][number];for(j=i;j<number;j++)if((biaoji[j]==1)&&(a[i-1][j]!=0)){chazhi=chazhi-a[i-1][j]*x[j+1];}}if(chazhi!=0){printf("x%d=%lf”,i,chazhi);for(j=i;j<number;j++){if((biaoji[j]==2)&&(a[i-1][j]>0)){if(a[i-1][j]!=1){printf("%lfC%d”,-a[i-1][j],j+1);}else{printf("-C%d”,j+1);}}if((biaoji[j]==2)&&(a[i-1][j]<0)){if(a[i-1][j]!=-1){printf("+%lfC%d”,-a[i-1][j],j+1);}else{printf("+C%d”,j+1);}}}}else{if(a[i-1][i-1]==0){printf("x%d=C%d”,i,i);}else{printf("x%d=",i);for(j=i;j<number;j++){if((biaoji[j]=2)&&(a[i-1][j]>0)){if(a[i-1][j]!=1){printf("-%lfC%d",a[i-1][j],j+1);}else{printf("-C%d”,j+1);}index++;}if((biaoji[j]==2)&&(a[i-1][j]<0)){if(index!=0){if(a[i-1][j]!=-1){printf("+%lfC%d”,-a[i-1][j],j+1);//hhh}else{printf("+C%d”,j+1);}index++;}else{if(a[i-1][j]!=-1){printf("%lfC%d",-a[i-1][j],j+1);//ggg}else{printf("C%d”,j+1);}index++;}}printf("\n");}}else{printf("方程組無(wú)解!\n");}〃輸出結(jié)果for(i=0;i<wnumber;i++){if(biaoji[i]==2){printf("Cx為任意常數(shù).(x=1,2,3,????\n)');break;}}printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>按任意鍵返回主菜單.>>>>>>>>>>>>>>>>>>>>>>”);ch=getch();system("cls");return0;}charzhujiemian(){charch='3';printf(">>>>>>>>>>>>>>>歡迎您使用線性方程組求解操作系統(tǒng)!>>>>>>>>>>>>>>>>>>>\n”);printf(" 1 -進(jìn)入求解系統(tǒng).\n");printf(" 2 -進(jìn)入輔助系統(tǒng).\n");printf(" 0 -退出.\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");printf("請(qǐng)輸入您的選擇:”);while((ch-'0')<0||(ch-'0')>2){ch=getch();}returnch;}//主界面charfuzhuxitongjiemian(){charch='5';system("cls");printf(">>>>>>>>>>>歡迎您使用線性方程組求解輔助系統(tǒng)!>>>>>>>>>>>>>>>>>>>>>>>\n”);printf("1-求解三角函數(shù).\n");printf("2-求解eAx函數(shù),\n");printf("3-求解lgx函數(shù).\n");printf("4-求解lnx函數(shù),\n");printf("0-退出,\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");printf("請(qǐng)輸入您的選擇:”);while((ch-'0')<0ll(ch-'0')>4){ch=getch();}system("cls");returnch;}〃輔助系統(tǒng)界面intfuzhuxitong(){doublex,y,x1;inti;charch,ch1,ch2,ch3,shuzhileixing;while((ch=fuzhuxitongjiemian())!='0'){ch1='1';if(ch=='1'){while(ch1!='0'){shuzhileixing='3';system("cls");printf(">>>>>>>>>>歡迎您使用三角函數(shù)求解操作系統(tǒng)!>>>>>>>>>>>>>>>>\n”);printf("1-sinx2-cosx3-tanx\n");printf("4-cscx5-secx6-cota\n");printf("7-arcsinx8-arccosx9-arctanx\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");printf("請(qǐng)輸入您的選擇:,ch2=getch();while((ch2-'0')<1ll(ch2-'0')>9){ch2=getch();}system("cls");if((ch2-'0')>=7){shuzhileixing='3';}else{printf("以下是您輸入的數(shù)值類型:\n");printf("1-角度值.2-弧度值.\n");printf("請(qǐng)選擇您輸入的數(shù)值類型:”);shuzhileixing=getch();}ch3='1';while((shuzhileixing!='1')&&(shuzhileixing!='2')&&(ch2-'0')<7){if(shuzhileixing=='3'){if((ch2-'0')<7){shuzhileixing=getch();}else{break;}}else{shuzhileixing=getch();}}while(ch3=='1'){system("cls");printf('您選擇輸入”);if(shuzhileixing=='1'){printf("角度值.<例如您想輸入60度,您輸入60即可.>\n");if(shuzhileixing=='2'){printf("弧度值.\n<您只能輸入xpi類型數(shù)據(jù).例如您想輸入2pi,您輸入2即可.(pi=3.1415926535)>\n");printf(-請(qǐng)您配合.否則系統(tǒng)可能不能正常運(yùn)行!\n");printf("\a\a");}if(ch2=='1'){printf("正在為您求解sinx函數(shù).\n");printf("請(qǐng)您輸入x:");scanf("%lf”,&x);if(shuzhileixing=='2'){x1=x*PI;y=sin(x1);printf("sin%lfpi=%lf\n”,x,y);}else{x1=(x/180)*PI;y=sin(x1);printf("sin%lfg=%lf\n",x,y);}}if(ch2=='2'){printf("正在為您求解cosx函數(shù).\n");printf("請(qǐng)您輸入x:");scanf("%lf”,&x);if(shuzhileixing=='2'){x1=x*PI;y=cos(x1);printf("cos%lfpi=%lf\n”,x,y);}else{x1=(x/180)*PI;y=cos(x1);printf("cos%lfg=%lf\n",x,y);}}if(ch2=='3')printf("正在為您求解tanx函數(shù).\n");printf(-請(qǐng)您不要輸入無(wú)解的x.否則答案不正確!\n");printf("\a\a");printf("請(qǐng)您輸入x:");scanf("%lf”,&x);if(shuzhileixing=='2'){x1=x*PI;y=tan(x1);printf("tan%lfpi=%lf\n”,x,y);}else{x1=(x/180)*PI;y=tan(x1);printf("tan%lfg=%lf\n",x,y);}}if(ch2=='4'){printf("正在為您求解cscx函數(shù),\n");printf(-請(qǐng)您不要輸入無(wú)解的x.否則答案不正確!\n");printf("\a\a");printf("請(qǐng)您輸入x:");scanf("%lf”,&x);if(shuzhileixing=='2'){x1=x*PI;y=sin(x1);y=1/y;printf("csc%lfpi=%lf\n”,x,y);}else{x1=(x/180)*PI;y=sin(x1);y=1/y;printf("csc%lfg=%lf\n",x,y);}}if(ch2=='5'){printf("正在為您求解secx函數(shù),\n");printf(-請(qǐng)您不要輸入無(wú)解的x.否則答案不正確!\n");printf("\a\a");printf("請(qǐng)您輸入x:");scanf("%lf”,&x);if(shuzhileixing=='2'){x1=x*PI;y=cos(x1);y=1/y;printf("sec%lfpi=%lf\n”,x,y);}else{x1=(x/180)*PI;y=cos(x1);y=1/y;printf("sec%lfg=%lf\n",x,y);}}if(ch2=='6'){printf("正在為您求解cotx函數(shù),\n");printf(-請(qǐng)您不要輸入無(wú)解的x.否則答案不正確!\n");printf("\a\a");printf("請(qǐng)您輸入x:");scanf("%lf”,&x);if(shuzhileixing=='2'){x1=x*PI;y=tan(x1);y=1/y;printf("cot%lfpi=%lf\n”,x,y);}else{x1=(x/180)*PI;y=tan(x1);y=1/y;printf("cot%lfg=%lf\n",x,y);}}if(ch2=='7'){i=1;x=2;while((x>1)ll(x<-1)){if(i==1){printf("正在為您求解arcsinx函數(shù),\n");printf("請(qǐng)您輸入x(x<=1且x>=-1):");scanf("%lf”,&x);i++;}else{printf("您的輸入有誤!請(qǐng)您重新輸入.\n");printf("\a\a");Sleep(2000);system("cls");printf("您選擇輸入實(shí)際數(shù)值.\n");printf("正在為您求解arcsinx函數(shù),\n");printf("請(qǐng)您輸入x(x<=1且x>=-1):");scanf("%lf”,&x);}}y=asin(x);printf("弧度值:”);printf("arcsin%lf=%lf\n”,x,y);y=(180*y)/PI;printf("角度值:");printf("arcsin%lf=%lfg\n",x,y);}if(ch2=='8'){i=1;x=2;while((x>1)||(x<-1)){if(i==1){printf("正在為您求解arccosx函數(shù),\n");printf("請(qǐng)您輸入x(x<=1且x>=-1):");scanf("%lf”,&x);i++;}elseprintf("您的輸入有誤!請(qǐng)您重新輸入.\n");printf("\a\a");Sleep(2000);system("cls");printf("您選擇輸入實(shí)際數(shù)值.\n");printf("正在為您求解arccosx函數(shù),\n");printf("請(qǐng)您輸入x(x<=1且x>=-1):");scanf("%lf”,&x);}}y=acos(x);printf("弧度值:”);printf("arccos%lf=%lf\n",x,y);y=(180*y)/PI;printf("角度值:");printf("arccos%l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程技術(shù)咨詢服務(wù)合同(7篇)
- 醫(yī)務(wù)人員個(gè)人工作總結(jié)范文(6篇)
- 農(nóng)貿(mào)市場(chǎng)商鋪攤位營(yíng)銷方案(5篇)
- 虛擬改裝體驗(yàn)研究-洞察分析
- 溯源體系經(jīng)濟(jì)效益分析-洞察分析
- 游戲社區(qū)運(yùn)營(yíng)管理-洞察分析
- 文化創(chuàng)意產(chǎn)業(yè)競(jìng)爭(zhēng)力分析洞察-洞察分析
- 虛擬現(xiàn)實(shí)藝術(shù)互動(dòng)性研究-洞察分析
- 《物流運(yùn)輸工具》課件
- 網(wǎng)絡(luò)空間倫理治理-洞察分析
- 宜春古城改造計(jì)劃書(shū)
- 2024年廣西北部灣國(guó)際港務(wù)集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 人力資源部副經(jīng)理個(gè)人述職報(bào)告
- 小學(xué)一年級(jí)科學(xué)(上冊(cè))期末試卷含參考答案
- 管道工程心得體會(huì)
- 感染醫(yī)師進(jìn)修總結(jié)匯報(bào)
- 個(gè)性化營(yíng)養(yǎng)餐定制平臺(tái)商業(yè)計(jì)劃書(shū)
- (完整)小學(xué)四年級(jí)多位數(shù)乘除法400題
- 火電廠運(yùn)行管理
- 搞笑朗誦我愛(ài)上班臺(tái)詞
- 20以內(nèi)加減法口算題100道計(jì)時(shí)精編版(共計(jì)3500道)可直接打印
評(píng)論
0/150
提交評(píng)論