數值積分c語言
A. 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);
}
B. 怎樣編寫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. 怎麼用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));
}
(3)數值積分c語言擴展閱讀
1、對應於一個積分式要有一段程序,可以改變程序的一小部分來改變所要求的積分式。
2、除數不能位0。
3、兩個整數相除,結果仍是整數。
4、若被除數其中有一個為浮點數或者兩個都為浮點數,則結果為浮點類型。操作數必須為整數,不能是浮點數。
D. 用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);
}
E. C語言編程如何編寫積分公式
#include<iostream.h>
//定義結構類型
structstudent
{
intnum;
charname[20];
floatgrade;
};
voidmain(void)
{
//聲明數組
inti,size;
charstr[]="Thisisastring.";
intint_values[]={51,23,2,44,45,0,11};
floatfloat_values[]={15.1,13.3,22.2,10.4,1.5};
studentst_arr[]={101,"WangLin",92,102,"LiPing",85,103,"ZhaoMin",88};
//顯示char類型數組元素及其大小
size=sizeof(str)/sizeof(char);
cout<<"Numberofelementsinstr:";
cout<<size<<endl;
for(i=0;i<size;i++){
cout<<str[i];
}
cout<<endl;
//顯示int類型數組元素及其大小
size=sizeof(int_values)/sizeof(int);
cout<<"Numberofelementsinint_values:";
cout<<size<<endl;
for(i=0;i<size;i++){
cout<<int_values[i]<<"";
}
cout<<endl;
//顯示float類型數組元素及其大小
size=sizeof(float_values)/sizeof(float);
cout<<"Numberofelementsinfloat_values:";
cout<<size<<endl;
for(i=0;i<size;i++){
cout<<float_values[i]<<"";
}
cout<<endl;
//顯示student類型數組元素及其大小
size=sizeof(st_arr)/sizeof(student);
cout<<"Numberofelementsinst_arr:";
cout<<size<<endl;
for(i=0;i<size;i++){
cout<<st_arr[i].num<<"";
cout<<st_arr[i].name<<"";
cout<<st_arr[i].grade<<endl;
}
}
#include<iostream.h>
//add()函數的定義,其有返回值
doubleadd(doublex,doubley)
{
doublez;
z=x+y;
cout<<x<<"+"<<y<<"="<<z<<endl;
return(z);
}
main()
{
doublea=0.5,b=1.0;
//以不同參數形式調用函數add()
cout<<"add(1.5,2.5)="<<add(1.5,2.5)<<endl;
cout<<"add(a,b)="<<add(a,b)<<endl;
cout<<"add(2*a,a+b)="<<add(2*a,a+b)<<endl;
cout<<"----------------------"<<endl;
//以表達式方式調用函數add()
doublec=2*add(a,b);
cout<<"c="<<c<<endl;
cout<<"----------------------"<<endl;
//以語句式方式調用函數add()
add(2*a,b);
cout<<"----------------------"<<endl;
//用其他類型參數調用函數add()
intn=1,m=2;
cout<<"add("<<n<<","<<m<<")="<<add(n,m)<<endl;
}
#include<iostream.h>
//定義符號函數sgn(),其返回值為int類型
intsgn(doublex)
{
if(x>0)return(1);//返回出口1
if(x<0)return(-1);//返回出口2
return(0);//返回出口3
}
//main()函數定義
main()
{
doublex;
inti;
for(i=0;i<=2;i++){
cout<<"x=";
cin>>x;
cout<<"sgn("<<x<<")="<<sgn(x)<<endl;
}
}
F. 如何用c語言編寫用數值積分法求π,請大神指教
#include <stdio.h>
main()
{
double pi = 3, x = 3;
int i;
for(i = 1; x > 0.000001; i++) {
x *= 0.25*(2*i-1)*(2*i-1)/(2*i)/(2*i+1);
pi += x;
printf("PI = %lf\n", pi);
}
}
G. 用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)); }
H. c語言數值積分
問題在這一句
step=(b-a)/divn;
b,a,divn都是int型 比如b=2 a=1 divn=10 直接算出step就等於0了
解決方法是在double numint(MFP fp,double a,double b) 把a,b都定義為double
I. C語言求積分
float I_Control(float Input)
{
static float OutData = 0;
OutData+=Input*deltaT;
deltaT+=deltaT;
return OutData;
}
J. C語言解決定積分
#include<stdio.h>
#include<math.h>
void main()
{
int i,n;
float x[10001],y[10001];
float x0,xn,h,JiFen;
printf("input x0,xn,n:");
scanf("%f,%f,%d",&x0,&xn,&n);
h=(xn-x0)/n;
x[0]=x0;
for(i=0;i<=n;i++)
{
x[i]=x[0]+i*h;
y[i]=pow(x[i],3);
}
JiFen=0.0;
for(i=0;i<n;i++)
{
JiFen=JiFen+y[i]+y[i+1];
}
JiFen=JiFen*h/2.0;
printf("\n");
printf("n=%d JiFen is %f",n,JiFen);
getch();
}