c語言中的積分
Ⅰ 怎樣編寫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語言 求數值積分
H=(B-A)/N這一句不應該放在變數聲明中,因為剛定義時,A,B,N沒有賦值,是隨機值
應該將
float A,B,N,H=(B-A)/N,sum=0;
改為:
float A,B,N,H,sum=0;
將H=(B-A)/N;放在scanf ("%f",&N); 後面。
#另外建議將int i放在主函數起始處。
-----------------------------------------
更改後的程序:
#include<stdio.h>
float f(float x)
{
return 4/(x*x+1);
}
void main()
{
float A,B,N,H,sum=0;
int i;
printf ("請輸入A值:");
scanf ("%f",&A);
printf ("請輸入B值:");
scanf ("%f",&B);
printf ("請輸入N值:");
scanf ("%f",&N);
H=(B-A)/N;
for(i=1;i<=N;i++)
{
sum+=(f(A)+f(A+H))*H/2;
A=A+H;
}
printf("%.5f\n",sum);
}
Ⅲ 在C語言中,積分函數怎麼寫
把積分算式算出來,然後用C寫。
比如[a,b]的積分上限和下限,對x積分,就是x^2/2, 代入a,b
Ⅳ C語言求積分
float I_Control(float Input)
{
static float OutData = 0;
OutData+=Input*deltaT;
deltaT+=deltaT;
return OutData;
}
Ⅳ 用c語言進行積分計算
樓下用的方法不對,題目要求梯形法
但他用了矩形法
這個才是梯形法
#include<stdio.h>
#define STEP 10000
double f(double x)
{
return 1.0/(1+x*x);
}
void main()
{
double a,b,x1,x2,area=0,h;
scanf("%lf%lf",&a,&b);
h=(b-a)/STEP;
x1=a;
x2=a+h;
while(x2<=b)
{
area+=h*(f(x1)+f(x2))/2;
x1=x2;
x2+=h;
}
printf("%lf\n",area);
}
Ⅵ 用C語言求積分
基本是這樣的,用梯形發求定積分,對應於一個積分式就要有一段程序,不過你可以改變程序的一小部分來改變你所要求的積分式。
以c為例:求f(x)=xsinx從1到2的積分
#include <math.h>
float integral(float(*fun)(float x),float a,float b,int,n)
{float s,h,y;
int i;
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;
return y;/*返回積分值*/
}
float f(float x)
{return(x*sinx) /*修改此處可以改變被積函數*/
}
main()
{float y;
y=integral(f,1.0,2.0,150);/*修改此處可以改變積分上下限和步長*/
printf("y=%f\n",y);
}
Ⅶ C語言如何實現積分運算
#include<stdio.h>
#include<math.h>
double integ(double a,double b)
{
double s,x,h;
int n=100,i;
h=fab(b-a)/n;
s=(sin(a)+sin(b))/2.0;
for(i=1;i<=n-1;i++)
{
x=a+i*h;
s=s+sin(x);
}
s=s*h;
return s;
}
main()
{
double s;
s=integ(0.0,0.15);
printf("s=%f\n",s);
}
你自己跑下,可能有語法錯誤。呵呵。。
Ⅷ 用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語言表示積分
源代碼如下:
#include#includefloat 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 ",fsimp(a,b,f1));
}
(9)c語言中的積分擴展閱讀
1、對應於一個積分式要有一段程序,可以改變程序的一小部分來改變所要求的積分式。
2、除數不能位0。
3、兩個整數相除,結果仍是整數。
4、若被除數其中有一個為浮點數或者兩個都為浮點數,則結果為浮點類型。操作數必須為整數,不能是浮點數。
Ⅹ 用c語言編程計算積分
#include #include 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)); }