Simpson公式、复化梯形公式、Cotes公式以及Romberg公式

数值分析的学习记录:

  • 数学:数值分析
    • Simpson公式,复化梯形公式,Cotes公式,以及龙贝格(Romberg)公式

数学:数值分析

研究生课程中的四门数学课中的一门:数值分析,今天完成了其课程作业,留下一个记录

Simpson公式,复化梯形公式,Cotes公式,以及龙贝格(Romberg)公式

Simpson公式、复化梯形公式、Cotes公式以及Romberg公式_第1张图片
Simpson公式、复化梯形公式、Cotes公式以及Romberg公式_第2张图片

接下来,用代码的形式来实现这四种求定积分的近似值的方法:
语言:C 操作系统:Mac OS 环境:Sublime Text3
代码如下:

#include
#include
#include
struct Romberg
{
	//  四种方式求得的拟合函数
	float ctf;
	float simp;
	float cotes;
	float rom;
	int n;
	int k;
};
/**
龙贝格(Romberg)求积分公式
**/
float romberg(float c1,float c2){
	return (4*4*4*c2-c1)/(4*4*4-1);
}
/**
复化Cotes公式的方法体
**/
float cotes(float s1,float s2){
	return (4*4*s2-s1)/(4*4-1);
}
/**
复化梯形公式的计算
**/
float CTF(float step){
	    float result = 0.0;
	    float h = (1.0/2.0)/step;
		//  步长由2开始,到10停止
		// 根据复化梯形归公式:
		for(int j=1.0;j=1){
			//  计算simpson
			rom[flag].simp = Simpson(rom[i-1].ctf,rom[i].ctf);
		}else rom[flag].simp = 0.0;
		if(i>=2){
			//  计算cotes
			rom[flag].cotes=cotes(rom[i-1].simp,rom[i].simp);
		}else rom[flag].cotes = 0.0;
		if(i>=3){
			//  计算romberg
			rom[flag].rom = romberg(rom[i-1].cotes,rom[i].cotes);
		}
		else rom[flag].rom = 0.0;
		flag++;
	}
	printf("%s\n", "复化梯形公式的近似值        Simpson公式求的近似值          cotes公式求得的近似值        romberg公式求得的近似值            n    k");
	for(int k = 0;k<10;k++){
	     printf("%.7f                   %.7f                      %.7f                    %.7f                          %d    %d\n",rom[k].ctf,rom[k].simp,rom[k].cotes,rom[k].rom,rom[k].n,rom[k].k); 
    }
	return 0;
}

实验结果:结果如下
Simpson公式、复化梯形公式、Cotes公式以及Romberg公式_第3张图片

你可能感兴趣的:(算法学习)