用龙贝格算法计算积分

#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. 【开发笔记】- QQ消息轰炸

    1.右键新建一个文本文件: 2.打开记事本将如下代码复制过去: On Error Resume Next Dim wsh,ye set wsh=createobject("wscript.s ...

  2. Django:基于调试组插件go-debug-toolbar

    1.django-debug-toolbar 介绍 django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息.返回 ...

  3. 前端框架 Vue.js 概述

    Vue.js 是什么 图片 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视 ...

  4. hive自定义函数学习

    1介绍 Hive自定义函数包括三种UDF.UDAF.UDTF UDF(User-Defined-Function) 一进一出 UDAF(User- Defined Aggregation Funcat ...

  5. 27.centos7基础学习与积累-013-文件和目录的权限

    从头开始积累centos7系统运用 大牛博客: https://blog.51cto.com/yangrong/p5 https://blog.oldboyedu.com/ 文件的权限 rw-r--r ...

  6. MySQL/MariaDB数据库的半同步复制

      MySQL/MariaDB数据库的半同步复制 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL半同步复制概述 1>.MySQL默认的异步复制 默认情况下,M ...

  7. Docker镜像管理基础篇

    Docker镜像管理基础篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Images Docker镜像还有启动容器所需要的文件系统及其内容,因此,其用于创建并启 ...

  8. ES6--默认参数表达式,参数变动

    今天发现个有趣的问题,传入默认参数是个函数时,自定义参数回变动. 先上例子再说 let value = 5; function getValue() { return value++; } funct ...

  9. *P2398 GCD SUM[数论]

    题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 解析 给出n求sum. gcd(x,y)表示x,y的最大公约数. 直接枚举复杂度为\(O(n^2)\),显然无 ...

  10. KVM-virsh常用命令

    virsh list #在线VM virsh list --all #所有VM virsh start #开机 virsh shutdown #软关机 virsh destroy #强制关机 virs ...