用龙贝格算法计算积分

#include
<iostream>

#include<cmath>

#include
<iomanip>

using
namespace std;

int power(int a, int
b)

{

int
result = 1;

if
(b == 0)

return
result;

while
(b != 0)

{

result
*= a;

b--;

}

return
result;

}

int main()

{

int
M =
5;            //M表示二分的次数

double**
T = new double*[M + 1];

for
(int i = 0; i < M + 1; i++)

T[i]
= new double[i + 1];

double a
= 0, b =
1;            //a表示积分下限,b表示积分上限

double
fa = pow(a, 1.5), fb = pow(b,
1.5);            //fa表示在a点处被积函数的函数值,fb表示在b点处被积函数的函数值

double
h = b -
a;      //h表示迭代的步长

double
sum;      //用于计算积分内循环累加的部分

T[0][0]
= (fa + fb)*h /
2;      //用梯形公式进行初始化

for
(int i = 1; i < M + 1; i++)

{

h
/= 2;

sum
= 0;

for
(int j = 1; j <= power(2, i - 1); j++)

sum
+= pow(a + (2 * j -
1)*h, 1.5);            //计算产生的新的结点部分的和

T[i][0]
= T[i - 1][0] / 2 +
h*sum;                  //利用原来计算得到的积分值和新的节点计算得到新的积分值

for
(int k = 1; k <= i; k++)

T[i][k]
= T[i][k - 1] + (T[i][k - 1] - T[i - 1][k - 1]) / (power(4, k) -
1);      //利用龙贝格积分公式计算后面的积分

}

cout << setiosflags(ios::left)

<< setw(10)
<< "T0"

<< setw(10)
<< "T1"

<< setw(10)
<< "T2"

<< setw(10)
<< "T3"

<< setw(10)
<< "T4"

<< setw(10)
<< "T5"
<< endl;

for
(int i = 0; i < M + 1; i++)

{

for
(int j = 0; j <= i; j++)

cout << setw(10)
<< T[i][j];

cout << endl;

}

cout << endl << endl;

cout <<
"最后计算得到的积分值为:" << T[M][M]
<< endl;

for
(int i = 0; i < M + 1; i++)

delete[]
T[i];

delete[]
T;

return
0;

}

龙贝格积分(c++)的更多相关文章

  1. 【C/C++】实现龙贝格算法

    1. 复化梯形法公式以及递推化 复化梯形法是一种有效改善求积公式精度的方法.将[a,b]区间n等分,步长h = (b-a)/n,分点xk = a + kh.复化求积公式就是将这n等分的每一个小区间进行 ...

  2. 利用Python科学计算处理物理问题(和物理告个别)

    背景: 2019年初由于尚未学习量子力学相关知识,所以处于自学阶段.浅显的学习了曾谨言的量子力学一卷和格里菲斯编写的量子力学教材.注重将量子力学的一些基本概念了解并理解.同时老师向我们推荐了Quant ...

随机推荐

  1. 设计模式-依赖倒置-Dependency Inversion Principle

    依赖倒置原则: 一般来说我们认为作为底层基础框架的逻辑是不应该依赖于上层逻辑的, 所以我们设计软件时也经常是: 需求 - 上层逻辑(直接实现需求) - 发现需要固化的逻辑 - 开发底层模块 - 然后上 ...

  2. 又一个js乱码的秘密alert放在js文件里中文乱码,可是放在HTML里显示中文就很好

    用文本文档打开你的js文件,文件-另存为,编码更改为UTF-8保存. 回复 | PFly | 园豆:94 (初学一级) | 2017-07-17 21:32 显示结果中文乱码 支持(0)反对(0)回复 ...

  3. Ext下载文件

    项目中前台用的是Ext JS,要从数据库中查询数据并导出为Excel表格 对此研究了下,代码如下: 前台代码: /** * 进行下载文件(form方式) */ _downloadDraft:funct ...

  4. ubuntu16.04安装openssh中报错解决

    在使用apt-get直接进行安装时会报错: sudo apt-get install openssh-server 正在读取软件包列表... 完成 正在分析软件包的依赖关系树       正在读取状态 ...

  5. Pod和Namespace的基本介绍

    namespace资源名称空间 删除namespace资源会级联删除其所包含的所有其它资源对象    名称空间仅仅只是用来限制资源名称的作用域      并不能实现Pod的通信隔离 在名称空间下操作s ...

  6. golang之网络开发

    TCP Server/Client开发 net包提供network I/O开发接口,包括TCP/IP.UDP.DNS和Unix domain sockets. 常用开发一般仅需要最基础接口或函数: 服 ...

  7. mongodb移除分片和添加分片(转)

    首先我们要移除的分片之后再次添加此分片时会出现添加失败的情况,需要在添加的分片上登录进行删除此分片之前数据库的历史数据比如testdb,删除分片上的数据库之后就可重新添加此分片到mongos中 1.执 ...

  8. 如何自动加载scratch3.0的页面上实现自动加载原有的作品

    首先,我们在安装scratch3.0后,浏览器默认打开的是编程的页面.如下图: 那么我们希望开发一个功能,就是打开的时候默认加入某一个SB3的开发文件 1.首先,我们需要有一个.SB3的开发文件,建议 ...

  9. pycharm——常用快捷键操作

    编辑类(Editing): Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 类名完成Ctrl + Shift + Enter 语句完成Ctrl + P ...

  10. 在vue项目中使用自己封装的ajax

    在 src 目录下新建 vue.extend.js ,内容如下: export default { install(Vue) { Vue.prototype.$http=function(option ...