數值分析實驗之數值積分法(java 代碼)


一、實驗目的

  許多工程技術和數學研究中要用到定積分,如果無法直接算不出精確值(如含在積分方程中的積分)或計算困難但可用近似值近似時,就用數值積分法方法加以解決。常用的算法有:復化梯形、辛甫生(Simpson)、柯特斯(Cotes)求積法; 龍貝格(Romberg)算法;高斯(Gauss)算法。

二、實驗原理

     

 

三、實驗程序

  下面給出復化Simpson求積法程序(梯形及柯特斯復化求積分程序可比照編制):

  

 

 

 四、實驗內容

     選擇 y=arctan(x) 在0-1上的積分

五、實驗程序

  • 復化梯形算法

 1  package shuzhifenxi;
 2 
 3     import java.util.Scanner;
 4 
 5     public class fuhuatixing {
 6         public static void main(String args[]) {
 7             Scanner sc = new Scanner(System.in); 
 8 
 9             System.out.println("輸入區間下限:");
10             double a = sc.nextDouble(); 
11             System.out.println("輸入區間上限:");
12             double b = sc.nextDouble(); 
13             
14             System.out.println("輸入將區間分成的份數:");
15             double h=sc.nextInt();
16             
17             compoundTrapezium(a,b,h);
18         }
19         
20         //復化梯形公式
21         public static void compoundTrapezium(double a,double b,double h){
22 
23             double value=0;      //記錄最終數值
24             double contain=0; //記錄一個中間值
25             for(double k=1;k<=h-1;k++){
26                 contain=contain+f(a+k*((b-a)/h));   //調用公式
27             }
28             contain=2*contain;            //調用公式
29             value=((b-a)/(2*h))*(f(a)+f(b)+contain);  //調用公式
30               
31             System.out.println("復化梯形公式所得到結果為:"+value);
32         }
33         
34         //用給定公式計算相應數值
35         public static double f(double x) {
36             
37             double value=0; //記錄經過公式算出來的值
38             
39             value=Math.atan(x);
40             
41             return value;
42         }
43     }

  運行結果:

  將區間分成50份所得結果:

  

   將區間分成100份所得結果:

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM