龙贝格公式计算定积分

 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; i++)
14         sum += f(a + i * h);
15     sum += (f(a) + f(b)) / 2;
16     return (h * sum);
17 }
18 int main()
19 {
20     printf("k\t T[k]\t\t S[k]\t\t C[k]\t\t R[k]\n");
21     double T[maxlen];
22     double S[maxlen];
23     double C[maxlen];
24     double R[maxlen];
25     int k=-1;
26     while(1){
27         k++;
28         int z=pow(2,k);
29         T[k]=t(z);
30         if(k>0){
31             S[k]=T[k]*4/3-T[k-1]/3;
32         }
33         if(k>1){
34             C[k]=S[k]*16/15-S[k-1]/15;
35         }
36         if(k>2){
37             R[k]=C[k]*64/63-C[k-1]/63;
38         }
39         printf("%d\t %lf\t %lf\t %lf\t %lf\n",k+1,T[k],S[k],C[k],R[k]);
40         if(k>3){
41             if (abs(R[k]-R[k-1])<eps){
42                  break;
43             }
44         }
45     }
46     printf("a:0,b:1 f(x):4/(1+x*x) eps:0.5*1e-5 the result:%lf\n",R[k]);
47     return 0;
48 }

原文地址:https://www.cnblogs.com/DixinFan/p/10117175.html

时间: 2024-08-29 21:05:09

龙贝格公式计算定积分的相关文章

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

----------------------个人作业,如果有后辈的作业习题一致,可以参考学习,一起交流,请勿直接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 %

龙贝格算法

求积分的龙贝格算法 计算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[1

【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])

小小知识点(二十)利用MATLAB计算定积分

一重定积分 1. Z = trapz(X,Y,dim) 梯形数值积分,通过已知参数x,y按dim维使用梯形公式进行积分 %举例说明1 clc clear all % int(sin(x),0,pi) x=0:pi/100:pi; %积分区间 y=sin(x); %被积函数 z = trapz(x,y) %计算方式一 z = pi/100*trapz(y) %计算方式二  运行结果 被积函数曲线 2.[q,fcnt]= quad(fun,a,b,tol,trace,p1,p2...) 自适应sim

POI/Excel/HTML单元格公式问题

一.问题描述 使用MyBatis从数据库中获取数据,然后用POI把数据填充到Excel模板中,生成最终的xls文件.把最终的xls文件转换为html文件,并返回给前台显示在Panel中. Excel模板中,除了数据点位符外,还有一些计算公式.由于这些计算公式引用的数据在模板中是点位符,所以计算单元显示为"#VALUE!".见下图: 生成Excel文件,在添加了重算的相关代码(见下文)后,计算单元格的值能够正常显示.转换为html后,这些计算单元格不会重新计算,仍然显示为"#V

WPF实现强大的动态公式计算

数据库可以定义表不同列之间的计算公式,进行自动公式计算,但如何实现行上的动态公式计算呢?行由于可以动态扩展,在某些应用场景下将能很好的解决实际问题. 1.VS2012新建一个WPF应用程序WpfApp_DynCalc,并添加一个类DynCalc.cs,如下图: 2.编辑MainWindow.xaml,代码如下: 1 <Window x:Class="WpfApp_DynCalc.MainWindow" 2 xmlns="http://schemas.microsoft.

如何隐藏Excel中单元格公式且其他单元格可修改

需求:1.隐藏指定单元格公式.2.非公式单元格可修改,不影响公式计算. 操作步骤:1.全选工作表.右键.单元格格式.保护.锁定勾选取消. 2.编辑.定位(或按F5弹出该对话框).定位条件.公式(勾选),确定,右键.单元格格式.保护.锁定勾选(并勾选隐藏). 3.保护工作表.

用python实现计算1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))类似的公式计算

作业需求: 开发一个简单的python计算器 1.实现加减乘除及拓号优先级解析 2.用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致 上图是实现的逻辑思路图,下面是对上图的分析: 整体的思想就是先匹配最