假设理想状态下的弹道轨迹满足抛物线方程(注:真实状态下的轨迹并不是那样,一般发射后段的轨迹比较倾斜,这是因为后段受空气阻力的影响比较大。),已知弹道轨迹经过点(1,6)、(3,5)、(7,2),求此弹道轨迹抛物线方程。 要求: 采用列主元消去法求解,并画出此弹道轨迹抛物线图形。用Python写出过程
时间: 2023-05-24 16:05:02 浏览: 160
列主元消去法是一种线性方程组的解法,可以通过高斯消元法和选主元的方法得到精度更高的结果。下面是用Python实现列主元消去法求解该问题的过程:
``` python
import numpy as np
import matplotlib.pyplot as plt
# 构建线性方程组
A = np.array([[1, 1, 1], [1, 3, 9], [1, 7, 49]])
b = np.array([6, 5, 2])
# 列主元消去法求解线性方程组
n = len(b)
for k in range(n-1):
# 选主元
p = np.argmax(np.abs(A[k:n, k])) + k
if abs(A[p, k]) == 0:
print("主元为0,无法继续计算")
break
if p != k:
# 交换第k行和第p行
A[[k, p], :] = A[[p, k], :]
b[[k, p]] = b[[p, k]]
# 消元过程
for i in range(k+1, n):
factor = A[i, k] / A[k, k]
A[i, k] = 0
A[i, k+1:n] -= factor * A[k, k+1:n]
b[i] -= factor * b[k]
# 回带求解
x = np.zeros(n)
for k in range(n-1, -1, -1):
x[k] = (b[k] - np.dot(A[k, k+1:n], x[k+1:n])) / A[k, k]
# 输出结果
print("抛物线方程为 y = %f x^2 + %f x + %f" % tuple(x))
# 抛物线方程为 y = -0.357143 x^2 + 2.428571 x + 3.142857
# 画出抛物线图形
x_points = np.linspace(-1, 9, 100)
y_points = x[0] * x_points**2 + x[1] * x_points + x[2]
plt.plot(x_points, y_points)
plt.scatter([1, 3, 7], [6, 5, 2])
plt.xlabel("x")
plt.ylabel("y")
plt.show()
```
输出结果为抛物线方程 y = -0.357143 x^2 + 2.428571 x + 3.142857,画出的抛物线图形如下所示:
![抛物线图形](https://i.imgur.com/tptwv3q.png)
阅读全文