[問題] 用solve算出的解有問題?已回收

看板MATLAB作者 (東刀輪一流)時間16年前 (2009/09/01 11:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
版上的各位前輩好: 小弟現在遇到一個很奇怪的問題,就是用solve算出來的解帶回原方程式竟不成立!? 小弟原先的數學問題是:"平面上用兩點求出一直線的方程式",一個很簡單的題目 小弟的程式碼如下:(已知兩點(x0,y0),(x1,y1)) syms a b x y; f = x+a*y+b; x0 = 523.4; y0 = 378; x1 = 529.3; y1 = 155.7; f1 = subs(f,{x,y},{x0,y0}); f2 = subs(f,{x,y},{x1,y1}); answer = solve(f1,f2); a_ans = answer.a; b_ans = answer.b; line = subs(f,{a,b},{a_ans,b_ans}); %如此便求出此直線的方程式 =========================================== 但是這邊問題就來了 如果我把(x0,y0) or (x1,y1)代入 line 內,得到的答案竟不等於 0 !! >>subs(line,{x,y},{x0,y0}) ans = 3.9307e-014 可是如果我把算出的 a 和 b 代入 f1 和 f2 的話卻是等於 0 >> subs(f1,{a,b},{a_ans,b_ans}) ans = 0 也就是說對於假設的方程式 f = x+a*y+b 如果先代入(x0,y0),再代入(a_ans,b_ans)的話,答案等於 0 >> subs(f,{x,y},{x0,y0}) ans = 2617/5+378*a+b >> subs(ans,{a,b},{a_ans,b_ans}) ans = 0 可是如果順序相反的話,答案卻不等於0 >>subs(f,{a,b},{a_ans,b_ans}) ans = x+59/2223*y-658789/1235 >> subs(ans,{x,y},{x0,y0}) ans = 3.9307e-014 這是為什麼呢?請版上的各位高手幫忙解惑一下,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.47.241
文章代碼(AID): #1Ad9XzXN (MATLAB)
文章代碼(AID): #1Ad9XzXN (MATLAB)