数学研发论坛

 找回密码
 欢迎注册
查看: 987|回复: 1

[讨论] Mathematica函数:怎么把Collect的优点和HornerForm结合在一起。

[复制链接]
发表于 2017-7-21 09:19:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
HornerForm产生的秦九韶式在数值计算上有优势,HornerForm还能处理形如poly1/poly2的有理式。
而Collect函数的优点是能对系数用函数h处理,通常是因式分解和化简;变量表var可以使用下横线匹配,更可以用函数体Log[],Tan[]当变量不仅是单一变量。
怎么令它们的优点结合呢。
抛砖引玉,以下代码不能用函数体当变量,不能处理形如poly1/poly2的有理式。仅能对符号系数用函数h处理。
  1. HornerFormPlus[expr_,var_,h_]:=Collect[expr,var,h]//HornerForm[#,vars]&
复制代码


当然还有更贪心的想法是函数h计算时能并行,我用过MonomialList分成列表List,每项并行计算h后求和再HornerForm。MonomialList的问题是对expr兼容性更低。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2017-7-25 07:57:27 | 显示全部楼层
用递归重写HornerForm实现了期望功能,就是效率慢
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2019-11-20 03:58 , Processed in 0.058373 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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