用龙贝格算法计算积分

#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. Java之路---Day03

    2019-10-17-21:18:33 方法 定义格式: public static void 方法名称() { 方法体 } 完整格式: 修饰符  返回值类型  方法名称(参数类型  参数名称,... ...

  2. 自学Python编程的第九天(希望有大牛帮我看看我第一个代码是否有弊端,感谢您们)----------来自苦逼的转行人

    2019-09-19-22:11:33 今天是自学Python的第九天 学的内容是有关文件操作的,如:r.w.a.rb.wb.ab.r+.w+.a+等 有大牛帮我看一下我的代码第一个有没有什么弊端吗? ...

  3. Sqlmap注入工具

    Sqlmap注入工具 http://sqlmap.org/ Sqlmap是国外的一个免费的注入工具,基于python开发,支持现在几乎所有的数据库,支持get.post.cookie注入,可以添加co ...

  4. nodeJS微信JSDK 配置

    nodeJS微信JSDK 配置 一.微信公众平台申请一个测试公众号 二.配置nodeJS 使用express框架搭建服务器 微信生成签名步骤: 1.获取token 2.通过token,获取jsapi_ ...

  5. 【故障处理】ORA-12162 错误的处理

    [故障处理]ORA-12162: TNS:net service name is incorrectly specified 一.1  场景 今天拿到一个新的环境,可是执行sqlplus / as s ...

  6. MySQL DataType--定点数(Fixed-Point Types)学习

    DECIMAL和NUMERIC MySQL支持两种定点数类型:DECIMAL和NUMERIC,而NUMERIC实现为DECIMAL,因此MySQL中DECIMAL和NUMERIC等价相同. 如使用下面 ...

  7. 随笔小skill

    1.用拉链函数zip()将字典转换成元组对!函数中的两个参数必须是序列!p = {'name':'zhangsanfeng','age':18,'gender':'nan'}print(list(zi ...

  8. matplotlib绘图难题解决

    # coding=utf-8 import pandas as pd import yagmail import requests import arrow import numpy as np im ...

  9. Linux 运维入门到跑路书单推荐

    一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统. https://b ...

  10. subprocess模块的使用注意

    subprocess.Popen()函数 语法格式: subprocess.Popen(arg,stdin=None,stdout=None,stderr=None,shell=False) 1.主要 ...