㈠ 怎样编写c语言积分函数
积分分为两种,数值积分,公式积分。
公式积分:部分函数可以直接用公式求得其不定积分函数。C语言中可以直接用积分公式写出其积分函数。
数值积分:按照积分的定义,设置积分范围的步长,用梯形面积累加求得其积分。
以【f(x)=x*sin(x) 从1到2的积分】为例:
#include<math.h>
#include<stdio.h>
doubleintegral(double(*fun)(doublex),doublea,doubleb,int,n){
doubles,h,y;
inti;
s=(fun(a)+fun(b))/2;
h=(b-a)/n;/*积分步长*/
for(i=1;i<n;i++)
s=s+fun(a+i*h);
y=s*h;
returny;/*返回积分值*/
}
doublef(doublex){
return(x*sinx)/*修改此处可以改变被积函数*/
}
intmain(){
doubley;
y=integral(f,1.0,2.0,150);/*修改此处可以改变积分上下限和步数,步长=(上限-下限)/步数*/
printf("y=%f ",y);
return0;
}
㈡ 用c语言求定积分
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,n,k,i,x,y;
double EPS=1e-7;
a=0;//a为积分下限
b=1.57079632679459661;//b为积分上限
n=1e-7;//n控制精度
k=x=y=0;//k为辅助变量
i=0;//i为积分的值
while(k<=1/n)
{
k++;
x=k*n*b-k*n*a;
y=sin(x);//定义被积函数
i=i+b*y*n-a*y*n;
}
printf("%lf\n",i);
getchar();
}
㈢ 用C语言求积分
好象要你自己定义函数,库函数中好象是没有直接可以用的积分函数的。
㈣ C语言求指定函数定积分的程序
#include<stdio.h>
#defineRES(1e-6)
doubleinteg(doublea,doubleb,doublef(double))
{
doublesum;
for(sum=0;a<b;a+=RES)
{
sum+=f(a)*RES;
}
returnsum;
}
doublef(doublex)
{
returnx*x;
}
intmain()
{
printf("%lf ",integ(0,0.1,f));
return0;
}
㈤ 用C语言编写一个求定积分的程序
#include<stdio.h>
#include<math.h>
float f1(float x)
{
return(1.0+x);
}
float f2(float x)
{
return(2.0*x+3.0);
}
float f3(float x)
{
return(exp(x)+1);
}
float f4(float x)
{
return(pow(1+x,2));
}
float f5(float x)
{
return(pow(x,3));
}
float fsimp(float a,float b,float (*p)(float))
{
float c,s;
c=(a+b)/2;
s=(b-a)/6*(p(a)+4*p(c)+p(b));
return s;
}
int main()
{
float a,b;
printf("请输入积分下限a的值:");
scanf("%f",&a);
printf("请输入积分上限b的值:");
scanf("%f",&b);
printf("%f\n",fsimp(a,b,f1));
printf("%f\n",fsimp(a,b,f2));
printf("%f\n",fsimp(a,b,f3));
printf("%f\n",fsimp(a,b,f4));
printf("%f\n",fsimp(a,b,f5));
}
㈥ 用C语言求定积分
实际问题描述:
求定积分近似值
程序代码如下:
#include
#include
void main()
{
int i,n=1000;
float a,b,h,t1,t2,s1,s2,x;
printf("请输入积分限a,b:");
scanf("%f,%f",&a,&b);
h=(b-a)/n;
for(s1=0,s2=0,i=1;i<=n;i++)
{
x=a+(i-1)*h;
t1=(float)exp(-x*x/2);t2(float)=exp(-(x+h)*(x+h)/2);
s1=s1+t1*h; /*矩形面积累加*/
s2=s2+(t1+t2)*h/2; /*梯形面积累加*/
}
printf("矩形法算得积分值:%f.
",s1);
printf("梯形法算得积分值:%f.
",s2);
}
程序运行结果如下:
矩形法算得积分值:0.855821
梯形法算得积分值:0.855624
由上面的比较可知,梯形法的精度要高于矩形法。
㈦ c语言怎么求 任意 函数的不定积分啊
使用定积分的定义求解,假设积分变量为△x=0.0000001
㈧ C语言求函数定积分
问题就是出在数据类型上的选用上,precision=0.0000001时已经超过了float的数据范围,所以导致数据截断后precision=0.000000,从而程序在计算积分时可能陷入死循环,应该采用double型数据类型。其实不推荐楼主用如此多的define语句,程序的可读性和风格应该重于编程员的劳动度。。。
还有楼主对自然对数e的define也已经超过了计算机的可识别范围。。您那样精确的定义e并不会在结果上获得更加精确地结果,其实反倒会起到相反的作用,要知道与其用一个这样可能导致内存出错以及必定会导致数据截断的变量来实现精度的提高远远不如采用一个更精确的积分算法,而且c语言提供了自然数e为底的指数函数~而且貌似您的积分算法是不准确的,梯形积分的定义并非如此,其再两端的函数值应该只取1/2.希望您多加细心~
如果不介意的话,就是你的precision应该改为step~这样会能更加准备的表达了这个变量的作用,在你的程序中precision变量其实是积分步长~在数值计算方法中积分精度的控制往往不是通过细化步长来表达,而是通过后一个积分值-前一个积分值<precision 这样来实现精度控制~呵呵