搜索
bottom↓
回复: 12

简易数学表达式解析库

[复制链接]

出0入0汤圆

发表于 2024-8-5 06:42:26 | 显示全部楼层 |阅读模式
自己写的一个数学表达式解析库,用于把数学表达式转换成浮点数字(或抛出错误)
一个函数,字符串入,浮点数字出,简单易用

比如传入cos(8+1*ln(9.783-2)/6+1)*sin(cos(9-7*7))+(1.01^100+(-1*900.01^7+sin(9-8*9)))
就会返回  -4.78334e+020

支持:浮点数加减乘除,sin cos tan及其反函数双曲函数;指对幂,绝对值,阶乘,随机浮点数随机整数;无限括号嵌套,弧度/角度制,内置六个待定参数的变量uvwxyz,用于解方程和多元函数,可以使用Ans调用上次的结果

实现不是很难,最传统的用栈和线性表,先化为逆波兰式再求解。代码尽量注释了,可能会有BUG。正确性和精度经过了基本验证,能和GGB 6位有效数字保持一致。

例程有c51和c++的。c51程序的是运行在stc单片机上的。稍加修改16k rom 2k ram的单片机都能跑。c++的没什么好说的,控制台交互。
表达式解析库是expression.x

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

有一句段子是这样说的,身家过亿的只关心自己的身体,身家千万的,在担心传承,勉强糊口度日才天天看国际新闻,关心国家大事。

出0入34汤圆

发表于 2024-8-5 08:13:38 | 显示全部楼层
谢谢分享

出16690入6953汤圆

发表于 2024-8-5 08:33:16 | 显示全部楼层
cool!

出0入42汤圆

发表于 2024-8-5 09:14:13 | 显示全部楼层
感谢大神分享,“字符串入,浮点数字出”,mark

出0入90汤圆

发表于 2024-8-5 09:55:38 | 显示全部楼层
不错不错,这种基础性的东西,好久没看到人做了,赞一个

出0入42汤圆

发表于 2024-8-5 09:56:34 | 显示全部楼层
牛! 谢谢分享!

出0入0汤圆

 楼主| 发表于 2024-8-5 10:07:39 | 显示全部楼层
C++版来咯
其实还是原来的c内容,只不过套了个c++框框方便调试
大家可以直接在电脑上体验了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2024-8-5 10:10:07 | 显示全部楼层
大家用的时候按需求改表达式长度,尽量不要超过128不然可能会爆8位的char

出0入0汤圆

发表于 2024-8-5 10:31:08 | 显示全部楼层
支持,谢谢分享

出0入0汤圆

发表于 2024-8-5 10:45:02 | 显示全部楼层
支持 Thank you

出1350入193汤圆

发表于 2024-8-5 11:15:02 | 显示全部楼层
c51程序运算这样程序 很耗资源
针对性优化; 花了不少时间吧
lz辛苦了  

出0入0汤圆

 楼主| 发表于 2024-8-5 12:41:55 来自手机 | 显示全部楼层
lb0857 发表于 2024-8-5 11:15
c51程序运算这样程序 很耗资源
针对性优化; 花了不少时间吧
lz辛苦了

(引用自11楼)

其实很多地方还有待优化
因为要用它描点画函数,速度大概测过:
1T 51单片机40M时直接调函数计算 sin(x),每秒能算200多次。

但这样同一个表达式n次代值的计算任务还有很大优化空间:就是只转一次逆波兰式,然后n次逆波兰式计算。
而不是原来那样转n次逆波兰式,再n次逆波兰式计算。

出0入0汤圆

 楼主| 发表于 2024-8-11 06:36:42 来自手机 | 显示全部楼层
里面有BUG!
expression.c文件里第138和142行。
有两处,在cosh和tanh的判断里,Str_Ptr+1改为+3!
不然会导致使用cosh 和tanh爆出Error3
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-12-10 20:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表