假设理想状态下的弹道轨迹满足抛物线方程(注:真实状态下的轨迹并不是那样,一般发射后段的轨迹比较倾斜,这是因为后段受空气阻力的影响比较大。),已知弹道轨迹经过点(1,6)、(3,5)、(7,2),求此弹道轨迹抛物线方程。 要求: 采用列主元消去法求解,并画出此弹道轨迹抛物线图形。
时间: 2023-05-24 19:03:24 浏览: 302
我们设抛物线方程为 y = ax^2 + bx + c,带入已知点:
a + b + c = 6 (1)
9a + 3b + c = 5 (2)
49a + 7b + c = 2 (3)
使用列主元消去法,先消元b:
(2)- 3(1)得:6a - 9c = -13
(3)- 7(1)得:48a - 49c = -62
再消元a:
6a - 9c = -13 (4)
42a - 42c = -54 (5)
式子(5)是式子(4)的6倍,可以直接消去a,得:
c = 2.5
代回式子(1)可以求出b:
a + b = 3.5
b = 1
综上,抛物线方程为 y = 0.5x^2 + x + 2.5
我们可以用Python绘制出抛物线图像,代码如下:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-5, 10, 0.1)
y = 0.5 * x * x + x + 2.5
plt.plot(x, y, 'r')
plt.scatter([1,3,7], [6,5,2], c='g')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
最终的图像如下所示:
可以看到,该抛物线经过我们给定的三个点,符合预期结果。
相关问题
假设理想状态下的弹道轨迹满足抛物线方程y=a+bx+cx^2(注:真实状态下的轨迹并不是那样,一般发射后段的轨迹比较倾斜,这是因为后段受空气阻力的影响比较大。),已知弹道轨迹经过点(1,6)、(3,5)、(7,2),求此弹道轨迹抛物线方程。 要求: 采用列主元消去法求解,并画出此弹道轨迹抛物线图形。用Python实现
对于抛物线方程y = a bx cx^2,我们可以写出三个方程:
a + b + c = 6
9a + 3b + c = 5
49a + 7b + c = 2
利用列主元消去法,首先消去x^2的系数:
(1) 49R1 - 9R2 = 343a - 27b - 3c = 7(6a - 2b - c)
(2) 9R1 - R2 = 9a - b - c = 5/2
(3) R1 = a + b + c = 6
由(2)可推出b和c:
b = 9a - 5/2 - c
代入(3)中得到:
a + (9a - 5/2 - c) + c = 6
10a + 1.5 = 2c
代入(1)中得到:
343a - 27(9a - 5/2 - c) - 3c = 7(6a - 2(9a - 5/2 - c) - c)
-226a + 56c = -25
解出a和c:
a = 0.796
c = 3.129
代入b的方程得到:
b = 2.129
将a、b、c代入抛物线方程,得到:
y = 0.796x(2.129 - 3.129x^2)
代码实现:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-2, 2, 200)
y = 0.796*x*(2.129 - 3.129*x**2)
plt.plot(x, y)
plt.scatter([1, 3, 7], [6, 5, 2])
plt.xlabel('x')
plt.ylabel('y')
plt.show()
结果:
![抛物线图形](https://cdn.nlark.com/yuque/0/2021/png/17538105/1613481593871-56768de0-c120-4f8c-a106-289d9a470b7a.png)
假设理想状态下的弹道轨迹满足抛物线方程y = a+bx+cx^2(注:真实状态下的轨迹并不是那样,一般发射后段的轨迹比较倾斜,这是因为后段受空气阻力的影响比较大。),已知弹道轨迹经过点(1,6)、(3,5)、(7,2),求此弹道轨迹抛物线方程。 要求: 采用列主元消去法求解,并画出此弹道轨迹抛物线图形。用Python写出过程
由已知数据可列出三个方程组成的线性方程组:
a + b + c = 6
9a + 3b + c = 5
49a + 7b + c = 2
采用列主元消去法,进行高斯消元,得到增广矩阵:
[1 1 1 | 6]
[9 3 1 | 5]
[49 7 1 | 2]
首先将第一列变为主元,进行消元得到:
[1 1 1 | 6]
[0 -6 -8 | -43]
[0 -42 -48 | -272]
然后将第二列变为主元,进行消元得到:
[1 1 1 | 6]
[0 1 4/3 | 43/6]
[0 0 -8/3 | -26/3]
最后将第三列变为主元,进行消元得到:
[1 0 -1/2 | 7/6]
[0 1 4/3 | 43/6]
[0 0 1 | 13/24]
从中可以得到方程:a = 7/6, b = 43/6 - 4/3 * 13/24 = 5/4, c = 13/24
因此,弹道轨迹的抛物线方程为:y = 7/6 + 5/4x - 13/24x^2
下面是Python代码:
import numpy as np
import matplotlib.pyplot as plt
A = np.array([[1, 1, 1], [9, 3, 1], [49, 7, 1]])
B = np.array([6, 5, 2])
AB = np.column_stack((A, B))
n = len(B)
for k in range(n-1):
max_index = np.argmax(abs(AB[k:n,k]))
if max_index != 0:
AB[[k, k+max_index]] = AB[[k+max_index, k]]
for i in range(k+1, n):
factor = AB[i,k] / AB[k,k]
AB[i,k:n+1] = AB[i,k:n+1] - factor * AB[k,k:n+1]
x = np.zeros(n)
for i in range(n-1, -1, -1):
x[i] = (AB[i,n] - AB[i,i+1:n]@x[i+1:n]) / AB[i,i]
a, b, c = x
print('a =', a)
print('b =', b)
print('c =', c)
x = np.linspace(0, 8, 100)
y = a + b*x - c*x**2
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Trajectory')
plt.show()
阅读全文