数值积分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();
}