用于嵌入式系统的连续定积分离散化方法

目录

矩形积分

梯形积分

辛普森积分


矩形积分

1.优点:计算量小;缺点:不够精确

2.公式:

\int_{a}^{b}f(x)dx \approx (f(b)/2)*(b-a)

若在嵌入式应用过程中,则自变量为时间t,则公式可写为:

\int_{a}^{b}f(t)dt \approx f(b)*Ts

式中Ts为嵌入式系统程序执行间隔Ts。

代码实现:

sum +=f(N)*Ts;

梯形积分

1.与矩形积分计算量、精度均无明显差别

2.公式:

\int_{a}^{b}f(x)dx \approx (f(b)+f(a))*(b-a)/2

若自变量为时间t,则公式可写为:\int_{a}^{b}f(t)dt \approx (f(b)+f(a))*Ts/2,Ts为程序采样间隔。

代码:

sum += (f(N)+f(N-1))*Ts/2; f(N)N时刻的采样值,f(N-1)上一时刻的采样值。

辛普森积分

1.优点:更准确;缺点,计算量大,占用CPU资源,适用于对某一性能指标精度要求较高的场合。

2.公式:

\int_{a}^{b}f(x)dx \approx \frac{h}{3}[f(a))+f(b)+4\sum_{i=1}^{n/2}f(x_{2i-1})+2\sum_{i=1}^{n/2-1}f(x_{2i})]

其中h=(b-a)/n,n是子区间数目,且为偶数。

n的具象示意:嵌入式系统程序调用时间间隔为T,积分调用时间间隔为T/2,则n=T/(T/2)=2;

实际举例:当n=2时,

3.程序代码:

// function
double f(double x) {
  return 1/(1+x*x);
}

// Simpson's rule
double simpson(double a, double b, int n) {
  double h = (b-a)/n; // width of each subinterval
  double sum = f(a) + f(b); // first and last terms
  for (int i = 1; i < n; i += 2) {
    sum += 4*f(a+i*h); // odd terms
  }
  for (int i = 2; i < n-1; i += 2) {
    sum += 2*f(a+i*h); // even terms
  }
  return sum*h/3; // final result
}

参考资料:c辛普森积分法 - 知乎 (zhihu.com)

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ayuan0211

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值