用龙贝格算法计算积分

#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. 纽约LangeEylandt长岛LongIsland

    LangeEylandt n.长岛(美国) 纽约长岛 纽约长岛 (LongIsland)是北美洲在大西洋内的一个岛,最早追溯到十七世纪的1650年被命名为Lange Eylandt [1] ,位于北美 ...

  2. Spring Data Jpa 复杂查询总结

    实体类 @Entity @Table(name = "t_hotel") @Data public class THotel { @Id private int id; priva ...

  3. 技术圈术语之LDAP

    导语:阅读一些程序的文档时经常看到支持ldap,由于对这个协议不太熟悉,平时也没有用过,所以一直也没怎么留意,今天看rabbitmq的文档又发现了ldap相关的介绍,于是想把这个问题搞清楚. 一.LD ...

  4. nginx服务的基本配置

    Nginx在运行时,至少必须加载几个核心模块和一个事件类模块.这些模块运行时所支持的配置项称为基本配置.由于配置项较多,所以把它们按照用户使用时的预期功能分为四类: 用于调试.定位问题的配置项 正常运 ...

  5. Linux应用与端口

    lsof -i:port --- 得到对应端口的应用pid PS -ef|grep pid --- 根据pid得到对应应用

  6. 深入理解JVM-java虚拟机栈

    1.java虚拟机栈 1. Java虚拟机栈也是线程私有的,它的生命周期与线程相同(随线程而生,随线程而灭) 2. 如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowErro ...

  7. python基础-模块(全是理论,没有代码)

    模块 概念:一系列功能的结合体.相当于模块包着一堆函数与代码.本质上是py文件. 来源: python内置的模块----→ python解释器的模块 第三方的模块 -----→ 其他人编写提供的 自定 ...

  8. Node: Process模块 (Features of Process)

    Process模块 (Features of Process) process is a global variable which indicates the current Node.js pro ...

  9. MySQL Replication--多线程复制MTS

    多线程复制 多线程复制MTS(Mult-Threaded Slave Applier)指使用多个线程来并发应用二进制日志.在MYSQL5.6版本中,多线程复制基于schema来实现,将多个数据库下的事 ...

  10. js 判断浏览器是pc端还是移动端

    if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { //说明是移动端 } else { //说明是pc端 }