我非常感兴趣的是数学和编程,并计划从头开始创建符号数学项目.
这个好项目的想法吗?
从哪儿开始?
如何处理这个项目?
有什么好资源吗?
提前致谢.
这是练习编程技巧的好项目.但是如果你想创建一个其他人想要使用的真实库,这是一个你不想从头开始的项目......
从哪里开始:查看已经存在的解决方案,并考虑您想要做的不同之处.您的项目与其他项目有何不同?
资源:SymPy是一个用于符号数学的Python库
这个好项目的想法是什么?
是; 我希望它能提供无穷无尽的有趣工作源,可以很快地测试和扩展你的编程能力.
2.从哪里开始?
我提出你应该看看现有工作的其他建议.SAGE是非常可观的,如果你问我的意见,我建议你先写一个基本的系统做用数字和符号运算; 再看看SAGE和编写模块来扩展系统,换句话说,成为一个贡献者的东西,而不是试图做这一切你自己更大.另请参阅Mathematica和Maple,Macsyma和Axiom.后两者是免费的(我认为),但它们都在线上有很好的记录,是思想和挑战的重要来源.
如何进行这个项目?
就像人们吃大象一样.一次咬一口.更为严重的是,我觉得有一些核心问题,如表情的表示,和一些基本的功能(算术多项式),你能削减你的牙齿.
4.有什么好的资源吗?
许许多多.google for'computer algebra','term rewriting'.看看亚马逊上的可用内容.并且,如果您有权访问,请查看ACM数字图书馆
祝好运.
符号数学是一个有趣的项目.无论是否有人使用它在您的问题中似乎并不重要,所以请深入了解.
多年来我写过其中两篇.最酷的是SQL for where子句 - 它对SQL进行了一些琐碎的符号操作,以便在一些额外的AND条件下折叠.不是一个完整的"求解器"或"优化器"或任何东西,只是对任何SQL where子句可能的几个符号操作.调试器不太酷; 它做了复杂的数学计算(符号)叠加变量的偏移量.
首先,为数学表达式的元素定义类 - 操作数,运算符,函数等.
您必须决定这些对象必须参与哪些操作.获取表达式的具体值是一个简单明了的方法.从所有变量都具有绑定的情况开始.
然后处理一些变量保持未绑定的情况,并且只能评估表达式的部分内容.
然后处理将表达式重新排列为规范形式.即,你已经做了部分评估并且已经完成了Add( Variable(x), Add( Variable(x), Lit(3) ) )
.您需要编写规则来将其转换为Add( Multiply( Lit(2), Variable(x) ), Lit(3) )
.
一个非常酷的练习是优化括号,以便打印输出具有捕获含义所需的最少括号.
我们在学校里都有许多其他的"表达转换"规则,用于进行代数操作.其中很多.
特别是,在某些情况下,重新排列等式以隔离变量可能非常困难.
进行衍生变换很容易,但是在很多特殊情况下,符号集成确实非常困难.
基础很有趣.根据您想要走多远,它会变得越来越难.