找回密码
 欢迎注册
查看: 33449|回复: 9

[求助] 指定角度求符合运算规则的三角函数有理近似

[复制链接]
发表于 2014-5-4 07:51:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
指定了某角度 如  30°
求三角函数的有理近似,Sin、Cos、Tan。要符合Sin2+Cos2=1……的运算规则。
其实就是求对应那组勾股数


级数跟连分数展开好象不能保证三角函数相互关系

补充内容 (2016-1-10 19:18):
假如推广到N维呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-4 12:06:23 | 显示全部楼层
很简单,对于cos(x)和sin(x),先给出tan(x/2)的连分数逼近然后用tan(x/2)表示sin(x)和cos(x)即可

点评

漂亮!!!  发表于 2014-5-4 12:56

评分

参与人数 2威望 +6 金币 +6 贡献 +6 经验 +6 鲜花 +6 收起 理由
zeroieme + 3 + 3 + 3 + 3 + 3 赞一个!
wayne + 3 + 3 + 3 + 3 + 3 很给力!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-4 12:58:22 | 显示全部楼层
mathe的方法很棒!
所有的三角函数值都是tan(t/2)的有理表达。所以 你只需算出tan(t/2)的值来,然后用近似分数替代tan(t/2)回代到sin,cos的表达式 即可。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-4 13:01:43 | 显示全部楼层
简单写了个代码,计算30度的正弦,余弦值对应的近似分数表达:
  1. n=20;Table[{2t,1-t^2}/(1+t^2),{t,Convergents[Tan[15Degree],n]}]
复制代码

结果:
  1. {0,1}
  2. {3/5,4/5}
  3. {8/17,15/17}
  4. {33/65,56/65}
  5. {120/241,209/241}
  6. {451/901,780/901}
  7. {1680/3361,2911/3361}
  8. {6273/12545,10864/12545}
  9. {23408/46817,40545/46817}
  10. {87363/174725,151316/174725}
  11. {326040/652081,564719/652081}
  12. {1216801/2433601,2107560/2433601}
  13. {4541160/9082321,7865521/9082321}
  14. {16947843/33895685,29354524/33895685}
  15. {63250208/126500417,109552575/126500417}
  16. {236052993/472105985,408855776/472105985}
  17. {880961760/1761923521,1525870529/1761923521}
  18. {3287794051/6575588101,5694626340/6575588101}
  19. {12270214440/24540428881,21252634831/24540428881}
  20. {45793063713/91586127425,79315912984/91586127425}
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-4 19:23:01 | 显示全部楼层
我给一个符号表示:

1.   \(\sin(x)=\frac{x^4-60x^2+144}{x^4+12x^2+144}\)
      
     \(\cos(x)=\frac{ -12(x^2-12)x}{x^4+12x^2+144}\)


2.  \(\sin(x)=\frac{24(x^2-10)x(x^2-60)}{x^6+24x^4+720x^2+14400}\)
     
     \(\cos(x)=\frac{-(x^6-264x^4+6480x^2-14400)}{x^6+24x^4+720x^2+14400}\)


3.   \(\sin(x)=\frac{x^8-760x^6+69360x^4-1310400x^2+2822400}{x^8+40x^6+2160x^4+100800x^2+2822400}\)
     
      \(\cos(x)=\frac{-40(x^4-180x^2+1680)x(x^2-42)}{x^8+40x^6+2160x^4+100800x^2+2822400}\)


4.  \(\sin(x)=\frac{60(x^4-112x^2+1008)x(x^4-420x^2+15120)}{x^10+60x^8+5040x^6+403200x^4+25401600x^2+914457600}\)
   
     \( \cos(x)=\frac{-(x^{10}-1740x^8+408240x^6-25804800x^4+431827200x^2-914457600)}{x^{10}+60x^8+5040x^6+403200x^4+25401600x^2+914457600}\)


5.  \(\sin(x)=\frac{(x^{12}-3444x^{10}+1703520x^8-257886720x^6+13539052800x^4-211239705600x^2+442597478400)}{x^12+84x^{10}+10080x^8+1209600x^6+127008000x^4+10059033600x^2+442597478400}\)

      \(\cos(x)=\frac{-(84(x^6-840x^4+75600x^2-665280))x(x^4-240x^2+7920)}{x^{12}+84x^{10}+10080x^8+1209600x^6+127008000x^4+10059033600x^2+442597478400}\)



毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-4 20:02:53 | 显示全部楼层
@数学星空
你这个符号表达怎么弄出来的。

=====
其实,连分数展开最终都可以用递推公式表达的。
对于本题,就是$\sqrt{3}$的表达,对应的递推公式是 $a_{n+4} = 4*a_{n+2} - a_n$,初始数是${0,1,1,3}$,
比如:
  1. 0,1,1,3,4,11,15,41,56,153,209,571,780,2131,2911,7953,10864,29681,40545,11077, ....
复制代码

  $\tan 15^\circ \approx  a_{n}/a_{n+2} \approx 1/3\approx 1/4\approx 3/11\approx 4/15\approx 11/41\approx 15/56\approx 41/153\approx 56/209\approx 153/571\approx 209/780$

  1. n=10;
  2. a=LinearRecurrence[{0,4,0,-1},{0,1,1,3},n+2];
  3. Table[{(2a[[i+2]]a[[i]])/(a[[i+2]]^2+a[[i]]^2),(a[[i+2]]^2-a[[i]]^2)/(a[[i+2]]^2+a[[i]]^2)},{i,n}]
复制代码

该代码得到的答案跟4楼完全一致

点评

噢,very nice  发表于 2014-5-4 20:13
直接使用pade逼近,代入sin(x)=2t/(1+t^2),cos(x)=(1-t^2)/(1+t^2),t=tan(x/2)为pade逼近表达式。  发表于 2014-5-4 20:11
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2016-1-10 19:22:46 | 显示全部楼层
假如推广到N维呢?
把{$x_1$,$x_2$……$x_n$}的单位向量:{Cos α1,Cos α2,……,Cos α2}有理化。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-24 14:36 , Processed in 0.031577 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表