Stats

Popular Posts

Followers

(-1)^(1/3), Bug?

戴忠淵 於 2009年11月20日星期五 上午1:34 發表


在Mathematica求解(-1)^(1/3)時,你可能會以為抓到蟲了!你想,怎麼可能~~一個已經到7.0的軟體怎麼會出這種包。








這其中應該是有什麼誤會~用Solve驗證看看







你會發現Mathematica並沒有出包,只是他把x^3=-1的所有的根中輸出其中一個而已!這一點在Power的說明中就有提到。還記得以前學過例美佛定理時也會提到的複數方根吧!



所以-1在這邊只是其中一個根,而Mathematica所得到的是複數平面單位圓上角度為 60 度的點。

如果說你不想要Mathematica這麼做的話,有以下兩種方法:

f(x)=(x-3)^(6/5)
Plot[(x - 3)^(6/5), {x, -5, 5}]



科科,真的有問題~

1. 土法煉鋼,自己定義函數
f[x_] := (x - 3)^(6/5) /; x >= 3;
f[x_] := (3 - x)^(6/5) /; x <3;
Plot[(x - 3)^(6/5), {x, -5, 5}, PlotStyle -> Thickness[0.01]]




2. 解除函數Power的封印
Unprotect[Power];
Power[x_?Negative, Rational[p_, q_?OddQ]] := (-(-x)^(1/q))^p;
Protect[Power];
Plot[(x - 3)^(6/5), {x, -5, 5}, PlotStyle -> Thickness[0.01]]


Mathematica教學 mathematica 6教學 mathematica基本教學 mathematica mathematica下載 spss教學講義下載spss教學網站 spss教學pdf spss教學網 spss教學講義下載 spss教學網站 spss教學下載 spss教學講義 spss教學pdf roc curve spss教學 manova spss教學 spss教學手冊 spss 16教學 automator mac 教學 automator 浮水 box cox spss cwtex linux cwtex ptt cwtex texlive cwtex-linux excel matrix excel 分配圖 excel 畫常態分配圖 excel常態分配 excel常態分配圖 excel畫常態分佈圖 excel畫常態分配圖 google latex 註解 graphicspath latex 路徑 import mathematica integral exp x 2 latex latex 文字和圖片重疊 latex 浮水印 透明度 watermark latex 圖例 latex 圖片文字重疊 latex教學 mac automator mac latex 新增 package mac pdf 浮水印 mac 水印 mac合併pdf mathematica mathematica 8 圖 字 mathematica abs mathematica pso mathematica 字型 mathematica 教學 pdf mathematica 講義 mathematica教學 mathematica講義 norminv vba p-value excel scientific workplace lyx spss string substr spss 幾何平均數 spss 遺漏值 spss教學講義下載 丁吉峰 可愛手寫字體 可愛字體 可愛的字體 如何畫常態分配圖 利用mac automator幫pdf加入浮水印 怎麼合併pdf for mac automator 怎麼畫星星 浮水印 cwtex 留言板 常態分配圖 常態分配圖如何畫 敏感性分析 公式 統計學講義 最小生成樹 華康可愛字體 戴忠淵 Tags: ,

讀者回應 ( 28 意見 )

我是在知識+問Mathematica的學生,這是你的部落格嗎?我以後可以直接在這問嗎?

歡迎討論~~

我是路過的人,請問什麼是"知識+",這個網站寫什麼,好像都看不懂~~真的是給鬼看的!難怪沒人會點廣告。

N[%]是什麼意思?
Unprotect[Power];
Power[x_?Negative, Rational[p_, q_?OddQ]] := (-(-x)^(1/q))^p;
Protect[Power];
Plot[(x - 3)^(6/5), {x, -5, 5}, PlotStyle -> Thickness[0.01]]
語法不了解
如何利用data visualization同時畫多條線在同一張圖上,並將當初輸入的點標示出來?

