在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]]
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]]
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]]
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]]
讀者回應 ( 28 意見 )
訂閱發佈留言 (Atom)
我是在知識+問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.
如果這篇文章對你有幫助,那請留個訊息給我~