⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simpson.c

📁 我自己写的数值分析课程设计的算法
💻 C
字号:
#include<stdio.h>
#include<math.h>

double f(double x)
{
	return (1+x*x)/(1+pow(x,4));
}
double g(double x)
{
	return log(1+sqrt(x))/log(2.718282);
}
double p(double x)
{
	return 1/(pow(cos(x),2)+4*pow(sin(x),2));
}
double (*ff)(double)=NULL;

void main()
{
	double a,b;
	int num;
	int m;
	int j;
	double x,xx;
	double x1=0;
	double x2=0;
	double x0=0;
	double ERR,h;
	FILE *file;
	file=fopen("simpson.txt","a+");
	printf("Enter m,a,b:\n");
	fprintf(file,"Enter m,a,b:\n");
	scanf("%d%Lg%Lg",&m,&a,&b);
	fprintf(file,"%d %Lg %0.9Lg\n",m,a,b);
	printf("Enter the function number:\n");
	fprintf(file,"Enter the function number:\n");
	scanf("%d",&num);
	fprintf(file,"%d\n",num);
	h=(b-a)/2/m;
	
	switch(num)
	{
	case 1:
		ff=f;
		break;
	case 2:
		ff=g;
		break;
	case 3:
		ff=p;
		break;
	}
	x0=ff(a)+ff(b);
	for(j=1;j<2*m;j++)
	{
		x=a+h*j;
		if(j%2==0)
			x2+=ff(x);
		else
			x1+=ff(x);
	}
	xx=h*(x0+2*x2+4*x1)/3;
	switch(num)
	{
	case 1:
		 ERR=xx-3.1415926/4*sqrt(2);
		 break;
	case 2:
		 ERR=xx-0.5;
		 break;
	case 3:
		 ERR=xx-3.1415926/4;
		 break;
	}
	
	fprintf(file,"x=%Lg\n",xx);
	fprintf(file,"ERR=%Lg\n",ERR);
	fclose(file);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -