微分代数是什么?(学习中)

微分代数(Differential Algebra)简单来说是一种利用计算机代数近似实际函数的手段,也就是说函数是以代数变量加减乘除的形式在计算机中保存的,而不是实际数值。因此,它可以作为主流符号运算软件的底层表达方式。

它的核心方法是把函数进行Taylor展开,然后用 n n n次多项式的系数表达出来,这其中会用到函数的微分,可能这是它称为“微分”代数的原因。
在实际运算的时候,用这个“多项式近似”的结果来代替原来的函数关系,就可以有很多方便。典型例子比如,我们手头有一个函数 f ( x ) = sinh ⁡ ( arctan ⁡ ( x ) ) f(x) = \sinh(\arctan(x)) f(x)=sinh(arctan(x)),但因为种种原因我们没办法得到这个表达式,于是我可以用微分代数进行representation。在 Mathematica \textit{Mathematica} Mathematica中运行
f[x] = Sinh[ArcTan[x]]; g[x] = Series[f[x], {x, 0, 10}]
就得到了以下这个10阶近似:
f ( x ) ≈ x − x 3 6 + x 5 24 − x 7 1008 − 1163 x 9 72576 + O ( x 11 ) f(x)\approx {x}-\frac{ {x}^3}{6}+\frac{ {x}^5}{24}-\frac{ {x}^7}{1008}-\frac{1163 {x}^9}{72576}+O\left({x}^{11}\right) f(x)x6x3+24x51008x7725761163x9+O(x11)

在计算机中保存的是这几个系数,所以再次调用就很轻松可以得到函数结果。实际应用DA时,所面临的很多函数计算量肯定是远大于我这个例子,此时DA的意义就出现了。比如下面这个隐函数 E ( a , e , t ) E(a,e,t) E(a,e,t)代表的是Kepler方程的解,即满足以下等式:
E − e sin ⁡ E − μ a 3 ( t − t 0 ) = 0 E-e \sin E-\sqrt{\frac{\mu}{a^{3}}}\left(t-t_{0}\right)=0 EesinEa3μ (tt0)=0

而它又是个隐函数,因此
不过,很明显的是,DA仍然只能提供一种近似,而不是原函数的代替。

DA的功能还有很多,尤其是对复杂数学系统的近似,如隐函数 f ( x ) = 0 f(x)=0 f(x)=0、微分 f ′ ( x ) f^\prime(x) f(x)、积分 ∫ f ( x ) d x \int f(x) \text d x f(x)dx、ODE的解 x ( t ) x(t) x(t)的近似和representation。

感兴趣的朋友可以git一个Github - Differential Algebra Computational Toolbox ,这个工具箱的作者是米兰理工大学,他们在将其应用到航天中做了很多工作。

猜你喜欢

转载自blog.csdn.net/NICAI001/article/details/119459789