我正在做一個專案,涉及四個不同的未知數與平方根、正弦和余弦相結合的方程式。
例如:
sqrt(2) (3/2)*sqrt(3) = a*cos(b) c*cos(d)
-sqrt(2) (3/2) = a*sin(b) c*sin(d
13 = a**2 c**2
5 = a c
可能的答案(通過使用GeoGebra找到):
[[a = 2, b = -45 , c = 3, d = 30 ] 。
[a = 2, b = 47.45, c = 3, d = -27.55] 。
[a = 3, b = 30 , c = 2, d = -45 ],
[a = 3, b = -27.55, c = 2, d = 47.45] ]
NB:變數b和d是以度為單位的角度(不是弧度)
我看到這個帖子,解決四個變數的線性方程,他們用NumPy解決了這個問題,但那是用比較簡單的方程:
a 3b 2c 2d = 1
2a b c 2d = 0。
3a b 2c d =1
2a c 3d =0
這里的代碼是:
import numpy as np
A = np. array([[1,3,2,2] 。 [2,1,1,2] 。 [3,1,2,1] 。 [2,0,1,3] ] ]
B = np.array([1,0,1,0] )
print(np.linalg.solve(A,B))
輸出:
[-0.27272727 -0. 18181818 1.090909 -0.181818]
我試圖使用同樣的方法,但我似乎無法將我的方程式轉換為這個方法可以讀取的方式。
uj5u.com熱心網友回復:
你可以用sympy來象征性地解決這些方程:
from sympy import S, Eq, sqrt, sin, cos, solve
from sympy.abc import a, b, c, d
方程 = [Eq(sqrt(2) (3 / S(2) *sqrt(3), a * cos(b) c * cos(d))。)
Eq(-sqrt(2) (3 / S(2), a * sin(b) c * sin(d))。
Eq(13, a ** 2 c ** 2)。
Eq(5, a c)] 。
sol = solve(equations, [a, b, c, d])
結果:
[(2,
-asin(-3/4 sqrt(2)/2 3*sin(2*atan((-2*sqrt(2) 3 2*sqrt(sqrt(3) 2))/(sqrt(2) sqrt(6) 3*sqrt(3) 6) ))/2) 。
3。
2*atan((-2*sqrt(2) 3 2*sqrt(sqrt(3) 2))/(sqrt(2) sqrt(6) 3*sqrt(3) 6) ))。
(2,
asin(-sqrt(2)/2 3*sin(2*atan((-) 3 2*sqrt(2) 2*sqrt(sqrt(3) 2))/(sqrt(2) sqrt(6) 3 *sqrt(3) 6) ))/2 3/4)。
3,
-2*atan((-3 2*sqrt(2) 2*sqrt(sqrt(3) 2))/(sqrt(2) sqrt(6) 3*sqrt(3) 6) )]
從這里,evalf()可以得到數值解(以弧度為單位):
for sol_i in sol:
print([x.evalf() for x in sol_i] )
[2.00000000000000, -0. 785398163397448, 3.00000000000000, 0.523598775598299]
[2.0000000000, 0.828153484576581, 3.0000000000, -0.480843454419166]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/326867.html
標籤:
下一篇:關于影像的資訊
