龙贝格算法
来源:互联网 发布:域名重新定向 编辑:程序博客网 时间:2024/05/20 13:38
龙贝格算法是以复化梯形公式,复化希普森,复化牛顿-科特斯为基础采用的是逐渐平衡误差的做法,如下:
代码
#include<stdio.h> //龙贝格#include<math.h>#define maxlen 100double a;double b;double f(double x){ if(x==0) { return 1; } else { return (sin(x)/x); }}double t(int n){ if(n<1) { return -1; } else { if(n==1) { return (b-a)/2*(f(a)+f(b)); } else { double h; h=(b-a)/(n/2); double s=0; double m=a+h/2; while(m<b) { s=s+f(m); m=m+h; } while(m<b); return (t(n/2)/2+s*h/2); } }}double s(int n){ if(n<1) { return -1; } else { return (4/3*t(2*n)-1/3*t(n)); }}double c(int n){ if(n<1) { return -1; } else { return (16/15*s(2*n)-1/15*s(n)); }}double r(int n){ if(n<1) { return -1; } else { return (64/63*c(2*n)-1/63*c(n)); }}int main(){ printf("左区间:");scanf("%lf",&a); printf("右区间:");scanf("%lf",&b); printf("k\tt(2^k)\ts(2^(k-1)\tc(2^(k-2))\tr(2^(k-3))"); for(int k=0;k<=4;k++) { int z=pow(2,k); double x=z/2; double v=x/2; double b=v/2; printf("%lf\t%lf\t%lf\t%lf\t%lf\n",k,t(z),s(x),c(v),r(b)); } return 0;}
这个龙贝格采用的是迭代公式,一步一步接近精确值,代码没有优化,所以看起来有点啰嗦,愿谅解哈
1 0
- 龙贝格算法
- 龙贝格算法
- 龙贝格算法
- 龙贝格算法
- 龙贝格算法实现
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- java script 面向对象
- 20170429-五一在家忙学习
- C++编程开发学习的50条建议
- Android 延时操作的三种方式
- (2) quagga源码分析--路由信息处理zebra-rib
- 龙贝格算法
- 一.初识Mybatis
- Intellij创建自己的TODO
- VideoCapture类
- eclipse连接hadoop出现连接错误java.net.ConnectException
- Flask 使用重定向作为POST请求的响应
- ubuntu安装opencv
- HDU 4417 树状数组
- Java for Web学习笔记(五二):Spring框架简介(1)特点简述