pythoncrazy 2019-10-26 15:36 采纳率: 100%
浏览 1726
已采纳

如何在python中用泰勒公式计算arcsin(x)?

小白在线求助,真的不会做了
python3.7.4

用maclaulin公式计算arcsin(x)
:x+x^3/(2*3)+1*3*x^5/(2*4*5)+...+(2n)!*x^(2n+1) / [2^(2n)*(n!)^2*(2n+1)]。

用户输入x,利用该式,计算反正弦函数的值。当最后一项小于delta时停止计算,输出结果。其中,^表示乘幂,x^y是x的y次方,n!表示n的阶乘。输入:delta x
输出:arcsin(x)

下面是我自己写的一点点,请大神指点下哪里有错误或者提供更好的方法,万分感谢!

print('本程序计算arcsin(x)的值.')
x=float(input('请输入x:'))
delta=float(input('请输入delta:'))
n=0
s=0
p1=1 #n!
p2=1 #(2n)!
A=[]
while(s>=delta):
           while n==0:
                      s=x
                      A.append(s)
                      n=n+1
           for k in range(1,n+1):
                      p1=p1*k
           for t in range(1,2*n+1):
                      p2=p2*t
           s=p2*x**(2*n+1)/(4**n*p1**2*(2*n+1))
           A.append(s)
           n=n+1
print(A)
sums=0
for i in range(0,n-1):
           sums=sums+A[i]
print('arcsinx的近似值为',sums)



  • 写回答

1条回答 默认 最新

  • 二心TOT 2019-10-30 17:04
    关注
    print('本程序计算arcsin(x)的值.')
    x=float(input('请输入x:'))
    delta=float(input('请输入delta:'))
    n =0
    arcsinx = 0
    
    def factorial(m):    #阶乘
        if m == 0:
            return 1
        else:
            result = 1
            for i in range(2,m+1):
                result = result*i
            return result
    
    while(factorial(2*n)*x**(2*n+1)/(4**n*factorial(n)*factorial(n)*(2*n+1))>=delta):
        arcsinx += factorial(2*n)*x**(2*n+1)/(4**n*factorial(n)*factorial(n)*(2*n+1))
        n=n+1
    
    print('arcsinx的近似值为:',arcsinx)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