[算法][求积分][复合辛普森公式]


 1 //这里f()为被积函数,输入a,b为积分上下限,
2 //eps为计算精度[这里要注意假收敛,一般设小一点好]
3 #include <iostream>
4 #include <cmath>
5 #define eps 1e-6
6 using namespace std;
7 double f(double x){
8 return sqrt(1+cos(x)*cos(x));
9 }//被积函数
10 double Sn(double a,double b,double n){
11 double h=(a+b)/(2*n);
12 double sum=0;
13 for(int k=1;k<=n;k++){
14 sum+=2*f(a+(2*k-1)*h);
15 sum+=f(a+2*k*h);
16 }
17 sum=(sum*2+f(a)-f(b))*h/3;
18 return sum;
19 }//辛普森公式
20 double Solve(double a,double b){
21 int i=1;
22 double S1n=Sn(a,b,i);
23 double S2n=Sn(a,b,2*i);
24 while(fabs(S1n-S2n)>eps){
25 cout<<"n = "<<i<<" S1 = "<<S1n<<" S2 = "<<S2n<<‘\n‘;
26 i++;
27 S1n=S2n;
28 S2n=Sn(a,b,2*i);
29 }
30 return S2n;
31 }
32 int main(){
33 cout<<Solve(0,48)<<‘\n‘;
34 }

[算法][求积分][复合辛普森公式],布布扣,bubuko.com

时间: 2024-08-05 05:43:04

[算法][求积分][复合辛普森公式]的相关文章

复合梯形公式与复合辛普森公式求积分

一 实验目的 1. 掌握复合梯形公式与复合辛普森公式的基本思想.2. 编程实现用复合梯形公式与复合辛普森公式求积分.3. 熟悉matlab软件的使用. 二 实验内容1.用复合梯形公式计算积分 I=4/(1+x2)dx ,求它0到1的积分.精确度为10-5.(0.00001),精确到 ●1 计算公式 h=(b-a)/n h=h/2[(f(x0)+f(x1))+(f(x1)+f(x2))+(f(x2)+f(x3)+...+(f(xn-1)+f(xn)] l1 算法分析 En=h2/12[f'(b)-

复化梯形求积分——用Python进行数值计算

用程序来求积分的方法有很多,这篇文章主要是有关牛顿-科特斯公式. 学过插值算法的同学最容易想到的就是用插值函数代替被积分函数来求积分,但实际上在大部分场景下这是行不通的. 插值函数一般是一个不超过n次的多项式,如果用插值函数来求积分的话,就会引进高次多项式求积分的问题.这样会将原来的求积分问题带到另一个求积分问题:如何求n次多项式的积分,而且当次数变高时,会出现龙悲歌现象,误差反而可能会增大,并且高次的插值求积公式有可能会变得不稳定:详细原因不赘述. 牛顿-科特斯公式解决这一问题的办法是将大的插

JVM垃圾回收算法及分代垃圾收集器

一.垃圾收集器的分类 1.次收集器 Scavenge GC,指发生在新生代的GC,因为新生代的Java对象大多都是朝生夕死,所以Scavenge GC非常频繁,一般回收速度也比较快.当Eden空间不足以为对象分配内存时,会触发Scavenge GC. 一般情况下,当新对象生成,并且在Eden申请空间失败时,就会触发Scavenge GC,对Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor区.然后整理Survivor的两个区.这种方式的GC是对年轻代的Eden区进行

组合数学漫游奇境记:Schur 多项式,Hook 长度公式,Macmahon 平面分拆公式

Young 表上的组合学是代数组合学中最奇妙的部分,与表示论,统计力学,概率论有着丰富而深刻的联系.这篇文章将从几个有趣的问题开始,带领大家走进这个美丽的领域.所需要的预备知识很少,学过线性代数即可,但是要真正领略其中风光,数学上的成熟是必不可少的. 需要事先剧透的是,本文要证明的几个定理绝非泛泛,它们都是代数组合学中的著名结论. 先来看几个问题: 有 $m$ 位总统候选人参加大选,他们每个人分别有 $\lambda_1,\ldots,\lambda_m$ 位支持者(假定选民只投票给他支持的候选

【算法】分治法细则

分治法的基本步骤:1.分解问题(Divide):把原问题分解为若干个与原问题性质相类似的子问题;2.求解字问题(Conquer):不断分解子问题并求解;3.合并子问题的解(Combine). 分治法的运用条件:1.原问题可以分解为若干与原问题的解:2.子问题可以分解并可以求解:3.子问题的解可以合并为原问题的解:4.分解后的子问题应互相独立,即不包含重叠子问题(如菲不那切竖列). 求解递归函数的方法: 1.代换法1)猜测解的行为:2)数学归纳法证明. 2.递归树法在递归树中,每一个结点都代表递归

[算法]:分治法-求大整数相乘

#问题大整数相乘 #思路说明 对于大整数计算,一般都要用某种方法转化,否则会溢出.但是python无此担忧了. Python支持**"无限精度"的整数,**一般情况下不用考虑整数溢出的问题,而且Python Int类型与任意精度的Long整数类可以无缝转换,超过Int 范围的情况都将转换成Long类型. 例如: >>> 2899887676637907866*1788778992788348277389943 51872581574157002360341697913

算法——猴子分桃

想做些有关“算法”的练习题,在网上无意间看到了一道很经典的算法题——猴子分桃,于是百度了一下,才发现这道题的相关文档很多很多,但最多的也就是使用C++或者Java来解决这道题,而自己也是初次接触C++. 1.先介绍一下C++使用最常见的编辑器——dev cpp.附上下载地址:(http://bloodshed-dev-c.en.softonic.com/download); 2.: 3.接着选好所要下载好的地址: 4.剩下的事情就是“一路默认”,直至安装完成. 然后就剩启动Dev C++,启动完

常用算法之分治法与动态规划法

之所以把这两种算法放到一起,是因为它们都是用来求最优解的问题,与贪心算法是不同的.但是这两种算法又有一些区别,下面来做解释: 分治,即分而治之,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题--直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并.     上图用一个例子来解释如下: 当n>1时,想求得T(n),必须知道T(n-1),以此类推,所以要想求得T(n)就必须将T(n)分解,从最小的子问题开始计算,最终求得T(n),这个过程就是一个递归.分治与

【算法】分治法

思想:分,递归解决若干个较小的问:治,从子问题的答案中形成原始问题的解: 算法举例:快速排序,树的遍历: 快速排序代码:见网址https://www.cnblogs.com/dreamer123/p/9519498.html 原文地址:https://www.cnblogs.com/dreamer123/p/12083061.html