找回密码
 欢迎注册
楼主: wayne

[灌水] M8 娱乐贴

[复制链接]
 楼主| 发表于 2010-12-4 08:00:35 | 显示全部楼层
16# G-Spider 用fsolve的时候,simplify好像是多余的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-12-4 08:04:16 | 显示全部楼层
本帖最后由 wayne 于 2010-12-4 08:30 编辑 10# chyanog 对于
  1. Eliminate[{x + y == \[Gamma], Cos[\[Alpha]] == Cos[\[Theta]] Cos[x],
  2. Cos[\[Beta]] == Cos[\[Theta]] Cos[y]}, {x, y}]
复制代码
你换成Solve函数试试 ,Solve函数可以给出你想要的解,即M8所说的 generic solutions 。 Reduce是分情况讨论,给出所有各种可能条件下的解,所以速度较慢,形式也较杂乱. ======================================== 关于那个正切展开,我有一很弱的方法:
  1. FullSimplify[Tan[2 ArcTan[x]] // TrigExpand]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-12-4 16:53:13 | 显示全部楼层
22# wayne 能试的我基本都试过了,其实这个方程是由一道立体几何题导出的,目标是消去x,y,得到θ,(α、β、γ都是常量),这是Maple得到的结果,跟手算的一致, 关于其他三角函数的展开,我只是奇怪Wolfram为什么至今不提供那样的“正统”展开,其实你的办法我以前试过了,顺便再提供一种不太好的,
  1. Solve[Eliminate[{TrigExpand@Tan[3 t], Tan[t]} == {y, x}, t,
  2. InverseFunctions -> True], y]
复制代码
另外,不知道你注意没有,FunctionExpand的某些功能从5.2版以后有所削弱,比如:FunctionExpand[Sin[1 Degree]]现在的版本算不了了,通过另类方法也能。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-12-5 09:38:50 | 显示全部楼层
本帖最后由 wayne 于 2010-12-5 10:08 编辑 23# chyanog , 前面的我献丑了。 我试试,看能不能解答吧,
关于其他三角函数的展开,我只是奇怪Wolfram为什么至今不提供那样的“正统”展开,其实你的办法我以前试过了
这方面本身就没有标准可言,不同的软件出现了不一致是可以理解的吧,也许maple歧视反三角函数,mathematica 兼容并蓄,也许是mathematica偷懒。。。谁知道呢,呵呵。
FunctionExpand的某些功能从5.2版以后有所削弱
这个函数说实在的,我没怎么用,感觉你应该是mathematica老用户了 。 我查了一下FunctionExpand,发现这个函数有点generic,以至于我们虽然用它了,却还不是很清楚它在背后具体作的哪种类型的数学操作。 ===== 你的目的是想把三角函数转换成根式的形式。即TrigToRadicals , 5.2里面是有这个函数的,按道理我们应该这么写,
  1. Sin[Pi/180] // Developer`TrigToRadicals
复制代码
在8里面,代码是一样的,需加载Developer包,即Needs["Developer`"]。 然而, ◼ TrigToRadicals is automatically used inside FullSimplify and FunctionExpand. ,所以我们才能用FunctionExpand实现这个功能。 那FunctionExpand准确的说是干啥的?
tries to expand out special and certain other functions in expr, when possible reducing compound arguments to simpler ones.
意思是说,将某种不是很显然的,比较特殊的函数值转化成我们所习惯的表达方式,甚至还执行化简操作,即FullSimplify的功能。 如今FunctionExpand缩小了它所调用的TrigToRadicals 的处理范围(即表现为"功能削弱"了),还在 版本7里面加了新功能,即可以处理 DifferenceRoot 和 DifferentialRoot 对象。 这个我们很好理解吧? 这跟写作文一样,中心点要突出,呵呵。。。。。 =================================== 我个人认为,mathematica真正的变化是内部的变化,符号计算符号计算,计算的对象是符号! 在版本7里面,mathematica明确的使用了一个统一的符号对象,叫Root 。这个我很看好。比如,在这里,
  1. Sin[Pi/180] // RootReduce
复制代码
发现结果是一多项式方程的根,即Sin[1 Degree]是代数数,我们还知道这个是可以用根式表达出来的,尽管很繁杂,于是,我们对这个Root对象这么操作:
  1. Sin[Pi/180] // RootReduce // ToRadicals
复制代码
这个估计就是你想要的答案了。 ================= 这是我看好mathematica的一个重要原因。 =============================================
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-12-5 10:23:38 | 显示全部楼层
其实如果再深入分析的话,我不仅要问,什么是根式表达式? 我们可能很难回答。如果你不歧视负数的幂的话,这个答案会很简洁的:
  1. Sin[Pi/180] // ToRadicals
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-12-5 14:05:29 | 显示全部楼层
本帖最后由 chyanog 于 2010-12-5 14:38 编辑 24# wayne 谢谢wayne耐心细致的解释。也许我算不上是Mathematica的老用户吧(我现在大二),接触mathematica还不到一年,不过也差不多了,我今天特地查看了一下我下载的第一个Mathematica的创建日期是2009-12-14,是5.0版的,在此之前我已经开始用Maple一个月左右了,感觉Maple的java界面慢,尽管它的右键操作方便,而且数值计算速度不太满意,于是在网上搜索,(周围没人可问,在我们那样的专科院校也许没有第二个人用类似软件的)找到了只有Mathematica够资格是其对手,于是便下载了,给我的第一印象就是简洁,启动速度快,然后就是数值计算速度快,比如计算100万的阶乘等(当然现在知道郭大侠的HugeCalc更快),符号方面难以评说,算是各有千秋吧,我更喜欢mathematica的函数式语言和风格,所以我后来用Mathematica的时候较多。 你说的那个“Developer”包,我还真没在意,
FunctionExpand[Sin[1 Degree]]现在的版本算不了了,通过另类方法也能
,Sin[Pi/180] // RootReduce // ToRadicals 我用的展开跟你一样,O(∩_∩)O~,。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-12-5 14:26:00 | 显示全部楼层
本帖最后由 chyanog 于 2010-12-5 14:36 编辑 那个三角方程的Mathematica解法,直接解的话我不知道得多长时间,反正我的机子几分钟没有结果。变通的方法我找到了2、3种,先贴出一个:
  1. eq = {
  2. Sin[a] Sin[b] Sin[c] + Cos[a] Cos[b] Cos[c] == 0,
  3. Sin[a] Cos[b] Cos[c] - Cos[a] Sin[b] Sin[c] == 1/Sqrt[3],
  4. Cos[a] Cos[b] Sin[c] - Sin[a] Sin[b] Cos[c] == 1/Sqrt[3],
  5. Cos[a] Sin[b] Cos[c] + Sin[a] Cos[b] Sin[c] == 1/Sqrt[3]
  6. };
  7. SetOptions[{Solve, Eliminate}, InverseFunctions -> True];
  8. bc = Eliminate[eq, a];
  9. (*b不容易消去*)
  10. ab = Eliminate[eq, c];
  11. solABC = Solve[ab && bc, {a, b, c}];
  12. (*可能有增根*)
  13. pos = Position[Union /@ (eq /. solABC // FullSimplify), {True}];
  14. (*检验*)
  15. Extract[solABC, pos]
复制代码
不过7.0比8.0稍快,大致都是2-3s。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-12-5 14:44:57 | 显示全部楼层
27# chyanog 我在20楼已经说过。 M8里德Solve有了较大改进,代码:
  1. Solve[{Cos[a] Cos[b] Cos[c] + Sin[a] Sin[b] Sin[c] == 0, Cos[a] Sin[b] Cos[c] + Sin[a] Cos[b] Sin[c] == 1/Sqrt[3],Cos[a] Cos[b] Sin[c] - Sin[a] Sin[b] Cos[c] == 1/Sqrt[3]}, {a, b, c}]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-12-5 14:53:00 | 显示全部楼层
26# chyanog 佩服!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-12-5 15:10:34 | 显示全部楼层
http://blog.wolfram.com/2010/11/ ... ally-going-to-work/ 在这个博客里,wolfram说,他已经开始着手 让mathematica进行自然语言编程了。 就是输入的是 自然语言(文字或者声音),而不是有着严格语法要求的程序语言。 这,。。。。这基本上就已经到了 人跟计算机对话的地步了。 期待。。。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-10-9 18:10 , Processed in 0.024670 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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