import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; /** * Created by q on 2017/12/21. */ public class Integration { private int n; private double x[]; private double y[]; public Integration(int n,double[] x, double[] y) { super(); this.n = n; this.x = x; this.y = y; } public Integration(String path) { super(); readFile(path); } double calTrapezium(){ double sum = 0; sum = y[0]+y[n-1]; for(int i = 1;i<n-1;i++){ sum += y[i]*2; } return sum*0.1/2; } double calSimpson(){ double sum = 0; sum = y[0]+y[n-1]; for(int i = 1;i<n-1;i++){ if(i%2==1) sum += y[i]*4; else sum += y[i]*2; } return sum*0.2/6; } void readFile(String fileName){ File file = new File(fileName); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); String tempString = null; // 一次读入一行,直到读入null为文件结束 if((tempString = reader.readLine())!=null){ n = Integer.parseInt(tempString); } x = new double[n]; y = new double[n]; if((tempString = reader.readLine())!=null){ String[] sourceStrArray = tempString.split(" "); for(int i=0;i<n;i++){ x[i] = Double.parseDouble(sourceStrArray[i]); } } if((tempString = reader.readLine())!=null){ String[] sourceStrArray = tempString.split(" "); for(int i=0;i<n;i++){ y[i] = Double.parseDouble(sourceStrArray[i]); } } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } } public static void main(String [] args){ System.out.println("请输入文件路径(梯形,辛普生)"); Scanner scanner = new Scanner(System.in); String path = scanner.next(); Integration integration = new Integration(path); System.out.println(integration.calTrapezium()); System.out.println(integration.calSimpson()); scanner.close(); } }
梯形和辛普生积分
猜你喜欢
转载自blog.csdn.net/baidu_38370610/article/details/78922702
今日推荐
周排行