实验内容 计算等式的值2 编程计算S=1!+2!+3!+4!+…+10!的值。 相关知识 答案
时间: 2023-12-07 11:38:55 浏览: 133
--回答--
1. 实验内容:根据提供的函数compare_1D_2D计算出相应的结果。
```python
def compare_1D_2D(x0, P, R, Q, vel, u):
"""
x0: 初始位置
P: 传感器精度
R: 过程噪声协方差
Q: 测量噪声协方差
vel: 目标速度
u: 控制输入
"""
import numpy as np
from scipy.linalg import inv
dt = 1.0/60 # 时间步长
A = np.array([[1, dt], [0, 1]]) # 状态转移矩阵
B = np.array([0, dt]).reshape(2,1) # 控制输入矩阵
H = np.array([1, 0]).reshape(1,2) # 观测矩阵
Q = Q*np.array([(dt**3)/3, (dt**2)/2, dt, 1]).reshape(4,1) # 测量噪声协方差矩阵
R = np.array([R]) # 过程噪声协方差矩阵
x = np.array([x0, vel]).reshape(2,1) # 初始状态
P = np.diag([P, P]) # 初始协方差矩阵
# Kalman滤波
for i in range(100):
x = np.dot(A, x) + np.dot(B, u)
P = np.dot(np.dot(A, P), A.T) + R
K = np.dot(np.dot(P, H.T), inv(np.dot(np.dot(H, P), H.T) + Q))
x = x + np.dot(K, (np.array([i]) - np.dot(H, x)))
P = np.dot((np.eye(2) - np.dot(K, H)), P)
return x[0][0]
# 调用函数
result = compare_1D_2D(x0=0, P=50., R=5., Q=.02, vel=1., u=1.)
print(result)
```
2. 计算等式的值:
```python
import math
# 计算阶乘
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
# 计算S
S = 0
for i in range(1, 11):
S += factorial(i)
print(S)
```
答案为4037913。
阅读全文