我是靠谱客的博主 等待睫毛,这篇文章主要介绍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
1.5

 

Sample Output

 

复制代码
1
2.60046

 

Hint

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

Source

习题6-4

问题分析:

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

解决方案:

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

参考程序:

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部