作者jeffchen106 (超哥)
看板MATLAB
標題[討論] 用解acos方程式出現錯誤的解...
時間Thu Feb 16 11:38:19 2012
各位板友大家好:
小弟最近在使用解方程式solve,在給定已知角度,以及X軸座標,
欲算出Y軸的座標點。
由於我在方程式裡面需使用到已知變數,因此我有使用eval指令。
以下是我的方程式:
a向量=(896,y-401) b向量=(0,5)
arccos{(a‧b)/(|a|*|b|)}=91度
此方程式欲解出y值,在Matlab我使用了以下程式做運算:
syms y;
k2=91*pi/180;
o=401;
TTT=eval(eval(['solve(''acos((y-' num2str(o) ')*5/(sqrt(896^2+(y-'
num2str(o) ')^2)*5))=k2' ''',y)']));
解出來TTT有兩個解,分別是416.6397,另一個是385.3603。
但是我代入驗算時,發現416.6397得到的角度是89度,而另一個解385.3603得到
的才是正確的91度,是為什麼呢?我k2都已經令好是91度*pi/180了阿。
謝謝各位板友!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.126.41.238
※ 編輯: jeffchen106 來自: 120.126.41.238 (02/16 11:47)
1F:推 sunev:為什麼要eval,為什麼要eval兩次? orz 02/16 11:53
2F:→ jeffchen106:eval是因為內部有已知變數,也可以去掉改成正常模式 02/16 19:53
3F:推 sanzosaskura:我猜是因為y^2 matlab再做處理的時候當成二次方程式 02/17 01:32
4F:→ sanzosaskura:在解,所以會有兩個解。 實際上y-401必須<0 才會有91 02/17 01:32
5F:→ sanzosaskura:度出現 所以另一個是無效解 02/17 01:32
6F:→ sanzosaskura:把89跟91代入式子 移項後會發現剛好等於+-sin(1度) 02/17 01:34
7F:→ jeffchen106:謝謝sanzosaskura,這個板果然高手如雲 02/17 10:50