且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

利用Sympy计算sin1°的最小多项式

更新时间:2022-06-22 10:56:01

  首先我们有cos36=5+14,可以利用顶角为36 的等腰三角形求出,它满足方程4x22x1=0.
  利用二倍角公式cos2x=2cos2x1 迭代两次,求出cos9 满足的多项式,可以发现它是一个关于cos29 的多项式,因此我们可以求出sin29 满足的多项式。
  接着,我们利用三倍角公式sin3x=3sinx4sin3x 迭代两次即可求出sin1 满足的多项式,在此基础上因此分解,并代入求值即可得到sin1 的最小多项式。
  上Python代码~~

from sympy import *
import math
init_printing()
x = symbols('x')
t1=4*x**2-2*x-1
t2=t1.subs({x:2*x**2-1})
t3=t2.subs({x:2*x**2-1})
t4=t3.subs({x**2:(1-x**2)})
t5=t4.subs({x:3*x-4*x**3})
t6=t5.subs({x:3*x-4*x**3})
factor(t6)

  t6即为sin1 满足的多项式,因式分解的结果如下:
  利用Sympy计算sin1°的最小多项式
  我们只要依次将sin1 代入以上三个多项式中验证即可。
  利用Sympy计算sin1°的最小多项式
  利用Sympy计算sin1°的最小多项式
  只需验证sin1 满足上述的48次多项式即可。

s=factor(t6)/(256*x**8-512*x**6+304*x**4-48*x**2+1)
r=s/(65536*x**16-262144*x**14+430080*x**12-372736*x**10+182784*x**8-50176*x**6+7040*x**4-384*x**2+1)
r.subs({x:math.sin(math.pi/180)})

运行结果如下:
利用Sympy计算sin1°的最小多项式

  因此,sin1 的最小多项式次数为48.



  如有不足之处,还望批评指正。期待下一次分享~~