龙贝格算法

求积分的龙贝格算法

计算f(x)=1/x在[1,3]上的积分:

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cmath>
 4 using namespace std;
 5
 6 double f(double x){
 7     return 1.0/x;
 8 }
 9
10 int main(){
11     double a,b;//积分区间的上界和下届
12     a=1;
13     b=3;
14
15     double t[100];
16     memset(t,-1,sizeof(t));
17     t[1]=(b-a)/2.0*( f(a)+f(b) ) ;
18     for(int n=1;n<=8;n=2*n )
19     {
20         double temp=0;
21         for(int i=0;i<=n-1;i++){
22             temp+=f( a+(2*i+1)*(b-a)/(2*n)  );
23         }
24         temp=temp*(b-a)/(2*n);
25         t[2*n]=t[n]/2.0 + temp;
26     }
27
28     for(int i=1;i<=16;i=i*2){
29         printf("t(%d)=%2.6f\n",i,t[i]);
30     }
31     printf("\n");
32
33     double s[100];
34     memset(s,-1,sizeof(s));
35     for(int n=1;n<=8;n*=2)
36     {
37         s[n]=4.0/3.0*t[2*n]-t[n]/3.0;
38     }
39     for(int i=1;i<=8;i=i*2){
40         printf("s(%d)=%2.6f\n",i,s[i]);
41     }
42     printf("\n");
43
44     double c[100];
45     memset(c,-1,sizeof(c));
46     for(int n=1;n<=4;n*=2)
47     {
48         c[n]=16.0/15.0*s[2*n]-s[n]/15.0;
49     }
50     for(int i=1;i<=4;i=i*2){
51         printf("c(%d)=%2.6f\n",i,c[i]);
52     }
53     printf("\n");
54
55     double r[100];
56     memset(r,-1,sizeof(r));
57     for(int n=1;n<=2;n*=2)
58     {
59         r[n]=64.0/63.0*c[2*n]-c[n]/63.0;
60     }
61     for(int i=1;i<=2;i=i*2){
62         printf("r(%d)=%2.8f\n",i,r[i]);
63     }
64
65
66 }

输出结果为:

时间: 2024-10-09 22:37:40

龙贝格算法的相关文章

【C/C++】实现龙贝格算法

1. 复化梯形法公式以及递推化 复化梯形法是一种有效改善求积公式精度的方法.将[a,b]区间n等分,步长h = (b-a)/n,分点xk = a + kh.复化求积公式就是将这n等分的每一个小区间进行常规的梯形法求积,再将这n的小区间累加求和. 公式如下: 使用复化梯形法积分时,可以将此过程递推化,以更方便的使用计算机实现.设积分区间[a,b],将此区间n等分,则等分点共有n+1个,使用复化梯形积分求得Tn.进行二分,二分结果记为T2n,则有: 2. 龙贝格积分公式 龙贝格积分实际上是提高收敛速

龙贝格求积算法

龙贝格求积算法python实现 import numpy as np def trapezoid(a, b, n, func): """ 复化梯形公式求函数func在区间[a,b]上的积分值 n是等分的区间数目 """ x = np.linspace(a, b, num=n + 1) y = func(x) h = (b - a) / (2 * n) return h * (y[0] + 2 * np.sum(y[1:-1]) + y[-1])

数值计算实验报告---复合求积公式(梯形、抛物线、龙贝格)、导数求值(三点、四点、五点公式)

----------------------个人作业,如果有后辈的作业习题一致,可以参考学习,一起交流,请勿直接copy ··复合抛物线公式: ··龙贝格公式: 四.实验内容 ------1 实验题目1中所用到的三种算法的matlab实现代码具体如下: %复合梯形公式 function y=funct(f,n,a,b) fi=f(a)+f(b); h=(b-a)/n; d=1; for i=1:n-1 x=a+i*h; fi=fi+2*f(x); d=d+1; end f4=h/2*fi,d %

龙贝格公式计算定积分

1 #include<stdio.h> 2 #include<math.h> 3 #define maxlen 100 4 #define eps 0.5*1e-5 5 double a=0; 6 double b=1; 7 double f(double x){ 8 return 4/(1+x*x); 9 } 10 double t(int n){ 11 int i; 12 double sum, h = (b - a) / n; 13 for (i = 1; i < n;

C# “贝格尔”编排法

采用“贝格尔”编排法,编排时如果参赛队为双数时,把参赛队数分一半(参赛队为单数时,最后以“0”表示形成双数),前一半由1号开始,自上而下写在左边:后一半的数自下而上写在右边,然后用横线把相对的号数连接起来.这即是第一轮的比赛. 第二轮将第一轮右上角的编号(“0”或最大的一个代号数)移到左角上,三轮又移到右角上,以此类推. 即单数轮次时“0”或最大的一个代号在右上角,双数轮次时则在左上角.如下表示: 7个队比赛的编排方法 第一轮    第二轮   第三轮   第四轮    第五轮   第六轮  

# 07 朴素叶贝斯算法

07 朴素叶贝斯算法 概率基础 概率: 一件事情发生的可能性 联合概率: 包含多个条件,且所有条件同时成立的概率.P(A,B) P(A, B) = P(A)P(B) 条件概率:事件A在另外一个事件B已经发生条件下发生的概率. P(A|B) P(A1,A2 | B) = P(A1 | B) * P(A2 | B) 注意: 此条件概率的成立,是由于A1, A2相互独立的结果 朴素贝叶斯 朴素: 特征独立,常用文档分类 在给定词比例的基础上,求各类型文档的比例 贝叶斯公式: (多个条件下一个结果) 公

计算方法(二)数值积分

在工程中,经常会遇到积分问题,这时原函数往往都是找不到的,因此就需要用计算方法的数值积分来求. public class Integral { /// <summary> /// 梯形公式 /// </summary> /// <param name="fun">被积函数</param> /// <param name="up">积分上限</param> /// <param name=&

实验三 数值积分(android)

实验二博客地址:http://blog.csdn.net/double2hao/article/details/51217356 实验一博客地址:http://blog.csdn.net/double2hao/article/details/51152843 一.实验内容 分别写出变步长梯形法和romberge法计算定积分的算法,编写程序上机调试出结果,要求所编程序适用于任何类型的定积分,即能解决这一类问题,而不是某一个问题. 试验中以下列数据验证程序的正确性. 求  (sinx)/x的积分,积

数值分析课程设计

数值分析学习心得: 插值法:拉格朗日插值,埃米特插值 函数逼近:最小二乘法 求积分的算法:牛顿-科斯特公式,龙贝格求积公式,高斯求积公式 求线性方程组的迭代法:jacobi迭代法,高斯-赛德尔迭代法 求非线性方程的算法:牛顿法 求常微分方程初值问题的算法:欧拉法,龙格-库塔法 数值分析课程设计  浙江大学 陈越 第1章 数值分析课程实践概要1.1 课程实践的意义1.2 实验的基本要求第2章 MATLAB简介2.1 MATLAB概述2.2 常用基本指令2.3 数值技术第3章 案例详解1:误差的影响