数学研发论坛

 找回密码
 欢迎注册
查看: 722|回复: 17

[求助] mathematica如何把结果中的->替换成=

[复制链接]
发表于 2018-12-22 12:05:13 | 显示全部楼层 |阅读模式

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

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

x
比如
Solve[x^2 == 4, {x}]
返回结果
{{x -> -2}, {x -> 2}}
但是我要的结果是
{{x = -2}, {x = 2}}

->这个有点反人类,
我想要等号比较符合常人思维,
应该如何实现呢
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-12-22 14:23:16 | 显示全部楼层
Solve[x^2 == 4, {x}] /. Rule -> Equal
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-12-22 16:12:41 | 显示全部楼层
kastin 发表于 2018-12-22 14:23
Solve[x^2 == 4, {x}] /. Rule -> Equal

不错!
不过我希望得到的是一个等号,而这个是两个,有没有办法呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-12-22 16:18:29 | 显示全部楼层
kastin 发表于 2018-12-22 14:23
Solve[x^2 == 4, {x}] /. Rule -> Equal

我自己找到一个办法,
就是选中文字,
然后按菜单里的编辑,然后选择查找(或者直接CTRL+F),
然后把"->"替换成"=",
这个办法简单粗暴,我喜欢.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-12-22 16:21:21 | 显示全部楼层
kastin 发表于 2018-12-22 14:23
Solve[x^2 == 4, {x}] /. Rule -> Equal

主要是我要把一部分结果打印出来,所以->符号不好,
所以我需要=符号
不过你让我学到一招
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-12-22 17:01:23 | 显示全部楼层
在Mathematica里,=号是Set函数。不属于延迟执行的表达式。需要Hold 一下
  1. Solve[x^2 == 4, x] /. Rule -> (HoldForm[Set[#1, #2]] &)
复制代码

点评

赞,Composite竟然可以如此简洁  发表于 2018-12-24 13:48
或者Rule -> HoldForm@*Set  发表于 2018-12-24 11:44
给你点个赞!  发表于 2018-12-23 10:29
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-12-22 17:02:29 | 显示全部楼层
mathematica 发表于 2018-12-22 16:12
不错!
不过我希望得到的是一个等号,而这个是两个,有没有办法呢?

两种办法:
1. Solve[x^2==4,{x}]/.Rule[x_,y_]:>ToString[x,TraditionalForm]<>" = "<>TextString@y

2. Solve[x^2 == 4, {x}] /.
Rule[x_, y_] -> ExpressionCell[Defer@Set[x, y], "Traditional"]

点评

给你点个赞!  发表于 2018-12-23 10:29
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-12-23 17:21:23 | 显示全部楼层
Mathematica解方程的结果用“->”,给出的是一种替换规则,为什么呢?有什么好处呢?
因为数学计算和推导中经常要将解出的结果代入到其它表达式中,以替换规则给出的结果就很方便代入。

比如Solve[x^2 == 4, {x}]
返回结果
{{x -> -2}, {x -> 2}}
如果你想得到方程的解集,直接用x/.%, 立马得到{-2,2}.
或者,你想得到f(x)=x^3+4x^2+3x+1的值,那么输入f(x)/.%, 立即得到{3,31}.

你还觉得这样反人类么?

点评

楼主只是将Mathematica当成傻瓜式计算器而已,自己不会用就只会埋怨而不会去学,更别谈去真正理解这个复杂工具背后的精妙之处了。  发表于 2018-12-24 11:53
老大说出了大家的心里话。关于为何用->其实官方早就给出了解释,那时候我才佩服他们。只想说,Mathematica的语言哲学是相当考究的,不是“拍脑袋”定出来的。  发表于 2018-12-24 11:48
老大是菩萨,对任何人都不放弃,@282842712474  发表于 2018-12-24 10:04
逛论坛这么久,你还没发现跟楼主讲道理是没用的啊...  发表于 2018-12-23 22:12
是楼主反,^_^  发表于 2018-12-23 18:17
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-12-24 12:29:07 | 显示全部楼层
hujunhua 发表于 2018-12-23 17:21
Mathematica解方程的结果用“->”,给出的是一种替换规则,为什么呢?有什么好处呢?
因为数学计算和推导 ...

给你点一万个赞!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2019-11-14 10:00 , Processed in 0.059657 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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