《高級(jí)語(yǔ)言程序設(shè)計(jì)》c++課程設(shè)計(jì)數(shù)值微分_第1頁(yè)
已閱讀1頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  數(shù) 值 微 分</p><p>  ----《高級(jí)語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)</p><p><b>  指導(dǎo)教師:***</b></p><p>  班級(jí):06級(jí)軟件工程 3班</p><p><b>  成員:***</b></p><p><

2、;b>  *** </b></p><p><b>  目 錄</b></p><p>  課程設(shè)計(jì)概述與設(shè)計(jì)目的</p><p><b>  二、概要設(shè)計(jì)</b></p><p><b>  三、詳細(xì)設(shè)計(jì)</b></p><p>

3、<b>  四、調(diào)試與測(cè)試</b></p><p><b>  五、結(jié)論與體會(huì)</b></p><p>  六、源程序清單與執(zhí)行結(jié)果</p><p>  一、課程設(shè)計(jì)概述與設(shè)計(jì)目的</p><p> ?。ㄒ唬?課程設(shè)計(jì)名稱(chēng)</p><p><b>  數(shù)值微分<

4、;/b></p><p><b> ?。ǘ?任務(wù)要求</b></p><p>  對(duì)于一些不易按照常規(guī)方法求得原函數(shù)的微分方程例如:,利用龍格-庫(kù)塔公式,經(jīng)過(guò)簡(jiǎn)單的計(jì)算過(guò)程求出的近似值</p><p>  龍格-庫(kù)塔公式的形式為:</p><p><b>  (三).開(kāi)發(fā)環(huán)境</b><

5、/p><p>  C++是從C語(yǔ)言發(fā)展演變而來(lái)的,C語(yǔ)言畢竟是一個(gè)面向過(guò)程的編程語(yǔ)言,因此與其它面向過(guò)程的編程語(yǔ)言一樣,已經(jīng)不能滿(mǎn)足運(yùn)用面向?qū)ο蠓椒ㄩ_(kāi)發(fā)軟件的需要。C++便是在C語(yǔ)言基礎(chǔ)上為支持面向?qū)ο蟮某绦蛟O(shè)計(jì)而研制的一個(gè)通用目的的程序設(shè)計(jì)語(yǔ)言,它是在1980年由AT&T貝爾實(shí)驗(yàn)室的Bjarne Stroustrup博士創(chuàng)建的。</p><p>  C++的特點(diǎn):全面兼容C,它保持了

6、C的簡(jiǎn)潔、高效和接近匯編語(yǔ)言等特點(diǎn),對(duì)C的類(lèi)型系統(tǒng)進(jìn)行了改革和擴(kuò)充,因此C++比C更安全,C++的編譯系統(tǒng)能檢查出更多的類(lèi)型錯(cuò)誤。同時(shí),用C編寫(xiě)的眾多的庫(kù)函數(shù)和實(shí)用軟件可以用于C++中。除此之外,C++不僅支持面向過(guò)程,又支持面向?qū)ο蟆?lt;/p><p><b> ?。ㄋ模?設(shè)計(jì)目的</b></p><p>  1. 通過(guò)課程設(shè)計(jì)全面掌握《C++語(yǔ)言程序設(shè)計(jì)》關(guān)鍵知識(shí)點(diǎn)

7、,掌握C++語(yǔ)言中的基本知識(shí)。</p><p>  2. 通過(guò)課程設(shè)計(jì)了解并掌握C++語(yǔ)言程序設(shè)計(jì)的方法,熟悉C++程序設(shè)計(jì)的開(kāi)發(fā)環(huán)境及C++程序的調(diào)試過(guò)程。</p><p>  3. 培養(yǎng)我們查閱參考資料、手冊(cè)的自學(xué)能力,通過(guò)獨(dú)立思考深入鉆研有關(guān)問(wèn)題,學(xué)會(huì)自己分析、解決問(wèn)題的方法。</p><p><b>  二、概要設(shè)計(jì)</b></p

