当前位置:首页 » 编程语言 » c语言函数定积分

c语言函数定积分

发布时间: 2024-12-03 15:04:30

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

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

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

//功能:返回f(x)在积分区间[a,b]的值
//参数:FunCallBack指向用于计算f(x)的函数
//a积分区间的起始值
//b积分区间的结束值
//dx横坐标的间隔数,越小计算结果越准确
doubleCalculate(double(*FunCallBack)(doublex),
doublea,doubleb,doubledx)
{
doubledoui;
doubletotal=0;//保存最后的计算结果

for(doui=a;doui<=b;doui+=dx)
{
total+=FunCallBack(doui)*dx;
}
returntotal;
}

doublef2(doublex)
{
returnx*x;
}

doublef(doublex)
{
returnx;
}

doublef3(doublex)
{
returnx*x*x;
}

intmain()
{
doubletotal;
total=(Calculate(f,2,3,0.000001));
printf("total=%lf ",total);

total=(Calculate(f2,2,3,0.000001));
printf("total=%lf ",total);

total=(Calculate(f3,2,3,0.000001));
printf("total=%lf ",total);

return0;
}
其中,函数f,f2,f3为自行编写的关于x的被积函数。
运行结果:
total=2.500000
total=6.333331
total=16.249991

‘贰’ 用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语言求定积分的问题。

根据梯形法求积分的原理,设间隔h= (b-a)/n,则积分近似计算公式为:

s = h/2 *[f(a)+f(a+h)] +h/2 *[f(a+h)+f(a+2h)] +...+h/2 *[f(b-h)+f(b)]

=h/2 *[f(a)+f(b)] + h*[ f(a+h) + f(a+2h) +f(a+3h) + ... +f(b -h)]

令积分s初始值为h/2 *[f(a)+f(b)] ,后面令i=1,...,n-1来迭代s = s+h*f(a+ih)。

热点内容
安卓qq文件在哪个文件夹里 发布:2025-01-04 12:32:49 浏览:842
玩堂编程 发布:2025-01-04 12:32:03 浏览:992
数据库封锁 发布:2025-01-04 12:27:34 浏览:843
应用全编译APP 发布:2025-01-04 12:21:12 浏览:73
对称算法非对称算法 发布:2025-01-04 12:19:18 浏览:522
安卓手机怎么多开分屏 发布:2025-01-04 12:14:02 浏览:685
地震波数据库 发布:2025-01-04 12:12:40 浏览:116
python安装bs4 发布:2025-01-04 12:11:13 浏览:582
信雅达初始密码是多少 发布:2025-01-04 12:02:07 浏览:536
命令行编译vc工程 发布:2025-01-04 12:01:59 浏览:123