Re: [問題] 解方程式 如何只保留實數的解已回收
※ 引述《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
04/01 16:33, 1F
推
04/01 22:05, , 2F
04/01 22:05, 2F
→
04/01 22:06, , 3F
04/01 22:06, 3F
推
04/03 21:07, , 4F
04/03 21:07, 4F
討論串 (同標題文章)