网上居然找不到有人做。自己写了一个。我不保证写的是对的,因为我实验报告还没交。
以下是源代码,写得很烂:
#include <iostream>
#include <cmath>
using namespace std;
#define Pi 3.14
double a[10],b[10],c[10],d[5];
double E;
double L,H,D;
double d_si0,d_si=0,d_ping;
double uncertainty(int len,double A[]){
double sum=0;
for(int i=0;i<len;i++){
sum+=A[i];
}
sum/=len;
double Sn=0;
for(int i=0;i<len;i++){
Sn+=((A[i]-sum)*(A[i]-sum));
}
return sqrt(Sn/(len*(len-1)));
}
int main(){
cout<<"请依次输入L、H、D(单位mm),以空格间隔:"<<endl;
cin>>L>>H>>D;
cout<<"请输入d0(单位mm):";
cin>>d_si0;
double d_s[6];
cout<<"请输入测量的六组金属丝直径视值d(单位mm),以空格间隔:"<<endl;
for(int i=0;i<6;i++){
float temp;
cin>>temp;
d_s[i]=temp;
d_si+=(temp-d_si0);
}
d_ping=d_si/6;
cout<<"接下来,请成对输入相同力下的x值。单位mm,以空格间隔。"<<endl;
for(int i=0;i<10;i++){
cout<<"请输入第"<<i+1<<"组数据:";
if (scanf("%lf%lf", &a[i], &b[i]) != 2) {
cout << "Error: invalid input" << endl;
return 1;
}
c[i]=(a[i]+b[i])/2;
}
for(int i=0;i<5;i++){
d[i]=c[i+5]-c[i];
}
double E0[5];
for(int i=0;i<5;i++){
E=((8*5*9.8*(L*0.001)*(H*0.001))/(Pi*(d_ping*0.001)*(d_ping*0.001)*(D*0.001)))/(d[i]*0.001);
E0[i]=E;
cout<<"E"<<i+1<<"="<<E<<endl;
}
cout<<"d的不确定度:"<<uncertainty(6,d_s)<<endl;
cout<<"Δx的不确定度为:"<<uncertainty(5,d)<<endl;
cout<<"杨氏模量的不确定度为:"<<uncertainty(5,E0)<<endl;
getchar();
getchar();
return 0;
}
如图:
怎么用就不需要我说了吧。