8、><p>  1.程序整體設(shè)計(jì)流程圖 </p><p>  2.主控函數(shù)執(zhí)行流程圖</p><p><b>  三、詳細(xì)設(shè)計(jì) </b></p><p>  1.包含加載頭文件:#include <iostream></p><p>  #include <cmath></

9、p><p>  2.運(yùn)用命名空間 using namespace std;</p><p>  一個(gè)軟件往往有多個(gè)模塊組成,其中包括由不同的程序員開(kāi)發(fā)的組件及類(lèi)庫(kù)提供的組件,這樣不同模塊間在對(duì)標(biāo)識(shí)符命名時(shí)就有可能發(fā)生命名沖突,也就是說(shuō),在不同的模塊中,使用相同的名字表示不同的事物,這樣當(dāng)然會(huì)引起程序出錯(cuò)。而我們使用命名空間,就解決了這個(gè)問(wèn)題。</p><p><b

10、>  3.主函數(shù)設(shè)計(jì):</b></p><p>  主函數(shù)設(shè)計(jì)是該程序的一個(gè)重要部分。</p><p>  a.利用工具:龍格庫(kù)塔公式,是由double Runge_Kuta( double (*f)(double x, double y), double x0, double y0, double xn, long step )來(lái)實(shí)現(xiàn)。</p><p

11、>  b.設(shè)置運(yùn)行結(jié)果的精度利用cout.precision(10)來(lái)實(shí)現(xiàn)。</p><p>  c.通過(guò)調(diào)用龍格庫(kù)塔公式求得微分方程值:</p><p>  for(i = 0;i <= 10;i++)</p><p>  { x = x0 + i * step;</p><p>  cout<<"y&q

12、uot;<<"("<<x<<")"<<"="<<Runge_Kuta(f,x0,y0,x,i)<< endl;</p><p><b>  }</b></p><p>  d.輸出微分方程值:</p><p>  

13、利用cout語(yǔ)句來(lái)輸出結(jié)果,通過(guò)調(diào)用龍格庫(kù)塔公式得出結(jié)果。</p><p>  4.微分方程函數(shù)設(shè)計(jì):</p><p>  利用return語(yǔ)句把y’返回到主函數(shù),把題目中微分方程用c++語(yǔ)言實(shí)現(xiàn)。</p><p><b>  5.龍格庫(kù)塔公式:</b></p><p>  首先定義變量k1,k2,k3,k4,h和結(jié)果r

14、esult.利用if語(yǔ)句根據(jù)step的大小選擇編譯哪條語(yǔ)句:如果step<=0,直接返回y0的值;如果step==1,直接利用一次龍格庫(kù)塔公式就可求得微分方程的值;或者0<step<1,通過(guò)此公式的遞歸調(diào)用來(lái)求得微分方程的值。最后將結(jié)果reslut返回到主函數(shù)。</p><p><b>  四、調(diào)試與測(cè)試</b></p><p>  五、源程序清單和

15、執(zhí)行結(jié)果</p><p><b> ?。ㄒ唬┰闯绦蚯鍐?lt;/b></p><p>  #include <iostream></p><p>  #include <cmath></p><p>  using namespace std;</p><p>  double

16、f(double y, double x) // 所求函數(shù)</p><p><b>  {</b></p><p>  return ((-20) * y + 20 * sin(x) + cos(x));</p>

17、<p><b>  }</b></p><p>  double Runge_Kuta( double (*f)(double x, double y), double x0, double y0, double xn, long step ) // 龍格庫(kù)塔公式</p><p><b>  {</b></p>

18、<p>  double k1,k2,k3,k4,result;</p><p>  double h = (xn - x0) / step;</p><p>  if (step <= 0) // 首先需要判斷步長(zhǎng)是否正確</p><p>  return(y0);</p><p>  if (step

