有两个四维向量v1和v2用列表表示如下,计算(1) v1和v2的点积 d (2)v1和v2夹角的余弦值 c (3)v1和v2的相关系数 r 。相关公式如下。
时间: 2024-05-25 15:15:21 浏览: 4
v1 = [2, 4, 1, 3]
v2 = [1, 0, 3, 5]
(1) 点积 d = v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2] + v1[3]*v2[3]
d = 2*1 + 4*0 + 1*3 + 3*5
d = 20
(2) 夹角余弦值 c = d / (|v1| * |v2|)
|v1| = sqrt(v1[0]**2 + v1[1]**2 + v1[2]**2 + v1[3]**2)
|v1| = sqrt(2**2 + 4**2 + 1**2 + 3**2)
|v1| = sqrt(30)
|v2| = sqrt(v2[0]**2 + v2[1]**2 + v2[2]**2 + v2[3]**2)
|v2| = sqrt(1**2 + 0**2 + 3**2 + 5**2)
|v2| = sqrt(35)
c = d / (|v1| * |v2|)
c = 20 / (sqrt(30) * sqrt(35))
c = 0.524
(3) 相关系数 r = d / (|v1| * |v2|)
r = c
相关问题
有两个四维向量v1和v2用列表表示如下,计算v1和v2夹角的余弦值 c
由于没有给出具体的数值,我们无法直接计算夹角的余弦值。但是,我们可以使用向量的点积和模长公式来计算。
首先,我们需要将列表表示的向量转换为numpy数组。代码如下:
```python
import numpy as np
v1 = [1, 2, 3, 4]
v2 = [4, 3, 2, 1]
v1 = np.array(v1)
v2 = np.array(v2)
```
接下来,我们可以使用向量的点积公式计算v1和v2的点积。代码如下:
```python
dot_product = np.dot(v1, v2)
```
然后,我们可以使用向量的模长公式计算v1和v2的模长。代码如下:
```python
v1_norm = np.linalg.norm(v1)
v2_norm = np.linalg.norm(v2)
```
最后,我们可以使用夹角余弦公式计算v1和v2的夹角余弦值。代码如下:
```python
cosine = dot_product / (v1_norm * v2_norm)
print(cosine)
```
输出结果为夹角的余弦值。
使用jupyter notebook,numpy,(不使用回圈)验证随机(np.random.random)的 n 组 4 维向量 v1,v2,w1,w2满足内积的分配律,即 (v1+v2,w1+w2)=(v1,w1)+(v2,w1)+(v1,w2)+(v2,w2)
首先,我们来解释一下内积的分配律:
对于任意的四维向量 v1、v2、w1 和 w2,它们的内积可以写成:
(v1 v2, w1 w2) = v1w1 + v2w2 + v1w2 + v2w1
而内积的分配律指的是,上式右边的四项分别可以表示为:
(v1, w1) (v2, w2) + (v1, w2) (v2, w1)
也就是说,对于任意的四维向量 v1、v2、w1 和 w2,都有:
(v1 v2, w1 w2) = (v1, w1) (v2, w2) + (v1, w2) (v2, w1)
下面,我们使用 numpy 来验证这个性质。首先,我们生成 n 组随机的四维向量:
import numpy as np
n = 10 # 生成 10 组向量
v1 = np.random.random((n, 4))
v2 = np.random.random((n, 4))
w1 = np.random.random((n, 4))
w2 = np.random.random((n, 4))
接下来,我们计算左边的内积值:
left = np.sum(v1*v2*w1*w2, axis=1)
然后,我们计算右边的内积值:
right = np.sum((v1*w1)*(v2*w2), axis=1) + np.sum((v1*w2)*(v2*w1), axis=1)
最后,我们比较左右两边的值是否相等:
np.allclose(left, right)
如果返回 True,则说明验证通过。完整代码如下:
import numpy as np
n = 10 # 生成 10 组向量
v1 = np.random.random((n, 4))
v2 = np.random.random((n, 4))
w1 = np.random.random((n, 4))
w2 = np.random.random((n, 4))
left = np.sum(v1*v2*w1*w2, axis=1)
right = np.sum((v1*w1)*(v2*w2), axis=1) + np.sum((v1*w2)*(v2*w1), axis=1)
np.allclose(left, right)