我知道如何绘制矩阵移动的点,如下所示
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x=np.random.randn(2) #2*1 matrix
A=np.random.randn(2,2) #2*2 matrix
print ('the content of x:\n{}\n the content of A:\n{}'.format(x,A))
def action(pt,n):
record=[pt]
for i in range(n):
pt= A@pt
record=np.vstack([record,pt])
plt.scatter(record[:,1],record[:,1])
action(x,100)
函数“action”将绘制类似于行的东西,但我想按矩阵移动点然后像轨道一样绘制
答案 0 :(得分:0)
简短的答案:
plt.scatter(记录[:,1],记录[:,1])将在x和amp;中提供相同的值。 y尺寸&因此总会返回一条线。替换为:
X,Y = np.hsplit(record,2)
plt.scatter(X,Y)
LONG ANSWER:
作为一条线出现的主要原因是你使用2个常数生成图(尽管是随机生成的)。我将使用以下示例进行说明:
>>> c
array([[ 1., 2.],
[ 2., 4.]])
>>> d
array([ 3., 4.])
>>> d@c
array([ 11., 22.])
>>> d@c@c
array([ 55., 110.])
>>> d@c@c@c
array([ 275., 550.])
注意所有递归操作如何在每个阶段仅将初始坐标乘以5。 如何获得非线性图?