数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: ysr

请问这个多项式是哪个三角函数的值?

[复制链接]
 楼主| 发表于 2021-3-26 19:49 | 显示全部楼层
Bnul="/1/2/16/272/7936/353792/22368256/1903757312/209865342976/29088885112832"
网上仅仅找到这10个数,不知道哪里还有?不知道够不够用?暂时发一下吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-26 20:27 | 显示全部楼层
本帖最后由 ysr 于 2021-3-26 12:58 编辑

Private Function jszqzh(sa As String, sd As String) As String
Dim s1, s2
Dim a() As String
Bnul = "/1/2/16/272/7936/353792/22368256/1903757312/209865342976/29088885112832"

s3 = 0
s105 = Split(Bnul, "/")
   j1 = UBound(s105)
   For k = 1 To j1
      n1 = n1 + 1
       ReDim Preserve a(1 To n1)
      a(n1) = s105(n1)
    Next
    s1 = Trim(sa)
    s2 = MbC(Trim(s1), Trim(s1))
    Do While s3 < j1
    s3 = s3 + 1
    s2 = zhengchuqy(MCC1(MbC(Trim(a(s3)), Trim(s2)), jcjs(2 * s3 - 1)))
    Loop
    jszqzh = s2
End Function
  
  '这个程序编出来了,可能不对,不知道|B2n|是啥东西?可能无法用了,暂时发一下吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-26 20:33 | 显示全部楼层
2116094096569140970454236374823532967430714976333305790359865980782577860165352453有82位,用时0.1171875秒(能运行结果显然不对,这个是π/4的正切值?显然不对!)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-26 20:36 | 显示全部楼层
所以,tanα的高精度函数值,只能用tanα=sinα/cosα来计算了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-26 21:37 | 显示全部楼层
还可以用迭代法快速计算,发个截图,如何算的?希望老师指点,谢谢!

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-27 11:41 | 显示全部楼层
这个迭代法如何做?不会呀,只能选其他法了,方法还是很多的。只能选前面提到的老祖宗的秦九韶算法了,公式:
sinx=x-x*x^2*(4*5*6*7*8*9-x^2*(6*7*8*9-x^2*(8*9-x^2)))/9!
这个公式的缺点是,要根据经验预估个迭代次数,因为必须从内往外逐层计算的,最内层是第几层是不确定的必须预估(就是迭代次数),看来方法很多,试试这个吧。
而余弦值用到补数公式,同角的正余弦平方和为1的公式,则有:cosx=(1-(sinx)^2)^(1/2).
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-27 12:19 | 显示全部楼层
本帖最后由 ysr 于 2021-3-27 05:37 编辑

   Private Function jszhxian(sa As String, sd As String) As String
Dim s1
s1 = 1 & InStr(Val(sd), "0")
s2 = mbc2(Trim(sa), Trim(sa), Val(sd))
s4 = mbc2(Trim(sa), Trim(s2), Val(sd))
fs1 = -1
s3 = 51
s5 = s3
s11 = s2
Do While s3 >= 5
s6 = zhengchuqy(MCC1(jcjs(Trim(s5)), jcjs(Val(s3 - 2))))
s9 = Val(s3 * (s3 - 1))
s10 = zhengchuqy(MCC1(Trim(s6), Trim(s9)))
s7 = Trim(s6) & InStr(Val(sd), "0")
s10 = Trim(s10) & InStr(Val(sd), "0")
s11 = mbc2(Trim(s11), Trim(s10), Val(sd))
s2 = mpc2(Trim(s7), mbc2(Trim(s2), Trim(s11), Val(sd)))


s3 = s3 - 2

Loop
s8 = zhengchuqy(MCC1(mbc2(Trim(s4), Trim(s2), Val(sd)), jcjs(Trim(s5))))
jszhxian = mpc2(Trim(sa), Trim(s8))
End Function

'这个程序编出来了,修改运行了一下,速度不慢,迭代次数少的话结果不准确,暂时发一下代码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-27 12:47 | 显示全部楼层
本帖最后由 ysr 于 2021-3-27 04:49 编辑

迭代9次的结果:523598667148168440315543879324060175326296636195246817021098642234504867716233624853010127425742455293116783870385427905152396534812776135092222966670有150位,用时0.109375秒。(是30的正弦值)
迭代15次:
523598775598268778135817197922721225919963712592895490289358395515952024868917321504825581207162850044313678040102528455975883480200867533222337106926有150位,用时0.1757813秒.
迭代51次:
523598775598298873077107230546583814032861566562517636829157432051277362768933545354739465884619466639781244341300516977603347986651790875352573144352有150位,用时1.035156秒(慢了,咋仍然不准确?)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-27 12:52 | 显示全部楼层
迭代次数101次,有效数字取50位,仍然不准确?可能是公式错了,查一下资料吧。结果如下:
52359877559829887307710723054658381403286156656251有50位,用时0.5秒.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-27 13:05 | 显示全部楼层
经过查资料,公式修改为如下这样可能就对了:
sinx=x-x*x^2*(4*5*6*7*8*9-6*7*8*9x^2*(6*7*8*9-8*9x^2*(8*9-x^2)))/9!
再改一下程序试试吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2024-3-29 15:27 , Processed in 0.084961 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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