如何用MATLAB求解方程 17.7*sin(A)*cos(A)+87*sin^2(A)-9.65*cos(A)-47*sin(A)=0
? 我想要A的值滿足上面的等式。我嘗試使用解決命令,但它不斷給錯誤。Matlab編程解決方案
0
A
回答
4
當然它的溶液中,它具有溶液的無限數量,例如,你可以看到用圖形是A在-4pi到4PI間隔越過零分多次:
A=linspace(-4*pi,4*pi,1000);
plot(A,17.7.*sin(A).*cos(A)+87.*sin(A).^2-9.65*cos(A)-47*sin(A))
尋找解決方案的另一種方法是使用fzero
點附近x0
[email protected](A) 17.7.*sin(A).*cos(A)+87.*sin(A).^2-9.65*cos(A)-47*sin(A);
x0=0;
sol = fzero(f,x0)
sol =
-0.2020
有關的發現多根間隔見this discussion。
1
即使您需要數字解決方案,有時Symbolic Toolbox也很有用。該函數在-pi
和pi
(或任何2*pi
區間)之間是週期性的。您可以使用solve
找到所有四個根在此區間:
syms A;
s = solve(17.7*sin(A)*cos(A)+87*sin(A)^2-9.65*cos(A)-47*sin(A)==0,A,'IgnoreAnalyticConstraints',true)
>> s =
-0.20201862493051844310946374889219
0.57212820231996826457022742739841
2.5736433165658736546275270008849
2.9380144125412806473039849317812
當solve
無法找到的解析解它returns a numeric one。在這種情況下,必須通過'IgnoreAnalyticConstraints'
選項打開「簡化規則」,強制solve
返回所有解決方案。我不確定爲什麼這是因爲這個選項通常會做相反的事情。
使用函數double
將符號值從solve
轉換爲浮點數:s = double(s);
。然後,您可以將N*2*pi
(其中N
是一個整數)添加到這四個值中,以獲得任何其他時間間隔中函數的根。
相關問題
- 1. 解決方案使用MATLAB
- 2. 遞歸解決方案的動態編程解決方案
- 3. MATLAB簡單的MLE解決方案
- 4. Matlab中的double sqrt解決方案?
- 5. matlab內存最終解決方案
- 6. Matlab需要的解決方案
- 7. 檢查存在的解決方案Matlab
- 8. Matlab解決方案的兩個圖
- 9. 爲eigs做matlab緩存解決方案
- 10. 作爲矩陣的方程的Matlab解決方案
- 11. 在MATLAB中繪製二階方程的解決方案
- 12. 解決方案JSP程序
- 13. 多線程解決方案
- 14. 使用Matlab創建程序解決方案
- 15. VS 2010解決方案取決於另一個解決方案
- 16. IDL方程的解決方案
- 17. 寫生解決方案曲線方程
- 18. MSBuild解決方案
- 19. Mathematica解決方案?
- 20. Qt:QStackedWidget解決方案
- 21. codechef解決方案
- 22. 解決方案2011
- 23. 與解決方案
- 24. Python解決方案
- 25. google.appengine.runtime.DeadlineExceededError解決方案?
- 26. squarepie解決方案
- 27. Puppet | XML編輯解決方案
- 28. MonoDevelop命令行編譯解決方案
- 29. TFS 2012編譯VS 2010解決方案
- 30. 單向編碼解決方案
請發表您厭倦了'solve'的代碼,以及它給你的具體錯誤 – Shai