用python写出用递推法计算sinx
时间: 2024-06-11 18:07:35 浏览: 6
这里提供一种用泰勒公式递推计算sinx的方法:
```python
import math
def sin(x):
# 将角度转为弧度
x = math.radians(x)
# 初始化结果和项
result = x
term = x
# 迭代计算
i = 1
while abs(term) >= 1e-10:
term *= - x**2 / ((2 * i) * (2 * i + 1))
result += term
i += 1
return result
print(sin(30)) # 0.5
print(sin(45)) # 0.7071067811865476
```
这里使用了泰勒公式:
$$\sin x = \sum_{n=0}^\infty (-1)^n \frac{x^{2n+1}}{(2n+1)!}$$
其中每一项都可以通过前一项递推得到。这个公式的精度并不高,但对于大部分情况已经足够。如果需要更高的精度,可以考虑使用其他方法,比如龙格-库塔等数值方法。
相关问题
python用递推法计算sin x
以下是Python递推法计算sin x的示例代码:
```python
import math
def sin(x):
x = math.radians(x) #将角度转换为弧度
result = 0
term = x
i = 1
while(abs(term) > 1e-10): #精度控制
result += term
term *= (-1) * x * x / ((2 * i) * (2 * i + 1))
i += 1
return result
print(sin(30)) #输出sin(30°)
```
运行结果为:
```
0.49999999999999994
```
注意:由于计算机的精度限制,最终结果可能略有误差。
计算小明爬楼梯数量递推法用Python
计算小明爬楼梯数量的递推法是一种常见的动态规划算法,可以用Python实现。具体实现方法如下:
```python
def climbStairs(n: int) -> int:
if n == 1:
return 1
if n == 2:
return 2
dp = [0] * (n + 1)
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]
```
其中,n表示楼梯的阶数,函数返回小明爬楼梯的方案数。这个算法的时间复杂度为O(n),空间复杂度为O(n)。