当前位置: 代码迷 >> 单片机 >> 急微积分用C语言如何表达编程,多谢了
  详细解决方案

急微积分用C语言如何表达编程,多谢了

热度:64   发布时间:2016-04-28 15:42:21.0
急急急,微积分用C语言怎么表达编程,谢谢了

急急急,微积分用C语言怎么表达编程,谢谢了, 例如: a=dx/dt
------最佳解决方案--------------------
引用:
引用:高等数学里的微积分是连续的。CPU这种时序电路按拍运行属于离散系统。你的dt在计算机里不可能趋于无穷小,而是有个最小值。这个取决于你的算法执行周期。

微分可以用减法或除法,积分用加法。

C语言表达一下a=dv/dt可以吗?a代表加速度;v代表速度;t是时间。
谢谢 了Alex_rcpilot


比如定义几个组全局变量 
volatile double V_previous, V_Current;
volatile double dV;
volatile double iV;

V_previous代表前一次V的值。
V_current代表这一次V的值。
dV是微分
iV是积分

如果有必要,可以自行加上时间戳和存储缓冲区用来统计数据。

需要一个函数对上述变量初始化
void Var_Init(void)
{
  V_previous = V_Current = dV = iV = 0;
}

假设下面这个函数严格地每隔时间t执行一次,而且这个t就是符合你分辨率要求的单位时间dt。比如t=1ms,则程序开始运行时是t0,一直执行到时刻t(n-1),tn。
void Scheduled_Task(void)
{
  V_previous = V_Current;    // 将t(n-1)次的旧数据存在previous变量中
  V_Current = **********; // 获取最新一次的数据,取决于你的数据源
  dV = V_Current - V_previous; // 减法做微分
  iV += V_Current;  // 加法做积分
}
------其他解决方案--------------------
高等数学里的微积分是连续的。CPU这种时序电路按拍运行属于离散系统。你的dt在计算机里不可能趋于无穷小,而是有个最小值。这个取决于你的算法执行周期。

微分可以用减法或除法,积分用加法。
------其他解决方案--------------------
基于PID的水温控制系统
http://download.csdn.net/detail/lingyun3429/2279932
我调试过的,你可以参考一下。
------其他解决方案--------------------
呃,按要求的精确度做吧
------其他解决方案--------------------
引用:
高等数学里的微积分是连续的。CPU这种时序电路按拍运行属于离散系统。你的dt在计算机里不可能趋于无穷小,而是有个最小值。这个取决于你的算法执行周期。

微分可以用减法或除法,积分用加法。


C语言表达一下a=dv/dt可以吗?a代表加速度;v代表速度;t是时间。
谢谢 了Alex_rcpilot
------其他解决方案--------------------
引用:
引用:高等数学里的微积分是连续的。CPU这种时序电路按拍运行属于离散系统。你的dt在计算机里不可能趋于无穷小,而是有个最小值。这个取决于你的算法执行周期。

微分可以用减法或除法,积分用加法。

C语言表达一下a=dv/dt可以吗?a代表加速度;v代表速度;t是时间。
谢谢 了Alex_rcpilot


有了dV和dt的值,a是用一个常数乘以dV。常数是多少取决于a和V的量纲,以及dt的具体值。这种中学知识就不用赘述了吧。
------其他解决方案--------------------
看看计算方法和数值计算。
------其他解决方案--------------------
真不好表达,需针对具体的函数。
------其他解决方案--------------------
以前真的没有想到这点,做小车时,没有想到这样去测速度!谢谢分享,学习了!
------其他解决方案--------------------
C 语言算法手册基本囊括你想要的算法,去看看
------其他解决方案--------------------
谢谢大家,看来想要弄明白,要学的东西还真不少啊。。
  相关解决方案