我是靠谱客的博主 等待睫毛,最近开发中收集的这篇文章主要介绍RUC_JudgeOnline 1005 定积分计算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

定积分计算

Description

已知f(x)=exp(x*x),求定积分I(I为f(x)在[1,t]上的定积分)。算法采用梯形法,简介如下:
对P(P为g(x)在[a,b]上的定积分),将积分区间b-a等分为m份,每份h=(b-a)/m。使用梯形面积来近似计算定积分,近似公式为

注意:请将m取为2000。

Input

输入共一行,为积分上限t(10≥t≥1)。

Output

输出共一行,为在[1,t]上的定积分。

Sample Input

 

1.5

 

Sample Output

 

2.60046

 

Hint

注意:
1.
2.请将m取为2000
3.请用cout输出结果(使用cout需要头文件iostream.h)

Source

习题6-4

问题分析:

这个题目主要是对公式的理解。在对公式进行分析之后我们得出,求解这个题目就是一个对各项的拆分计算。比如对f(x0)的计算,对累加的计算。

解决方案:

用了两个函数分别表示f(x)的求解和公式的求解。在对f(x)的求解过程中,直接调用数学库函数。S的计算是完全按照题目中给的公式来的。这种计算不是最佳方案,使用了函数和库函数,不过比较易读。

参考程序:

 

#include<stdio.h>
#include<math.h>
const int m = 2000;
double f(double x);
//计算f(x)的值
double S(double a,double b,int m);
//直接计算公式从a到b的积分输出
int main()
{
double t;
scanf("%lf",&t);
double a=1.0;
double b=t;
printf("%lfn",S(a,b,m));
return 0;
}
double f(double x)
{
return exp(x*x);
}
double S(double a,double b,int m)
{
double c=0;
double h=(b-a)/m;
int k;
for(k=1;k<m;k++) //计算累加和∑
{
c+=f(a+k*h);
}
return ((f(a)+f(b))/2+c)*h;
}

 

最后

以上就是等待睫毛为你收集整理的RUC_JudgeOnline 1005 定积分计算的全部内容,希望文章能够帮你解决RUC_JudgeOnline 1005 定积分计算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部