本帖最后由 地主家的好儿子 于 2023-4-21 15:29 编辑
准备分几个章节讲解在高级语言上实现代数表达式的功能,matlab中的符号系统运算让我感到很神秘,CAS,最近研究了一个很基本的CAS系统-Swan,它不太完善,但是可以一窥CAS的内核,符号系统是如何运行的,中间涉及到哪些内容 一、展开表达式的情况 1)不带有未知数的表达式 举个例子吧 (3+9)/2*5*pi 2)带有未知数的表达式存储
数学表达式通常由常数、符号、变量名组成 x*y+(2*x-1)*z 其中变量有3个,常量有2个,因为xyz三个都是未知数,所以表达式的值也是未知的, 3)表达式的展开 举个例子吧 (x-1)*(x+1) 初中数学,按逐项相乘 x*x +x*(-1) +x*(1) -1*(1) - --运行结果如下
- x = sym('x') --定义一个成为x的变量
- y = (x-1)*(x+1) --定义一个表达式y
- print(tostring(y))
- (x + -1*1)*(x + 1)
- print(y:expand()) --将表达式展开
- -1*1 + -1*x + x*1 + x*x
复制代码
代码在lua 5.1 环境下测试,在fxlua中环境中也测试通过
|