看板 MATLAB 關於我們 聯絡資訊
各位板友大家好: 小弟最近在使用解方程式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)
sunev:為什麼要eval,為什麼要eval兩次? orz 02/16 11:53
jeffchen106:eval是因為內部有已知變數,也可以去掉改成正常模式 02/16 19:53
sanzosaskura:我猜是因為y^2 matlab再做處理的時候當成二次方程式 02/17 01:32
sanzosaskura:在解,所以會有兩個解。 實際上y-401必須<0 才會有91 02/17 01:32
sanzosaskura:度出現 所以另一個是無效解 02/17 01:32
sanzosaskura:把89跟91代入式子 移項後會發現剛好等於+-sin(1度) 02/17 01:34
jeffchen106:謝謝sanzosaskura,這個板果然高手如雲 02/17 10:50