Re: [問題] 解方程式 如何只保留實數的解已回收

看板MATLAB作者 (明日幸福今日修)時間13年前 (2011/04/01 13:14), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《nanokevin (明日幸福今日修)》之銘言: : 大家好 : 小弟在解一個方程式 : 他有三個根 有實有虛 如何只取實數的根呢 : syms P A B K T x; : solve('((3-x)/(x))*(((A-2*x)/(1-A+2*x))^2)=(P^0.5)*K', x) : 其中 只有x是未知 : 其他都是已知 : 目前的做法是 : solve('((3-x)/(x))*(((A-2*x)/(1-A+2*x))^2)=(P^0.5)*K', x) : 會跑出三種解(用 P A B K T等表示) 其中有兩個解的表示式裡面有i : 所以我就只取第一種 : 不過當給訂的 P A B K T有變化時 還是會有虛數解出現 : 請問有沒有辦法限制只取出實數且 3>x>0的解呢 : 另外 : 當方程式變成 : syms P A B K T x; : solve('((3-x)/(x))*(((A-2*x)/(1-A+2*x))^2)*exp(B*x/T)=(P^0.5)*K', x) : 執行顯示 : ans = : [ empty sym ] : 應該是無解的意思吧 : 即使我B給0 理論上就跟第一個方程是一樣 : 他還是不能解 : 想請問這類的方程該怎麼處理呢 : 非常感謝 感謝板友的回應 我土法煉鋼找到了兩種方法 1.因為我初始值給實數 所以虛數沒出現 不過這個方法如果遇到有兩個實根可能就不行了 syms x; fzero('(x^3-3*x^2+x-3)', 1) 2.這個方法一開始宣告x是實數 所以跑出了實數解 這應該是比較好的方法 x = sym('x', 'real') Solve('x^3-3*x^2+x-3',x) 所以目前的問題是 syms p; x = sym('x', 'real') p=3; Solve('x^3-3*x^2+x-p',x) 還是沒辦法跑 有辦法先讓Solve先認得p是多少的方式嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 131.215.51.203

04/01 16:33, , 1F
subs('x^3-3*x^2+x-p',p,數字)
04/01 16:33, 1F

04/01 22:05, , 2F
也不是遇到兩實根不行,跟try的初值有關,他只會收斂到其一
04/01 22:05, 2F

04/01 22:06, , 3F
其實也不難,圖畫出來就知道要從哪裡try比較快了
04/01 22:06, 3F

04/03 21:07, , 4F
圖都畫出來了,還用解嗎? XD
04/03 21:07, 4F
文章代碼(AID): #1DbLz3K5 (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1DbLz3K5 (MATLAB)