由於我是自己上網學的,所以有許多不清楚的地方,以後有可能會常來請教,多包涵
從其他留言中我大膽猜測你應該是某大學的教授?
我的教授所使用的Mathematica好像沒有那麼高階

N[%]是什麼意思?
N是將運算式以數值的方式表示

Unprotect[Power];
Power[x_?Negative, Rational[p_, q_?OddQ]] := (-(-x)^(1/q))^p;
Protect[Power];
Plot[(x - 3)^(6/5), {x, -5, 5}, PlotStyle -> Thickness[0.01]]
這個是Mathematica定義函數的方式,只是講Power重新定義而已

如何利用data visualization同時畫多條線在同一張圖上,並將當初輸入的點標示出來?
將多條函數話在同一張圖的方式很多,還是實際舉個例子比較好解釋

第一條(將所有點標出來,並以曲線將所有點連在一起):(10,2.0184),(15,2.0161),(20,2.0136),(30,2.0091),(40,2.0067),(50,2.0055),(60,2.0062),(70,2.0095),(80,2.0125),(85,2.0162),(90,2.0197)
第二條(將所有點標出來,並以曲線將所有點連在一起):(10,2.0352),(15,2.0306),(20,2.0117),(30,1.9957),(40,1.9945),(50,1.9944),(60,1.9759),(70,1.9431),(80,1.9632),(85,1.9704),(90,2.0400)
以上為當時實驗數據,以上述方式圖像化

這個用ListLinePlot[{資料一,資料二]]就可以了~

data1={{10,2.0184},{15,2.0161},{20,2.0136},{30,2.0091},{40,2.0067},{50,2.0055},{60,2.0062},{70,2.0095},{80,2.0125},{85,2.0162},{90,2.0197}}

data2={{10,2.0352},{15,2.0306},{20,2.0117},{30,1.9957},{40,1.9945},{50,1.9944},{60,1.9759},{70,1.9431},{80,1.9632},{85,1.9704},{90,2.0400}}

LineStylesFromTooltips[plot_Graphics]:=Cases[plot,Tooltip[{s__,l_Line},tt_]:>
Grid[{{Graphics[Flatten[{s,Thickness[0.15],Line[{{0,0},{1,0}}]}],
ImageSize->{24,8},AspectRatio->8/24,ImagePadding->0],tt}}],Infinity];
LineLegendFromTooltips[plot_Graphics]:=Labeled[plot,
Style[Column[LineStylesFromTooltips[plot],Left],"TR",
ShowStringCharacters->False],{{Right,Top}}];

LineLegendFromTooltips[ListLinePlot[{Tooltip[data1,"data1"],Tooltip[data2,"data2"]},PlotStyle->Thickness[0.01]]]

如果覺得不夠好,可以試試這個

LineLegendFromTooltips[ListLinePlot[{Tooltip[data1,"data1"],Tooltip[data2,"data2"]}, PlotStyle->Thickness[0.01],Epilog->{PointSize[0.025],Hue[0.67,0.6,0.6],Point[data1],
Hue[0.9060679774997897,0.6,0.6],Point[data2]}]]

Tooltip的用法?
mathematica的內建範例還是看不出是用來做什麼的
Epilog是將點描出來嗎?
Hue的做用看不懂
LineLegendFromTooltips根本找不到

Tooltip的用法?
你把滑鼠只在線條上,他就會顯示函數的名稱。在多條圖形的時候方便辨識

Epilog是將點描出來嗎?
Epilog的功能很多,不只劃點,也可以加線條,算是一種輔助的功能

Hue的做用看不懂
控制色彩,不然你就用三原色RBGColor也是ok

LineLegendFromTooltips根本找不到
這我自己寫的函數當然找不到

直接用data1,data2再加上方法二會出現奇怪的小圖,一定要先用方法一再用方法二才會變成正常的圖?
我用Integrate[x^0.5/(x^0.5 - 1), x]的指令得到x - 1. x Hypergeometric2F1[2., 1., 3., x^0.5],看不懂
我用Solve[Log[(2x+1)(x+2)]==2Log[x+2]]解不出來,是要重新定義函數嗎?
我用Integrate[E^(2*x^0.5)/x^0.5, x]得出1. 2.71828^(2. x^0.5)???

