2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩9頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  數 值 微 分</p><p>  ----《高級語言程序設計》課程設計</p><p><b>  指導教師:***</b></p><p>  班級:06級軟件工程 3班</p><p><b>  成員:***</b></p><p><

2、;b>  *** </b></p><p><b>  目 錄</b></p><p>  課程設計概述與設計目的</p><p><b>  二、概要設計</b></p><p><b>  三、詳細設計</b></p><p>

3、<b>  四、調試與測試</b></p><p><b>  五、結論與體會</b></p><p>  六、源程序清單與執行結果</p><p>  一、課程設計概述與設計目的</p><p> ?。ㄒ唬?課程設計名稱</p><p><b>  數值微分<

4、;/b></p><p><b> ?。ǘ?任務要求</b></p><p>  對于一些不易按照常規方法求得原函數的微分方程例如:,利用龍格-庫塔公式,經過簡單的計算過程求出的近似值</p><p>  龍格-庫塔公式的形式為:</p><p><b> ?。ㄈ?開發環境</b><

5、/p><p>  C++是從C語言發展演變而來的,C語言畢竟是一個面向過程的編程語言,因此與其它面向過程的編程語言一樣,已經不能滿足運用面向對象方法開發軟件的需要。C++便是在C語言基礎上為支持面向對象的程序設計而研制的一個通用目的的程序設計語言,它是在1980年由AT&T貝爾實驗室的Bjarne Stroustrup博士創建的。</p><p>  C++的特點:全面兼容C,它保持了

6、C的簡潔、高效和接近匯編語言等特點,對C的類型系統進行了改革和擴充,因此C++比C更安全,C++的編譯系統能檢查出更多的類型錯誤。同時,用C編寫的眾多的庫函數和實用軟件可以用于C++中。除此之外,C++不僅支持面向過程,又支持面向對象。</p><p><b> ?。ㄋ模?設計目的</b></p><p>  1. 通過課程設計全面掌握《C++語言程序設計》關鍵知識點

7、,掌握C++語言中的基本知識。</p><p>  2. 通過課程設計了解并掌握C++語言程序設計的方法,熟悉C++程序設計的開發環境及C++程序的調試過程。</p><p>  3. 培養我們查閱參考資料、手冊的自學能力,通過獨立思考深入鉆研有關問題,學會自己分析、解決問題的方法。</p><p><b>  二、概要設計</b></p

8、><p>  1.程序整體設計流程圖 </p><p>  2.主控函數執行流程圖</p><p><b>  三、詳細設計 </b></p><p>  1.包含加載頭文件:#include <iostream></p><p>  #include <cmath></

9、p><p>  2.運用命名空間 using namespace std;</p><p>  一個軟件往往有多個模塊組成,其中包括由不同的程序員開發的組件及類庫提供的組件,這樣不同模塊間在對標識符命名時就有可能發生命名沖突,也就是說,在不同的模塊中,使用相同的名字表示不同的事物,這樣當然會引起程序出錯。而我們使用命名空間,就解決了這個問題。</p><p><b

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

11、>  b.設置運行結果的精度利用cout.precision(10)來實現。</p><p>  c.通過調用龍格庫塔公式求得微分方程值:</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語句來輸出結果,通過調用龍格庫塔公式得出結果。</p><p>  4.微分方程函數設計:</p><p>  利用return語句把y’返回到主函數,把題目中微分方程用c++語言實現。</p><p><b>  5.龍格庫塔公式:</b></p><p>  首先定義變量k1,k2,k3,k4,h和結果r

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

15、執行結果</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) // 所求函數</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 ) // 龍格庫塔公式</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) // 首先需要判斷步長是否正確</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); // 設置精度</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> ?。ǘ﹫绦薪Y果:現場運行程序并顯示結果<

28、/p><p><b>  六、結論與體會</b></p><p>  經過一個多月的課程設計,我們感覺收獲甚豐。</p><p>  通過此次的課程設計,我們將本學期課本上所學習的有關知識應用到實踐當中,使我們在應用過程中,更加清楚的了解并掌握C++語言的各部分內容,進一步加深了對C++語言的認識與理解。例如,函數的遞歸調用等。同時提高了個人程序設

29、計思想,及時發現一些錯誤,并在調試過程中更加深刻的認識到C++語言程序的嚴謹性。</p><p>  任何一個程序員都無法保證所編寫的程序沒有錯誤,程序內部的邏輯錯誤只能由我們自己去發現并修改,在遇到問題時,首先通過對此部分函數的整體流程進行分析,找出問題所在,再由小組成員商定最優解決辦法,這樣有助于提高我們個人團體協作能力。同時也是我們進一步加深了解了高數中微分知識,更重要的是,學會了把高數微分知識和編程相結合

溫馨提示

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

評論

0/150

提交評論