1
A
回答
3
更新:下面給出的解決方案是現在可通過使用具有根或解決這樣的方程時roots_cubic關鍵字trig=True
。
這種形式是不是與我所知道的任何關鍵字給出的,但它並不難寫一個程序來做到這一點:
>>> def cutrig(a,b,c,d):
... a,b,c,d = [S(i) for i in (a,b,c,d)]
... # x = t - b/3/a
... p = (3*a*c-b**2)/3/a**2
... q = (2*b**3-9*a*b*c+27*a**2*d)/(27*a**3)
... D = 18*a*b*c*d-4*b**3*d+b**2*c**2-4*a*c**3-27*a**2*d**2
... assert D > 0
... rv = []
... for k in range(3):
... rv.append(2*sqrt(-p/3)*cos(acos(3*q/2/p*sqrt(-3/p))/3-k*2*pi/3))
... return list(sorted([i - b/3/a for i in rv]))
...
>>> print filldedent(cutrig(-1,2,3,-2))
[-2*sqrt(13)*cos(-acos(8*sqrt(13)/169)/3 + pi/3)/3 + 2/3,
-2*sqrt(13)*sin(-acos(8*sqrt(13)/169)/3 + pi/6)/3 + 2/3, 2/3 +
2*sqrt(13)*cos(acos(8*sqrt(13)/169)/3)/3]
>>>
相比默認的解決方案:
>>> print filldedent(solve(-x**3+2*x**2+3*x-2))
[2/3 + (-1/2 - sqrt(3)*I/2)*(8/27 + sqrt(237)*I/9)**(1/3) +
13/(9*(-1/2 - sqrt(3)*I/2)*(8/27 + sqrt(237)*I/9)**(1/3)), 2/3 +
13/(9*(-1/2 + sqrt(3)*I/2)*(8/27 + sqrt(237)*I/9)**(1/3)) + (-1/2 +
sqrt(3)*I/2)*(8/27 + sqrt(237)*I/9)**(1/3), 2/3 + 13/(9*(8/27 +
sqrt(237)*I/9)**(1/3)) + (8/27 + sqrt(237)*I/9)**(1/3)]
每個值是相同的:
>>> sorted([w.n(2,chop=True) for w in solve(-x**3+2*x**2+3*x-2)])
[-1.3, 0.53, 2.8]
>>> sorted([w.n(2,chop=True) for w in cutrig(-1,2,3,-2)])
[-1.3, 0.53, 2.8]
相關問題
- 1. C++:解決三次方程
- 2. 解決三次方程
- 3. 尋找第三方SerialPort解決方案
- 4. 三和算法解決方案
- 5. 優化解決方案三薩姆
- 6. MVVMCross Vee三個解決方案
- 7. 網站應用程序的第三方存儲解決方案?
- 8. 求解所有解的三角方程
- 9. 需要一個解決方案來處理SVN三角洲
- 10. Newton-Raphson方法求解三次方程
- 11. 三角方程Mathematica
- 12. 放置Math.toRadians的解決二次和三次方程
- 13. Magento與第三方CRM,POS和ERP解決方案的集成
- 14. IIS 6中的HTTP壓縮 - 與第三方解決方案
- 15. 跟蹤第三方網站上像素的解決方案?
- 16. 重新包裝第三方軟件的安裝解決方案
- 17. 使用matlab解三角方程
- 18. Peoplesoft校園解決方案爲第三方開發商提供
- 19. Django 1.2對象級權限 - 第三方解決方案?
- 20. 在Visual Studio解決方案中更新第三方組件dll
- 21. 第三方頭文件衝突 - 需要解決方案
- 22. 3d三角函數方程
- 23. 類層次解決方案
- 24. ServiceFabric解決方案中的服務參考上的黃色三角形
- 25. 三角形的方向(三角形指向的地方)
- 26. 多遞歸Pascal三角算法的時間複雜性解決方案?
- 27. 比較三胞胎C#hackerrank改進我的解決方案
- 28. 這個三元條件有更好的解決方案嗎?
- 29. 遞歸解決方案的動態編程解決方案
- 30. Dynamics CRM中2011:託管解決方案或從DEV到珠三角
是否可以使用簡化和求解的組合來精確計算真正的根三次方程?基本上覆雜的部分應該抵消自己。 – denfromufa
請參閱「https://en.wikipedia.org/wiki/Cubic_function」:當三次方程有三個實根時,以自由基形式表達這些根的公式涉及複數。事實證明,如果三個真正的根都不是合理的,那麼不能根據真正的自由基來表達根。儘管如此,可以使用超幾何函數[29]獲得純粹真實的解的表達式,或者根據三角函數,特別是在餘弦函數和反餘弦函數方面獲得純粹的實數表達式。 – smichr