用龙贝格算法计算积分

#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. fulltext全文索引的使用

    Fulltext全文索引 Fulltext相关属性 查看数据库关于fulltext的配置 SHOW VARIABLES LIKE 'ft%'; -- ft就是FullText的简写 ft_boolea ...

  2. 【JVM】记录一次线上SWAP偏高告警的故障分析过程

    近期遇到一个堆外内存导致swap飙高的问题,这类问题比较罕见,因此将整个排查过程记录下来了 现象描述 最近1周线上服务器时不时出现swap报警(swap超过内存10%时触发报警,内存是4G,因此swa ...

  3. jQuery实现图片上传

    $('input[type="file"]').change(function(event) { var currentTarget = event.currentTarget; ...

  4. 关闭linux命令行屏幕保护

    # setterm -blank 0

  5. HttpClient实战三:Spring整合HttpClient连接池

    简介 在微服务架构或者REST API项目中,使用Spring管理Bean是很常见的,在项目中HttpClient使用的一种最常见方式就是:使用Spring容器XML配置方式代替Java编码方式进行H ...

  6. 使用wxpy这个基于python实现的微信工具库的一些常见问题

    使用如下的命令行安装: pip install wxpy Collecting wxpy Downloading https://files.pythonhosted.org/packages/6b/ ...

  7. linux技能点七 shell

    shell脚本:定义,连接符,输入输出流,消息重定向,命令的退出状态,申明变量,运算符,控制语句 定义:linux下的多命令操作文件 连接符: ::用于命令的分隔符,命令会从左往右依次执行 & ...

  8. 查看zookeeper版本

    命令 echo stat|nc localhost 2181 zookeeper@kafka-zookeeper-0:/$ echo stat|nc localhost 2181 Zookeeper ...

  9. linux下的 c 和 c++ 开发工具及linux内核开发工具

    https://opensource.com/article/18/6/embedded-linux-build-tools https://github.com/luong-komorebi/Awe ...

  10. 使用Arduino开发板实现与MPU6050陀螺仪传感器连接的方法

    MPU6050陀螺仪传感器具有许多强大的功能,采用单芯片封装.它是由一个MEMS加速度计.一个MEMS陀螺仪和温度传感器组成.该模块在将模拟量转换为数字量时非常准确,因为每个通道都有一个16位的模数转 ...