19、 == 1)</p><p><b>  {</b></p><p>  k1 = f(x0,y0);</p><p>  k2 = f(x0 + h / 2, y0 + h * k1 / 2);</p><p>  k3 = f(x0 + h / 2, y0 + h * k2 / 2);</p><

20、p>  k4 = f(x0 + h, y0 + h * k3);</p><p>  result = y0 + h * (k1 + 2 * k2 + 2 * k3 + k4) / 6;</p><p><b>  }</b></p><p><b>  else</b></p><p>&l

21、t;b>  {</b></p><p>  double x1,y1;</p><p>  x1 = xn - h;</p><p>  y1 = Runge_Kuta(f, x0, y0, xn - h,step - 1);</p><p>  k1 = f(x1,y1);</p><p>  k2

22、 = f(x1 + h / 2, y1 + h * k1 / 2);</p><p>  k3 = f(x1 + h / 2, y1 + h * k2 / 2);</p><p>  k4 = f(x1 + h, y1 + h * k3);</p><p>  result = y1 + h * (k1 + 2 * k2 + 2 * k3 + k4) / 6;<

23、;/p><p><b>  }</b></p><p>  return(result);</p><p><b>  }</b></p><p>  int main()</p><p><b>  {</b></p><p>  

24、double f(double x, double y);</p><p>  double x0 = 0,y0 = 1;</p><p>  double x,step;</p><p><b>  long i;</b></p><p>  step = 0.1;</p><p>  cout

25、.precision(10); // 設(shè)置精度</p><p>  for(i = 0;i <= 10;i++)</p><p><b>  {</b></p><p>  x = x0 + i * step;</p><p>  cout << "y" << &

26、quot;(" << x << ")" << " = " << Runge_Kuta(f,x0,y0,x,i) << endl;</p><p><b>  }</b></p><p>  cout << "so y(1) = "

27、; << Runge_Kuta(f,x0,y0,1,10) << endl;</p><p>  Runge_Kuta(f,x0,y0,1,10);</p><p>  return(0);</p><p><b>  }</b></p><p> ?。ǘ﹫?zhí)行結(jié)果:現(xiàn)場(chǎng)運(yùn)行程序并顯示結(jié)果<

28、/p><p><b>  六、結(jié)論與體會(huì)</b></p><p>  經(jīng)過(guò)一個(gè)多月的課程設(shè)計(jì),我們感覺(jué)收獲甚豐。</p><p>  通過(guò)此次的課程設(shè)計(jì),我們將本學(xué)期課本上所學(xué)習(xí)的有關(guān)知識(shí)應(yīng)用到實(shí)踐當(dāng)中,使我們?cè)趹?yīng)用過(guò)程中,更加清楚的了解并掌握C++語(yǔ)言的各部分內(nèi)容,進(jìn)一步加深了對(duì)C++語(yǔ)言的認(rèn)識(shí)與理解。例如,函數(shù)的遞歸調(diào)用等。同時(shí)提高了個(gè)人程序設(shè)

29、計(jì)思想,及時(shí)發(fā)現(xiàn)一些錯(cuò)誤,并在調(diào)試過(guò)程中更加深刻的認(rèn)識(shí)到C++語(yǔ)言程序的嚴(yán)謹(jǐn)性。</p><p>  任何一個(gè)程序員都無(wú)法保證所編寫(xiě)的程序沒(méi)有錯(cuò)誤,程序內(nèi)部的邏輯錯(cuò)誤只能由我們自己去發(fā)現(xiàn)并修改,在遇到問(wèn)題時(shí),首先通過(guò)對(duì)此部分函數(shù)的整體流程進(jìn)行分析,找出問(wèn)題所在,再由小組成員商定最優(yōu)解決辦法,這樣有助于提高我們個(gè)人團(tuán)體協(xié)作能力。同時(shí)也是我們進(jìn)一步加深了解了高數(shù)中微分知識(shí),更重要的是,學(xué)會(huì)了把高數(shù)微分知識(shí)和編程相結(jié)合

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論