直接用data1,data2再加上方法二會出現奇怪的小圖,一定要先用方法一再用方法二才會變成正常的圖?
你說的這個應該是特別作的圖例吧

我用Integrate[x^0.5/(x^0.5 - 1), x]的指令得到x - 1. x Hypergeometric2F1[2., 1., 3., x^0.5],看不懂
?Hypergeometric2F1

我用Solve[Log[(2x+1)(x+2)]==2Log[x+2]]解不出來,是要重新定義函數嗎?
你要指定求解的變數,否則沒人知道要對哪個變數求解,搞不好x是常數~~

我用Integrate[E^(2*x^0.5)/x^0.5, x]得出1. 2.71828^(2. x^0.5)???
1.271828不就是exp^1嗎?在Mathematica上建議多用分數或正規表示式,試試Integrate[E^(2*Sqrt[x])/Sqrt[x], x]

有數學輸入的工具列,為什麼還要打0.5次方。還是回去用Fortran好啦~

各有各的好處,一個方便又可做符號運算,一個計算有效率!

我指的是先用data1,data2再用LineLegendFromTooltips[ListLinePlot[{Tooltip[data1,"data1"],Tooltip[data2,"data2"]}, PlotStyle->Thickness[0.01],Epilog->{PointSize[0.025],Hue[0.67,0.6,0.6],Point[data1],
Hue[0.9060679774997897,0.6,0.6],Point[data2]}]]
(方法二)會變成奇怪的小圖,若先用LineStylesFromTooltips[plot_Graphics]:=Cases[plot,Tooltip[{s__,l_Line},tt_]:>
Grid[{{Graphics[Flatten[{s,Thickness[0.15],Line[{{0,0},{1,0}}]}],
ImageSize->{24,8},AspectRatio->8/24,ImagePadding->0],tt}}],Infinity];
LineLegendFromTooltips[plot_Graphics]:=Labeled[plot,
Style[Column[LineStylesFromTooltips[plot],Left],"TR",
ShowStringCharacters->False],{{Right,Top}}];

LineLegendFromTooltips[ListLinePlot[{Tooltip[data1,"data1"],Tooltip[data2,"data2"]},PlotStyle->Thickness[0.01]]](方法一)再用方法二就會變成正常的大圖?
我用Integrate[Sqrt[x]/(Sqrt[x] - 1), x]結果是正確的,但是我用Integrate[x^0.5/(x^0.5 - 1), x]就會得出x - 1. x Hypergeometric2F1[2., 1., 3., x^0.5],x^0.5不是等於Sqrt[x](square root)?以後碰到奇怪的次方怎麼辦?

補問幾個問題,順便再問一次上面的問題
我輸入Integrate[Sqrt[x]*Sin[x], x],得出-根號[x] Cos[x] + 根號[[Pi]/2] FresnelC[根號[2/[Pi]] 根號[x]],什麼是FresnelC?
我輸入Integrate[E^(-x^2), x],得出1/2 根號[[Pi]] Erf[x],什麼是Erf[x]?

?FresnelC
?Erf

?函數名稱 這種方式比我解釋清楚太多了~~

現在Mathematica最新版是7.0.1嗎?
還是有更新的

這個我就不清楚了~科科
不過大多數的函數用法應該都相同才是!

Solve[{8.99*10^9*a*b/0.5^2 == 0.108,
8.99*10^9*((a + b)/2)^2/0.5^2 == 0.036}, {a, b}]
{{a -> -1.00056*10^-6 - 1.415*10^-6 I,
b -> -1.00056*10^-6 + 1.415*10^-6 I}, {a -> -1.00056*10^-6 +
1.415*10^-6 I,
b -> -1.00056*10^-6 - 1.415*10^-6 I}, {a ->
1.00056*10^-6 - 1.415*10^-6 I,
b -> 1.00056*10^-6 + 1.415*10^-6 I}, {a ->
1.00056*10^-6 + 1.415*10^-6 I, b -> 1.00056*10^-6 - 1.415*10^-6 I}}
解出的答案很奇怪,居然有i
答案應該是3*10^(-6)和(-1)*10(-6),我哪裡寫錯了?
順便問一下,你會哪些數學或科學相關的軟體,以後我就不用慢慢找其他會的人來解答,直接線上問你就好了

