龙贝格积分(c++)
用龙贝格算法计算积分
#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++)的更多相关文章
- 【C/C++】实现龙贝格算法
1. 复化梯形法公式以及递推化 复化梯形法是一种有效改善求积公式精度的方法.将[a,b]区间n等分,步长h = (b-a)/n,分点xk = a + kh.复化求积公式就是将这n等分的每一个小区间进行 ...
- 利用Python科学计算处理物理问题(和物理告个别)
背景: 2019年初由于尚未学习量子力学相关知识,所以处于自学阶段.浅显的学习了曾谨言的量子力学一卷和格里菲斯编写的量子力学教材.注重将量子力学的一些基本概念了解并理解.同时老师向我们推荐了Quant ...
随机推荐
- 【开发工具】- Myeclipse10.7破解方法
1.下载myeclipse 10,如果没有,可以使用链接:https://pan.baidu.com/s/1l9juqD4ALMuepVL6e5kgjA 密码:kpx6:当然时间久了可能链接失效,如有 ...
- Oracle数据库之操作符及函数
一.操作符: 1.分类: 算术.比较.逻辑.集合.连接: 2.算术操作符: 执行数值计算: -- 工资加1000 from emp; 3.比较操作符: -- 比较运算符(between and包头不包 ...
- 【兼容调试】cffi library '_openssl' has no function, constant or global variable named 'Cryptography_HAS
重装cryptography就好了. conda uninstall cryptography conda install cryptography https://github.com/pyca/c ...
- appium自动化webview时遇到的chromedriver问题
安卓app里面的网页,基本上都是使用手机系统上的webview 去显示的. 安卓 webview 可以看成是 手机上的 chrome 浏览器精简版. appium desktop 里面内置了 用于 w ...
- Python并发编程-并发解决方案概述
Python并发编程-并发解决方案概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.并发和并行区别 1>.并行(parallel) 同时做某些事,可以互不干扰的同一个时 ...
- php将原数组倒序array_reverse()
1.数组倒序排列 $arr = array(1,2,3); $arr = array_reverse($arr); print_r($arr);
- jquery 子元素筛选选择器
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...
- Tarjan算法分解强连通分量(附详细参考文章)
Tarjan算法分解强连通分量 算法思路: 算法通过dfs遍历整个连通分量,并在遍历过程中给每个点打上两个记号:一个是时间戳,即首次访问到节点i的时刻,另一个是节点u的某一个祖先被访问的最早时刻. 时 ...
- 一些带dga域名的恶意软件
04/02/2019 06:17下午 6,488,759 f4f242a50ba9efa1593beba6208a2508_PWS.win32.Simda_1250_DGADNS.pcap Simda ...
- jni接口
https://www.jianshu.com/p/d4a502420a89 #pragma once /*DO NOT EDIT THIS FILE - it is machine generate ...