在C语言程序中如何定义函数e^(-1/t)/t^2啊?求大哥帮忙。用梯形法求积分的。对了,你会用辛普森法求积分吗
1个回答
展开全部
#include <stdio.h>
#include <math.h>
double simpson(double f(double farg),double a,double b,int n)
{ double h, sum1, sum2;
int i;
h=(b-a)/n;
sum1=0;
for(i=2;i<=n;i=i+2)
{ sum1=sum1+f(a+(i-1)*h);
}
sum2=0;
for(i=2;i<=n-2;i=i+2)
{ sum2=sum2+f(a+i*h);
}
return(h/3*(f(a)+f(b)+4*sum1+2*sum2));
}
double f(double x)
{ double y=0.1;
return(4*(1-pow(10,y*(-2)*sqrt((0.25-x*x))))*sqrt(0.64-x*x));
}
void main( )
{ double m,y,x;
FILE * fp ;//定义一个输出文件
fp =fopen("zidingyi.txt", "w");
printf("f(x)dx=%f\n", simpson(f,0,0.5,1000000));
}
这是以前写的一个程序,针对函数是4*(1-pow(10,y*(-2)*sqrt((0.25-x*x))))*sqrt(0.64-x*x)。
上面是辛普森法求积分法,而采用梯形的那个非常简单,结果查不到 当时我都尝试过
#include <math.h>
double simpson(double f(double farg),double a,double b,int n)
{ double h, sum1, sum2;
int i;
h=(b-a)/n;
sum1=0;
for(i=2;i<=n;i=i+2)
{ sum1=sum1+f(a+(i-1)*h);
}
sum2=0;
for(i=2;i<=n-2;i=i+2)
{ sum2=sum2+f(a+i*h);
}
return(h/3*(f(a)+f(b)+4*sum1+2*sum2));
}
double f(double x)
{ double y=0.1;
return(4*(1-pow(10,y*(-2)*sqrt((0.25-x*x))))*sqrt(0.64-x*x));
}
void main( )
{ double m,y,x;
FILE * fp ;//定义一个输出文件
fp =fopen("zidingyi.txt", "w");
printf("f(x)dx=%f\n", simpson(f,0,0.5,1000000));
}
这是以前写的一个程序,针对函数是4*(1-pow(10,y*(-2)*sqrt((0.25-x*x))))*sqrt(0.64-x*x)。
上面是辛普森法求积分法,而采用梯形的那个非常简单,结果查不到 当时我都尝试过
更多追问追答
追问
我用exp(-1/x)/pow(x,2)来表示e^(-1/t)/t^2你看行吗?
#include "math.h"
double f(double x)
{
return return (exp(-1/x)/pow(x,2));
}
追答
应该可以,然后修改下积分上下限等等;你可以尝试下用梯形面积来验证你的答案
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询