C语言求解积分函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

int part_number;//分割段数

float dt;//dt

float upper_limit,lower_limit;//积分上限和下限

void read();

void setDt();

double accurate(double t);

double integrates();

int main(void)

{

double result;

read();

setDt();

result=integrates();

printf("(1/(1+50t^2))*dt在%f到%f上的积分结果为%.20f\n",lower_limit,upper_limit,result);

}

//读取分割段数以及积分上限和下限

void read()

{

printf("请输入分割段数(注意:段数越大,结果越精确):");

while(0==scanf("%d",&part_number)||part_number<=0)

{

while('\n' != getchar()){}

printf("输入无效!请重新输入分割段数:");

}

printf("请输入积分上限:");

while(0==scanf("%f",&upper_limit))

{

while('\n' != getchar()){}

printf("输入无效!请重新输入积分上限:");

}

printf("请输入积分下限:");

while(0==scanf("%f",&lower_limit))

{

while('\n' != getchar()){}

printf("输入无效!请重新输入积分下限:");

}

if(lower_limit>upper_limit)

{

printf("输入无效,积分上限不能小于积分下限!请重新输入\n"); read();

}

}

//计算dt

void setDt()

{

dt=(1.0*(upper_limit-lower_limit))/part_number;

}

//计算(1/(1+50t^2))*dt

double accurate(double t)

{

double temp=(1.0/(1+50*t*t))*dt;

return temp;

}

//调用accurate函数计算在积分区间上的最后结果

double integrates()

{

double sum=0.0;//积分结果

//根据分割段数进行相应轮次accurate运算,并且将每次计算结果相加 int index=0;

for(;index

sum+=accurate(lower_limit+index*dt);

return sum;

}

相关文档
最新文档