复化梯形求积法

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#define epsilon 0.00001
float f(float x){
 return (1.0/(1.0+x*x));
}
float computeT(float a,float b){
 float T=0,h=(b-a)/2;
 T=h*(f(a)+2*T+f(b))/2;
 return T;
}
int main(){
 int i;
 float a,b,T1,T2,S,x,h;
 printf("\n Input the begin:");
 scanf("%f",&a);
 printf("\n Input the end:");
 scanf("%f",&b);
 h=b-a;
 T1=computeT(a,b);
 while(1){
  S=0;
  x=a+h/2;
  do
  {
   S+=f(x);
   x+=h;
  }while(x<b);
  T2=(T1+h*S)/2;
  if(fabs(T2-T1)>=epsilon){
   T1=T2;
   h=h/2;
   continue;
  }
  else
   break;
 }
 printf("solve is:%f",T2);
 getch();
 return S;
}

时间: 2024-08-28 11:19:11

复化梯形求积法的相关文章

复化梯形求积分——用Python进行数值计算

用程序来求积分的方法有很多,这篇文章主要是有关牛顿-科特斯公式. 学过插值算法的同学最容易想到的就是用插值函数代替被积分函数来求积分,但实际上在大部分场景下这是行不通的. 插值函数一般是一个不超过n次的多项式,如果用插值函数来求积分的话,就会引进高次多项式求积分的问题.这样会将原来的求积分问题带到另一个求积分问题:如何求n次多项式的积分,而且当次数变高时,会出现龙悲歌现象,误差反而可能会增大,并且高次的插值求积公式有可能会变得不稳定:详细原因不赘述. 牛顿-科特斯公式解决这一问题的办法是将大的插

变步长梯形求积法

#include<stdio.h>#include<string.h>#include<math.h>#include<conio.h>#include<stdlib.h>#define epsilon 0.00001float f(float x){ return(x/(4.0+x*x));}float computeT(float a,float b){ float T=0,h=(b-a)/2; T=h*(f(a)+2*T+f(b))/2; 

数值积分——复合梯形求积公式

这段代码实现的是最一般的数值积分法——梯形求积法,积分值的准确依赖于所取精度大小 1.代码 %%复合梯形求积公式 %%Y是数值(attribute=0)或具体表达式(attribute=1),interval是求积区间,n是精度(如果是数值,则为数值长度-1) function CTQF = Compound_trapezoid_quadrature_formula(Y,interval,n,attribute) a = interval(1);b = interval(2); h = (b-a

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

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

实验报告(2019年4月30日)下半部分

c程序实验报告 姓名:黄志乾????实验地点:教学楼514教室????实验时间:4月30日 实验项目: ???1.利用复化梯形公式计算定积分 ???2.计算Ackerman函数 ???3.编写计算x的y次幂的递归函数getpower(int x,int y).并在主程序中实现输入输出. ???4.编写计算学生年龄的递归函数 ???5.编写递归函数下hi先Ackerma函数 一.实验目的与要求 1.利用复化梯形公式计算定积分 ●掌握c语言中定义函数的方法 ●掌握通过"值传递"调用函数的方

第六章函数与宏定义实验报告(2)

C程序设计实验报告 实验项目: 1.利用复化梯形公式计算定积分2.计算Ackerman函数3.编写计算x的y次幂的递归函数getpower(int x,int y),并在主程序中实现输入输出4.编写计算学生年龄的递归函数5.编写递归函数实现Ackman函数 姓名:魏志远  实验地点:教学楼514  实验时间:5.16 一.实验目的与要求 1.利用复化梯形公式计算定积分 掌握C语言中定义函数的方法 掌握通过“值传递”调用函数的方法 2.计算Ackerman函数 掌握递归函数的设计方法 进一步练习阅

第六章 函数和宏定义实验(2)

C程序设计实验报告 实验项目: 6.4.2.模块化程序设计 利用复化梯形公式计算定积分 计算Ackerman函数 6.4.3 函数的递归调用 编程计算x的y次幂的递归函数getpower(int x,int y),并在主程序中实现输入输出 编写计算学生年龄的递归函数 编写递归函数实现Ackman函数 姓名:罗龙妹 实验地点: 514实验室 实验时间:2019年5月16日 一.实验目的与要求 6.4.2.模块化程序设计 6.4.2.2 利用复化梯形公式计算定积分 掌握C语言中定义函数的方法 掌握通

第六章函数和宏定义

C程序设计实验报告 实验项目: 第六章函数和宏定义 姓名:李儿龙  实验地点:514教室 实验时间:5.16 一.实验目的与要求 1.模块化程序设计: 6.4.2.2. 利用复化梯形公式计算定积分 掌握C语言中定义函数的方法: 掌握通过“值传递”调用函数的方法. 6.4.2.3. 计算Ackerman函数 掌握递归函数的设计方法: 进一步练习阅读检查与调试修改C程序的方法. 6.4.3.1. 编写计算x的y次幂的递归函数getpower(int x,int y),并在主程序中实现输入输出 写出该

第六章实验报告(2)

C程序设计实验报告 实验项目: 6.4.2.2.利用复化梯形公式计算定积分 6.4.2.3.编计算Ackerman函数 6.4.3.1.编写计算x的y次幂的递归函数getpower(int x,int y).并在主程序中实现输入输出. 6.4.3.2.编写计算学生年龄的递归函数 6.4.3.3.编写递归函数下hi先Ackerma函数 姓名:钟俊敏    实验地点:教学楼514教室     实验时间:5月16日 6.4.2.2.利用复化梯形公式计算定积分 ● 掌握c语言中定义函数的方法 ●掌握通过