我在Mathematica中生成了几个表达式,我想将它们导出到外部C程序的源代码中."CForm"几乎完成了我想做的事情,除了取幂表示为调用Power().我的表达只涉及小功率所以我更希望C中的表达式使用内联乘法而不是调用Power().
例如CForm[2 hgt^2 k1inv^3 mx0 wid^2 + hgt^2 k1inv^3 wid^3]收益率
2*Power(hgt,2)*Power(k1inv,3)*mx0*Power(wid,2) +
Power(hgt,2)*Power(k1inv,3)*Power(wid,3)
..我想要产生的是:
2*hgt*hgt*k1inv*k1inv*k1inv*mx0*wid*wid +
hgt*hgt*k1inv*k1inv*k1inv*wid*wid*wid
我最初尝试挑选Power[..]表达式的内部部分并将其重新映射到乘法使用x_Symbol^y_Integer /; y > 1 :> Fold[Times, 1, Table[#1, {#2}]]已被mathematica阻止,立即将我精心生成的子表达式转换a*a*a回Power[a,3];-)我知道它只是试图帮助但我不能弄清楚如何让它停下来,在这种情况下......
正如我已经写过这个问题,我已经想到我可以将输出捕获CForm到一个字符串然后执行字符串模式匹配和操作,但这是一个好方法吗?我想我喜欢将它作为Mathematica表达式进行处理,因为我重新映射然后输出..?
我想将网页的输出插入到笔记本中(本质上是文本或html"屏幕截图").不需要它"活",它只是供参考.
理想情况下,它看起来很像在网络浏览器上.我希望它是不可评估的,我不希望前端尝试将其格式化为非常错误的Mathematica表达式
(编辑添加:创建单元格并执行"单元格 - >转换为 - >文本显示"是一种很好的方式来显示文本而不需要前端重新格式化.我想知道这是否是"正确"的方法这样做或者有更好的方法,特别是如果我想要html格式或图形也是如此)