c语言积分调节函数 c语言中积分怎么表示

c语言 求定积分的通用函数

对于一重定积分来说其求解可以使用梯形法进行求解,计算公式如下所示:

创新互联主营长丰网站建设的网络公司,主营网站建设方案,成都app软件开发,长丰h5重庆小程序开发搭建,长丰网站营销推广欢迎长丰等地区企业咨询

其中,f(x)为被积函数,为横坐标的两点间的间隔,越小,则计算出的结果越精确。

对于求解此类问题可以使用C语言中的回调函数编写通用的计算函数,代码如下:

#include stdio.h

#include stdlib.h

#includemath.h

//功能:返回f(x)在积分区间[a,b]的值

//参数:FunCallBack 指向用于计算f(x)的函数

//      a  积分区间的起始值

//      b  积分区间的结束值

//      dx 横坐标的间隔数,越小计算结果越准确

double Calculate(double (*FunCallBack)(double x),

double a,double b,double dx)

{

double doui;

double total = 0;        //保存最后的计算结果

for (doui = a; doui = b; doui += dx)

{

total += FunCallBack(doui)*dx;

}

return total;

}

double f2(double x)

{

return x*x;

}

double f(double x)

{

return x;

}

double f3(double x)

{

return x*x*x ;

}

int main()

{

double total;

total = (Calculate(f, 2, 3, 0.000001));

printf("total = %lf\n", total);

total = (Calculate(f2, 2, 3, 0.000001));

printf("total = %lf\n", total);

total = (Calculate(f3, 2, 3, 0.000001));

printf("total = %lf\n", total);

return 0 ;

}

其中,函数f,f2,f3为自行编写的关于x的被积函数。

运行结果:

total = 2.500000

total = 6.333331

total = 16.249991

怎样编写c语言积分函数

积分分为两种,数值积分,公式积分。

公式积分:部分函数可以直接用公式求得其不定积分函数。C语言中可以直接用积分公式写出其积分函数。

数值积分:按照积分的定义,设置积分范围的步长,用梯形面积累加求得其积分。

以【f(x)=x*sin(x) 从1到2的积分】为例:

#include math.h

#include stdio.h

double integral(double(*fun)(double x),double a,double b,int,n){

double s,h,y;

int i;

s=(fun(a)+fun(b))/2;

h=(b-a)/n; /*积分步长*/

for(i=1;in;i++)

s=s+fun(a+i*h);

y=s*h;

return y;/*返回积分值*/

}

double f(double x){

return(x*sinx)  /*修改此处可以改变被积函数*/

}

int main(){

double y;

y=integral(f,1.0,2.0,150);/*修改此处可以改变积分上下限和步数,步长=(上限-下限)/步数*/

printf("y=%f\n",y);

return 0;

}

用C语言编写的PI调节器函数,采用位置式算法,求大神指教

typedef struct{  

float limit;    //输出限幅  

float target;   //设置量  

float feedback; //实测量  

float Kp;       //比例系数

float Ki;       //积分系数

float Kd;       //微分系数

float eSum;     //误差积分

float e0;       //当前误差  

float e1;       //上一次误差  

}PIDType;  

#define max(a, b)           (ab? a:b)  

#define min(a, b)           (ab? a:b)  

#define range(x, a, b)      (min(max(x, a), b))  

float pid_pos_update(PIDType *p)  

{  

float pe, ie, de;  

float out=0;  

//计算当前误差  

p-e0 = p-target - p-feedback;  

//误差积分  

p-eSum += p-e0;  

//误差微分  

de = p-e0 - p-e1;  

pe = p-e0;  

ie = p-eSum;  

p-e1 = p-e0;  

//数据增量  

out = pe*(p-Kp) + ie*(p-Ki) + de*(p-Kd);  

//输出限幅  

out = range(out, -p-limit, p-limit);  

return out;  

}

高手啊!给我用C语言编个积分函数!函数我在下面给出了。

double thelta = 1e-7;

double a = 0,b = B;

double result = 0;

for(double t = a;tb;t+=thelta)

{

result+=t*M(t);

}

M那个函数你自己编个函数就行了;


分享题目:c语言积分调节函数 c语言中积分怎么表示
文章出自:http://scyanting.com/article/doipcsj.html