[問題] mathematica的認知bug?

看板Mathematica作者 (悟道修行者)時間10年前 (2014/02/23 23:01), 編輯推噓2(2013)
留言15則, 2人參與, 最新討論串1/1
我想透過Exists和Reduce函數,得到f(x)=x^2的對應域 數學上對應域即為range f = {y | 存在x, y=f(x)}, 其中命題函數是P(y):="存在x, y=f(x)" 既然有命題函數,我當然想透過Reduce(or FullSimplify)求解, 就好比 命題函數 "3x^2+2x-1 <0"可以透過Reduce求解一樣 f[x_] := x^2 Reduce[Exists[x, y == f[x]], y] 結果我發現它直接給出true耶?照理說 Exists[x, y == f[x]] 若要問它真假值,是給不出來的(因為y未知) 超怪= = 當然我猜Reduce[Exists[x, y == f[x]], y]的True意思不是邏輯的true, 而是實數集合R。可是f(x)=x^2的對應域一定≧0呀! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.195.220 ※ 編輯: alfadick 來自: 114.44.195.220 (02/23 23:04)

02/23 23:06, , 1F
難道跟複數有關? 可是我記得之前的經驗,感覺都實數,冏
02/23 23:06, 1F

02/23 23:07, , 2F
(感覺Reduce預設要解的都是實數)
02/23 23:07, 2F
另外想請問一下在MATHEMATICA中,-2<x<6這個表達式算集合嗎? 怎樣的表達式算集合? 譬如我想測試 Sqrt[2]是否屬於(-2,6)這個區間,該怎麼做呢? 因為如果是有限元素的集合,我有查到是用List為結構,那很簡單, 可是無線元素-2<x<6的集合呢? 就算下 Reduce[-2<x<6,x],得到的還是-2<x<6 冏.. ※ 編輯: alfadick 來自: 114.44.195.220 (02/23 23:31)

02/23 23:32, , 3F
好像真的是複數...改成Exists[x,Element[x,Reals],y==f[x]]
02/23 23:32, 3F

02/23 23:32, , 4F
就給出 Re[y]>=0&&Im[y]==0 的結果
02/23 23:32, 4F

02/23 23:34, , 5F
你的另外問題似乎可以查一下 Interval 這個東西
02/23 23:34, 5F
謝謝~~ 追問一下:要找一個函數的對應域,或者它在某個定義域區間的image, 在Mathematica正規做法該怎麼做啊? 我用邏輯的想法是得到正確答案了 Reduce[Exists[x, -1 < x < 4, y == x^3 + 2*x + 1], y, Reals] (*找出f在 (-1,4) 的image*) Out= -2 < y < 73 但不知道正規做法是什麼@@ ※ 編輯: alfadick 來自: 114.44.195.220 (02/23 23:36)

02/23 23:35, , 6F
唔, Interval 含端點...
02/23 23:35, 6F

02/23 23:36, , 7F
不過如果是用 Interval 的話那能用 IntervalMemberQ 查詢
02/23 23:36, 7F
找到了 In[11]= f[x_] := x^3 + 2*x + 1 f[Interval[{-1, 4}]]  -----------> 這裡有端點 Out[11]= Interval[{-2, 73}] ※ 編輯: alfadick 來自: 114.44.195.220 (02/23 23:41)

02/23 23:45, , 8F
interval 好像挺直觀的http://ppt.cc/ZT6j
02/23 23:45, 8F
話說PREIMAGE也有點怪: http://mathworld.wolfram.com/Preimage.html Reduce[Exists[y, IntervalMemberQ[Interval[{-2, 73}], y], y == x^3 + 2*x + 1], x] 跑出False @@ ※ 編輯: alfadick 來自: 114.44.195.220 (02/24 00:09)

02/24 00:29, , 9F
這真的是超有意思的coding logic
02/24 00:29, 9F

02/24 00:30, , 10F
也只有mathematica才能這樣大玩特玩量詞邏輯
02/24 00:30, 10F

02/24 01:14, , 11F
是說 Interval 這樣代不一定是正確的區間喔
02/24 01:14, 11F

02/24 01:15, , 12F
例如 f[x_]:=x+x^2 則 f[Interval[{-1,1}]] 會得到
02/24 01:15, 12F

02/24 01:16, , 13F
Interval[{-1,2}] 而不是正確的值域 Interval[{-1/2,2}]
02/24 01:16, 13F
我用Plot看(懶得手算XD), 正確的image應該是-1/4~2

02/24 01:17, , 14F
因為這樣代入時兩個 Interval 物件是獨立考慮的
02/24 01:17, 14F

02/24 01:17, , 15F
(這個例子是 Interval 的說明裡的例子)
02/24 01:17, 15F
啊?你是說f作用在Interval的效果等同於f[List{-1,1}] @@? 那Mathematica設計Interval這個函數幹嘛= = l[x_] := x + x^2 ; l[Interval[{-1, 1}]] 結果是Interval[{-1,2}] ... 好像也不是端點取f得到的,-1不知道是哪裡冒出來的 ※ 編輯: alfadick 來自: 114.44.195.220 (02/24 08:49) Reduce[Exists[y, -2 < y < 73, y == x^3 + 2*x + 1], x, Reals] 這樣成功了。-2<y<73改用 IntervalMemberQ[Interval[{-2,73}],y]不行@@ ※ 編輯: alfadick 來自: 114.44.195.220 (02/24 09:13) 有些很簡單的函數,明明Plot都可以描點了, 但用真值集合(reduce with ForAll, Exists, etc)來算image,就不行 Reduce[Exists[x, -1 < x < 4, y == Sin[x^2] + x^2], y, Reals] (*求f(x)在(-1,4)的image*) Reduce::nsmet: This system cannot be solved with the methods available to Reduce. http://reference.wolfram.com/mathematica/tutorial/RealPolynomialSystems.html ※ 編輯: alfadick 來自: 114.44.195.220 (02/24 14:08)
文章代碼(AID): #1J2WqxTK (Mathematica)
文章代碼(AID): #1J2WqxTK (Mathematica)