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();
}
}
梯形和辛普生积分
最新推荐文章于 2022-09-02 11:45:59 发布