一、實驗目的
許多工程技術和數學研究中要用到定積分,如果無法直接算不出精確值(如含在積分方程中的積分)或計算困難但可用近似值近似時,就用數值積分法方法加以解決。常用的算法有:復化梯形、辛甫生(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份所得結果: