【发布时间】:2012-11-10 02:29:31
【问题描述】:
我愿意计算一个不完全明确的函数的 Frechet/Gateaux 导数,我的问题是:最有效的方法是什么?您会推荐我使用哪种语言?
确切地说,我的问题是我有一个函数,比如说 F,它是多维函数对(即从 R^n 到 R^k)的乘积之和的欧几里得范数的平方。
AFAIK,如果我使用 Maple 或 Maxima,他们会要求我明确公式中涉及的函数,而我希望保持抽象。然后,我需要计算 Frechet/Gateaux 导数,以保持表达式简单。确实,当我按照标准方式进行时,我开始将欧几里得范数的平方发展为平方和,并且有很多索引。我的目标是做一个三阶整数余数的泰勒展开式,在我看来,这个表达式在人类看来是不可行的(公式超过一页 A4 纸)。
所以我更喜欢使用 Frechet/Gateaux 导数,这样我可以保留标量积而不是总和。
由于所涉及的函数与其导数有一些相似之处(由于存在指数),因此只需了解少量规则。所以我想我可能会自己做一个这样的专用计算机代数系统。
我开始学习 LISP,因为我读到它对我的问题很有效,但我现在有点迷茫,因为这种语言非常不同,我仍然习惯于用 C/Python 来思考/Perl...
这是另一个问题:您是否有一些关于如何制作符号计算代数系统的课程或文章的链接(最好是在 LISP 中)?欢迎提出任何建议。
非常感谢您的回答。
【问题讨论】:
-
太棒了!它似乎回答了我的大部分问题!我在这里找到了全文Structure and Interpretation of Computer Programs。虽然它处理的是 Scheme 而不是 Lisp,但原则似乎描述得很好。
-
Peter Norvig 的“人工智能编程范式”http://www.norvig.com/paip.html 也有关于符号计算的章节。那本书使用的是 Common Lisp。
-
我设法拿到了这本书!看起来不错 !感谢您提供这些出色的参考资料!
-
您是否偶然使用“抽象”和“显式”来代替通常的“符号”与“数字”?
-
Lisp 编程类似于 C 和汇编语言。您可以将所有值(变量、数组元素、cons 单元格“car”和“cdr”插槽……)视为机器字。这些机器字通常要么直接保存一个值(如一个小整数),要么保存一个指向动态分配对象的指针。机器字使用几个位来指示类型(动态对象使用更多位来更详细地指示它)。这些值是按值传递的,就像在 C 中一样。与 C 不同,内存是 GC'd 并且本地(“词法”)变量在其块终止后仍然存在。
标签: lisp algebra maple derivative maxima