- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!! 三角関数
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Τ)
角(∠)と向かい合う辺で。。(直角三角形だと分かりづらい)
*https://www.nli-research.co.jp/report/detail/id=67383?pno=1&site=nli
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)で。。
*https://www.nli-research.co.jp/report/detail/id=67383?pno=1&site=nli
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桁は多すぎる??)
https://nc-program.s-projects.net/math6.html