ala*_*10n 21 c c++ math numerical symbolic-math
我有一些表达,比如x^2+y^2我想用于一些数学计算.我想做的一件事就是采用表达式的偏导数.
所以,如果f(x,y) = x^2 + y^2再偏的f相对于x会2x,部分相对于y会2y.
我使用有限差分方法编写了一个极小的函数,但我遇到了浮点精度的许多问题.例如,我最终得到了1.99234而不是2.有没有支持符号差异化的图书馆?还有其他建议吗?
Nor*_*sey 12
我已经用几种不同的语言实现了这样的库,但不幸的是没有C.如果你只处理多项式(求和,乘积,变量,常数和幂),这很容易.Trig功能也不算太差.任何更复杂的事情,你可能会更好地花时间去掌握别人的图书馆.
如果您决定自己动手,我会提出一些简化您生活的建议:
使用不可变数据结构(纯函数数据结构)来表示表达式.
使用Hans Boehm的垃圾收集器为您管理内存.
为了表示线性和,使用有限映射(例如,二分搜索树)将每个变量映射到其系数.
如果您愿意将Lua嵌入到C代码中并在那里进行计算,我将我的Lua代码放在http://www.cs.tufts.edu/~nr/drop/lua上.其中一个更好的功能是它可以采用符号表达,区分它,并将结果编译成Lua.你当然会找不到任何文件:-(