原來是我方程式寫錯了
順便問一下,你會哪些數學或科學相關的軟體,以後我就不用慢慢找其他會的人來解答,直接線上問你就好了

data = {{0,0},{0.2,15},{0.39,36},{0.59,50},{0.79,60}, {0.99,66},{1.19,70},{1.39,74},{1.59,76},{1.79,77},{1.99,77},{2.19,78},{2.39,78},{2.59,79},{2.79,79},{2.99,79},{3.2,80},{2.99,80},{2.79,80},{2.59,79},{2.39,79},{2.19,79},{1.99,78},{1.79,76},{1.59, 75},{1.39,74},{1.19,73},{0.99,71},{0.79,67},{0.59,61},{0.39,51},{0.19,35},{0,19},{-0.19,-26},{-0.39,-39},{-0.59,-52},{-0.79,-59},{-0.99,-65},{-1.19,-69},{-1.39,-71},{-1.59,-73},{-1.79,-74},{-1.99, -75}, {-2.19, -76}, {-2.39, -77}, {-2.59, -79} {-2.79,-80},{-2.99,-80},{-3.2,-80},{-2.99,-80},{-2.79,-80},{-2.59,-79},{-2.39,-79},{-2.19,-79},{-1.99,-78},{-1.79,-76},{-1.59,-74},{-1.39,-73},{-1.19,-71},{-0.99,-68},{-0.79,-64},{-0.59,-56},{-0.39,-46},{-0.19,-29},{0,-12},{0.19,34},{0.39,45},{0.59,55},{0.79,61},{0.99,66},{1.19,69},{1.39,71},{1.59,73},{1.79,75},{1.99,76},{2.19,77},{2.39,78},{2.59,79},{2.79,79},{2.99,79}}
Show[ListPlot[data], ListLinePlot[data]]
畫出來有兩根尾巴,該如何處理?

data = {{0, 0}, {0.19, 36}, {0.39, 45}, {0.59, 53}, {0.79, 58}, {0.99,
62}, {1.19, 66}, {1.39, 69}, {1.59, 72}, {1.79, 74}, {1.99,
75}, {2.19, 76}, {2.39, 77}, {2.59, 78}, {2.79, 79}, {2.99,
79}, {3.2, 80}, {2.99, 80}, {2.79, 79}, {2.59, 79}, {2.39,
78}, {2.19, 78}, {1.99, 77}, {1.79, 76}, {1.59, 75}, {1.39,
74}, {1.19, 73}, {0.99, 70}, {0.79, 66}, {0.59, 62}, {0.39,
55}, {0.18, 45}, {0, 34}, {-0.19,
16}, {-0.39, -5}, {-0.59, -24}, {-0.79, -40}, {-0.99, -53}, \
{-1.19, -59}, {-1.39, -65}, {-1.59, -69}, {-1.79, -72}, {-1.99, -74}, \
{-2.19, -75}, {-2.39, -76}, {-2.59, -77} {-2.79, -78}, {-2.99, -79}, \
{-3.2, -80}, {-2.99, -80}, {-2.79, -79}, {-2.59, -79}, {-2.39, -78}, \
{-2.19, -77}, {-1.99, -76}, {-1.79, -75}, {-1.59, -74}, {-1.39, -73}, \
{-1.19, -72}, {-0.99, -69}, {-0.79, -65}, {-0.59, -56}, {-0.39, -49}, \
{-0.19, -38}, {0, -22}, {0.19, -4}, {0.39, 7}, {0.59, 34}, {0.79,
49}, {0.99, 60}, {1.19, 63}, {1.39, 66}, {1.59, 69}, {1.79,
72}, {1.99, 74}, {2.19, 76}, {2.39, 76}, {2.59, 77}, {2.79,
77}, {2.99, 77}}
Show[ListPlot[data], ListLinePlot[data]]
畫出來也有兩根尾巴,該如何處理?
Show[ListPlot[data], Plot[Interpolation[data][x], {x, -3.2,3.2}]]畫不出平滑曲線,該如何處理?

