㈠ 怎樣編寫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 這樣來實現精度控制~呵呵