Tips-sincos
三角関数
sin/cos の近似値を求める
πについては tips-PI_FFT
三角関数系、基本12パターン(要「直角三角形」)
△ABC において
∠ACB が直角/ ∠ABC をθ , ∠BCAをφ , ∠CABをτ 辺AB を r ( 斜辺 )(辺c) 辺BC を x ( 底辺 )(辺a) 辺CA を y ( 高さ )(辺b)
とした時
r = x / cosθ :「r」を「x」と「θ」から求める r = y / sinθ :「r」を「y」と「θ」から求める r = √(x2 + y2) :「r」を「x」と「y」から求める
x = cosθ * r :「x」を「θ」と「r」から求める x = y / tanθ :「x」を「y」と「θ」から求める x = √(r2 - y2) :「x」を「r」と「y」から求める
y = sinθ * r :「y」を「θ」と「r」から求める y = tanθ * x :「y」を「θ」と「x」から求める y = √(r2 - x2) :「y」を「r」と「x」から求める
θ = asin(y / r) :「θ」を「y」と「r」から求める θ = acos(x / r) :「θ」を「x」と「r」から求める θ = atan(y / x) :「θ」を「y」と「x」から求める (tan^-1 とも書く)
正弦定理
(b/sinθ)=(c/sinφ)=(a/sinΤ) 角(∠)と向かい合う辺で。。(直角三角形だと分かりづらい)
def seigen(AA, aa): """ 正弦定理 AA : degree sin(AA) / aa = 1/(2R) sin(A)/a = sin(B)/b = sin(C)/c = 1/(2R) つまり、 sin(A) = a/(2R) ��ABCにおいて、辺a, b, cはそれぞれ角A, B, Cの対辺 BC=a, CA=b, AB=c 外接円の半径R """ rad = sympy.rad(AA) ret = sympy.N ( sympy.sin(rad) / aa ) return ret
余弦定理
a^2=b^2+c^2-2*b*c*cosΤ 2つの辺とそれに挟まれる角の大きさ(cos)で。。
def yogen2(a, b, c): """ 第二余弦定理 cos(C) = (a^2 + b^2 - c^2) / (2ab) """ CC = (a**2 + b**2 - c**2) / (2 * a * b) return CC def yogen2a(a, b, C): """ 第二余弦定理 c^2 = (a^2 + b^2 - (2a*b*cos(C)) """ CC = sympy.rad(C) ret2 = (a**2 + b**2 ) - (2 * a * b * sympy.cos(CC)) ret = sympy.sqrt(ret2) return ret
def yogen1(b, c, B, C): """ 第一余弦定理 ��ABC において a = BC, b = CA, c = AB ∠CBA = A, ∠ABC = B, ∠BCA = C a = b*cos(C) + c*cos(B) b = c*cos(A) + a*cos(C) c = a*cos(B) + b*cos(A) """ ret = b*sympy.cos(C) + c*sympy.cos(B) return ret
加法定理
sin(θ+φ)=sinθ*cosφ+cosθ*cosφ cos(θ+φ)=cosθ*cosφ-sinθ*sinφ ((θーφ)の場合は符号を反転する )
近似値 SIN ( マクローリン展開 ) Tips-maxima
SIN(X) = x -(x^3)/(3!)+(x^5)/(5!)-(x^7)/(7!)+(x^9)/(9!) maxima (%i9) f(x):=sum(((-1)^k)*(x^(2*k+1))/(2*k+1)!,k,0,n),simpsum; 固定値 (%i10) f(x):=sum(((-1)^k)*(x^(2*k+1))/(2*k+1)!,k,0,10),simpsum;
近似値 COS Tips-maxima
COS(X) = 1 -(x^2)/2! +(x^4)/4! -(x^6)/6! +(x^8)/8! maxima (%i12) sum(((-1)^k)*(x^(2*k)/(2*k)!),k,0,n),simpsum; 固定値 (%i13) f(x) := sum(((-1)^k)*(x^(2*k)/(2*k)!),k,0,10),simpsum;
試してみる (%i1) KPI:1019514486099146/324521540032945; ## 20桁 (%i1) KPI:103993/33102; ## 10桁 (%i1) dg:(30 * %pi / 180) ; (%i2) f(x) := sum(((-1)^k)*(x^(2*k)/(2*k)!),k,0,10),simpsum; (%i3) float(f(dg)-cos(dg)) ; (%i4) dg:(60 * %pi / 180) ; (%i5) float(f(dg)-cos(dg)) ; (%o10) 7.988719676478221E-17 (%i1) dg:(30 * KPI / 180) ; (%i2) f(x) := sum(((-1)^k)*(x^(2*k)/(2*k)!),k,0,10),simpsum; (%i3) float(f(dg)-cos(dg)) ; (%i4) dg:(60 * KPI / 180) ; (%i5) float(f(dg)-cos(dg)) ; ( 17桁は多すぎる??)