SortBy[data,Last]
你會發現你有比資料好像打錯了!
{-2.59, -77} {-2.79, -78} 這兩比資料中間忘了打上逗號。打上去在執行Show[ListPlot[data], ListLinePlot[data]]就OK了!

上面的資料我用Show[ListPlot[data], Plot[Interpolation[data][x], {x,-3.2,3.2}]]作圖卻畫不出來,他說2.99的點好像有問題?
如何處理?

http://zh.wikipedia.org/zh-tw/%E6%8F%92%E5%80%BC

定義

給定n個離散數據點(稱為節點) (xk,yk),k = 1,2,...,n。對於 x, (x\neq x_k, k=1,2,...n),求 x 所對應的 y 的值稱為內插。

f(x)為定義在區間[a,b]上的函數。x1,x2,x3...xn為[a,b]上n個互不相同的點,G為給定的某意函數類。

看一下定義,x1,x2,x3...xn為[a,b]上n個互不相同的點,很明顯你的資料已經不適用囉。所以Mathematica沒辦法幫你跑出來。

所以我沒辦法將數據化為高次曲線方程式?還是有其他的解決方法?
因為磁滯曲線(實驗內容)的圖不符合函數的定義,所以才會有對應到不同點的狀況

不知道非線性最小平方法能不能幫到你!

data={{0,0},{0.19,36},{0.39,45},{0.59,53},{0.79,58},{0.99,62},{1.19,66},{1.39,69},{1.59,72},{1.79,74},{1.99,75},{2.19,76},{2.39,77},{2.59,78},{2.79,79},{2.99,
79},{3.2,80},{2.99,80},{2.79,79},{2.59,79},{2.39,78},{2.19,78},{1.99,77},{1.79,76},{1.59,75},{1.39,74},{1.19,73},{0.99,70},{0.79,66},{0.59,62},{0.39,
55},{0.18,45},{0,34},{-0.19,16},{-0.39,-5},{-0.59,-24},{-0.79,-40},{-0.99,-53},{-1.19,-59},{-1.39,-65},{-1.59,-69},{-1.79,-72},{-1.99,-74},{-2.19,-75},{-2.39,-76},{-2.59,-77},{-2.79,-78},{-2.99,-79},{-3.2,-80},{-2.99,-80},{-2.79,-79},{-2.59,-79},{-2.39,-78},{-2.19,-77},{-1.99,-76},{-1.79,-75},{-1.59,-74},{-1.39,-73},{-1.19,-72},{-0.99,-69},{-0.79,-65},{-0.59,-56},{-0.39,-49},{-0.19,-38},{0,-22},{0.19,-4},{0.39,7},{0.59,34},{0.79,49},{0.99,60},{1.19,63},{1.39,66},{1.59,69},{1.79,72},{1.99,74},{2.19,76},{2.39,76},{2.59,77},{2.79,77},{2.99,77}};

f[m_]:=NonlinearModelFit[data,Array[a,m+1].Table[x^i,{i,0,m}],Array[a,m+1],x][x]/.a_[i_]:>ToExpression[ToString[a]<>ToString[i]]

Manipulate[ff=f[i];Plot[ff,{x,-3,3},PlotStyle->{Blue,Thickness[0.015]},PlotRange->{{-3,3},{-100,100}},Epilog->{Red,PointSize[0.015],Point[data]}],{i,Range[10]}]

發佈留言

Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.

如果這篇文章對你有幫助,那請留個訊息給我~