
正文
c语言定积分函数近似值 c语言求定积分的代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言---定积分的近似计算
我这边有个例子,你可以参考一下
至于菜单,自己定义吧,我也不知道你要什么样的菜单
#includestdio.h
#includemath.h
#define PF printf
#define M 1000
void main()
{ float f1(float);
float f2(float);
float f3(float);
float f4(float);
float f5(float);
float integral(float,float,float (float));
float a,b;
PF("请输入上,下限a,b:");
scanf("%f,%f",a,b);
PF("(1+x)*x在[%.2f,%.2f]的定积分为:",a,b);
PF("%.2f\n",integral(a,b,f1));
PF("(2*x+3)*x在[%.2f,%.2f]的定积分为:",a,b);
PF("%.2f\n",integral(a,b,f2));
PF("(1+x)*x在[%.2f,%.2f]的定积分为:",a,b);
PF("%.2f\n",integral(a,b,f1));
PF("exp(x)+1在[%.2f,%.2f]的定积分为:",a,b);
PF("%.2f\n",integral(a,b,f3));
PF("(1+x)*(1+x)在[%.2f,%.2f]的定积分为:",a,b);
PF("%.2f\n",integral(a,b,f4));
PF("x*x*x在[%.2f,%.2f]的定积分为:",a,b);
PF("%.2f\n",integral(a,b,f5));
}
float f1(float x)
{ float y;
y=(1+x)*x;
return y;
}
float f2(float x)
{ float y;
y=(2*x+3)*x;
return y;
}
float f3(float x)
{ float y;
y=(float)exp(x)+1;
return y;
}
float f4(float x)
{ float y;
y=(1+x)*(1+x);
return y;
}
float f5(float x)
{ float y;
y=x*x*x;
return y;
}
float integral(float a,float b,float (*fun)(float))
{ float n,h,s=0;
int i;
n=(b-a)/M;
for(i=0;iM;i++)
{ h=a+n*i;
s+=n*(*fun)(h);
}
return s;
}
其中只要把那几个函数(f1,f2,f3,f4,f5)的算法改掉就行了
相关问答
Q1: C语言实习用梯形法或辛普森法求解定积分的值
//梯形法求定积分
#includestdio.h
#includemath.h
//定义被积函数
double func(double x){
return sin(x)*cos(x);
}
void main(){
double a,b,h,x,sum;
int i,n;
printf("Input a b and n: ");
scanf("%lf%lf%d",a,b,n);
h=(b-a)/n;
x=a;
sum=(func(a)+func(b))/2;
for(i=1; in; i++){
x += h;
sum += func(x);
}
sum *= h;
printf("sum=%.4lf\n",sum);
}
Q2: C语言:编程求出图片上的定积分近似值,咋写?
代码文本:
#include "stdio.h"
#include "math.h"
int main(int argc,char *argv[]){
double s,x,d=0.000001,pi=3.1415926,t=1/3.0;
for(s=0.0,x=pi/2;x=pi;x+=d)
s+=sqrt(x)/(1-pow(x,t))*d;
printf("%f\n",s);
return 0;
}
Q3: 用c语言如何编写“用梯形法求定积分∫sinxdx的近似值 上限为不b=π下限为a=0”这一问题,求代码
首先解决怎么算,计算机肯定不会积分,所以我开始想用sinx的泰勒展开式,然后选3-4次作为近似,然后积分。听你说梯形法,是数值计算的内容,刚好这学期在学,就把我调试的程序发一个给你吧这是romberg算法,把a 换为0,b换为pi就好了吧。附上书上的代码。
#includestdio.h
#includemath.h
#define f(x) (sin(x))
#define N_H 20
#define MAXREPT 10
#define a 1.0
#define b 2.0
#define epsilon 0.00001
double computeT(double aa,double bb,long int n)
{
int i;double sum=0.0;double h=(bb-aa)/n;
for(i=1;in;i++)
{
sum+=f(aa+i*h);
}
sum+=(f(aa)+f(bb))/2;
return (h*sum);
}
void main()
{
int i;
long int n=N_H,m=0;
double T[MAXREPT+1][2];
T[0][1]=computeT(a,b,n);
n*=2;
for (m=1;mMAXREPT;m++)
{
for (i=0;im;i++)
{
T[i][0]=T[i][1];
}
T[0][1]=computeT(a,b,n);
n*=2;
for (i=1;i=m;i++)
{
T[i][1]=T[i-1][1]+(T[i-1][1]-T[i-1][0])/(pow(2,2*m)-1);
if((T[m-1][1]T[m][1]+epsilon)(T[m-1][1]T[m][1]-epsilon))
{
printf("the integrate is %lf\n",T[m][1]);
return;
}
}
}
printf("return no solved...\n");
}
Q4: 求大神指教,用C语言其定积分的算法。
求定积分的近似值常有矩形法与梯形法,其实质都是面积求和。
矩形法是把所要求的面积垂直x轴分成n个小矩形,然后把这n个小矩形的面积相加,即为所求的定积分的值。
梯形法是把所要求的面积垂直分成n个小梯形,然后作面积求和。
这两种近似求值的精度随分割个数n的增加而增加,对于相同的n个数,相对来说,梯形法的精度比矩形法的要高一些。
例:求函数f(x)=x*x+2*x+1在【0,2】上的定积分。
#includestdio.h
main()
{ double s=0,h,a,b,f0,f1,n;
int i;
printf("Enter n,a,b:");
scanf("%lf,%lf,%lf",n,a,b);
h=(b-a)/n;
f0=a*a+2*a+1;
for(i=1;i=n;i++)
{ a=a+h;
f1=a*a+2*a+1;
s+=(f0+f1)*h/2;
f0=f1;
}
printf("sum is %f",s);
}
c语言定积分函数近似值的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言求定积分的代码、c语言定积分函数近似值的信息别忘了在本站进行查找喔。








