我如何在最大值中使用循环来绘制多个向量?
How do i use a loop in maxima to plot multiple vectors?
我正在尝试为任何点 (x,y) 绘制一些 [x,-y] 形式的向量,所以我尝试了这个:
for i:1 while i<=21 do
(for j:1 while j<=21 do
(draw2d(
xrange=[0,50],
yrange=[0,50],
vector([i,j],[i,-j])
)
));
但是 gnuplot window 在每次迭代时都会刷新,所以我尝试将这两个循环放在 draw2d 之后和“vector”之前,但这也不起作用。
draw2d
(同样是 draw3d
)绘制了一个完整的“场景”,由其参数描述。参数中的所有内容都是一个“场景”。因此,要创建一个包含不同事物的场景,您需要制作一个包含所有您想要的事物的列表,然后对其应用 draw2d
,即告诉 Maxima 使用该列表调用 draw2d
参数。
这里有一个例子来说明这一点。我将首先创建所有向量的列表。 vector
图形对象带有一些选项,如head_type
等。我将制作一个包含我想要的选项的列表,然后附加选项和向量列表以获取我想要的所有参数。最后调用draw2d
显示场景
(%i2) load (draw) $
(%i3) myvectors: makelist (makelist (vector([i, j], [i, -j]), j, 1, 5), i, 1, 5);
(%o3) [[vector([1, 1], [1, - 1]), vector([1, 2], [1, - 2]),
vector([1, 3], [1, - 3]), vector([1, 4], [1, - 4]),
vector([1, 5], [1, - 5])], [vector([2, 1], [2, - 1]),
vector([2, 2], [2, - 2]), vector([2, 3], [2, - 3]),
vector([2, 4], [2, - 4]), vector([2, 5], [2, - 5])],
[vector([3, 1], [3, - 1]), vector([3, 2], [3, - 2]),
vector([3, 3], [3, - 3]), vector([3, 4], [3, - 4]),
vector([3, 5], [3, - 5])], [vector([4, 1], [4, - 1]),
vector([4, 2], [4, - 2]), vector([4, 3], [4, - 3]),
vector([4, 4], [4, - 4]), vector([4, 5], [4, - 5])],
[vector([5, 1], [5, - 1]), vector([5, 2], [5, - 2]),
vector([5, 3], [5, - 3]), vector([5, 4], [5, - 4]),
vector([5, 5], [5, - 5])]]
(%i4) vector_options: [head_length = 0.2, head_angle = 15, head_type = empty];
(%o4) [head_length = 0.2, head_angle = 15, head_type = empty]
(%i5) append (vector_options, myvectors);
(%o5) [head_length = 0.2, head_angle = 15, head_type = empty,
[vector([1, 1], [1, - 1]), vector([1, 2], [1, - 2]),
vector([1, 3], [1, - 3]), vector([1, 4], [1, - 4]),
vector([1, 5], [1, - 5])], [vector([2, 1], [2, - 1]),
vector([2, 2], [2, - 2]), vector([2, 3], [2, - 3]),
vector([2, 4], [2, - 4]), vector([2, 5], [2, - 5])],
[vector([3, 1], [3, - 1]), vector([3, 2], [3, - 2]),
vector([3, 3], [3, - 3]), vector([3, 4], [3, - 4]),
vector([3, 5], [3, - 5])], [vector([4, 1], [4, - 1]),
vector([4, 2], [4, - 2]), vector([4, 3], [4, - 3]),
vector([4, 4], [4, - 4]), vector([4, 5], [4, - 5])],
[vector([5, 1], [5, - 1]), vector([5, 2], [5, - 2]),
vector([5, 3], [5, - 3]), vector([5, 4], [5, - 4]),
vector([5, 5], [5, - 5])]]
(%i6) apply (draw2d, %);
当然,你可以重做这个例子,向量的数量等于 21^2 而不是 5^2,你可以根据需要更改选项。您还可以创建其他图形对象并将它们附加到参数列表,然后将 draw2d
应用于所有参数。
我正在尝试为任何点 (x,y) 绘制一些 [x,-y] 形式的向量,所以我尝试了这个:
for i:1 while i<=21 do
(for j:1 while j<=21 do
(draw2d(
xrange=[0,50],
yrange=[0,50],
vector([i,j],[i,-j])
)
));
但是 gnuplot window 在每次迭代时都会刷新,所以我尝试将这两个循环放在 draw2d 之后和“vector”之前,但这也不起作用。
draw2d
(同样是 draw3d
)绘制了一个完整的“场景”,由其参数描述。参数中的所有内容都是一个“场景”。因此,要创建一个包含不同事物的场景,您需要制作一个包含所有您想要的事物的列表,然后对其应用 draw2d
,即告诉 Maxima 使用该列表调用 draw2d
参数。
这里有一个例子来说明这一点。我将首先创建所有向量的列表。 vector
图形对象带有一些选项,如head_type
等。我将制作一个包含我想要的选项的列表,然后附加选项和向量列表以获取我想要的所有参数。最后调用draw2d
显示场景
(%i2) load (draw) $
(%i3) myvectors: makelist (makelist (vector([i, j], [i, -j]), j, 1, 5), i, 1, 5);
(%o3) [[vector([1, 1], [1, - 1]), vector([1, 2], [1, - 2]),
vector([1, 3], [1, - 3]), vector([1, 4], [1, - 4]),
vector([1, 5], [1, - 5])], [vector([2, 1], [2, - 1]),
vector([2, 2], [2, - 2]), vector([2, 3], [2, - 3]),
vector([2, 4], [2, - 4]), vector([2, 5], [2, - 5])],
[vector([3, 1], [3, - 1]), vector([3, 2], [3, - 2]),
vector([3, 3], [3, - 3]), vector([3, 4], [3, - 4]),
vector([3, 5], [3, - 5])], [vector([4, 1], [4, - 1]),
vector([4, 2], [4, - 2]), vector([4, 3], [4, - 3]),
vector([4, 4], [4, - 4]), vector([4, 5], [4, - 5])],
[vector([5, 1], [5, - 1]), vector([5, 2], [5, - 2]),
vector([5, 3], [5, - 3]), vector([5, 4], [5, - 4]),
vector([5, 5], [5, - 5])]]
(%i4) vector_options: [head_length = 0.2, head_angle = 15, head_type = empty];
(%o4) [head_length = 0.2, head_angle = 15, head_type = empty]
(%i5) append (vector_options, myvectors);
(%o5) [head_length = 0.2, head_angle = 15, head_type = empty,
[vector([1, 1], [1, - 1]), vector([1, 2], [1, - 2]),
vector([1, 3], [1, - 3]), vector([1, 4], [1, - 4]),
vector([1, 5], [1, - 5])], [vector([2, 1], [2, - 1]),
vector([2, 2], [2, - 2]), vector([2, 3], [2, - 3]),
vector([2, 4], [2, - 4]), vector([2, 5], [2, - 5])],
[vector([3, 1], [3, - 1]), vector([3, 2], [3, - 2]),
vector([3, 3], [3, - 3]), vector([3, 4], [3, - 4]),
vector([3, 5], [3, - 5])], [vector([4, 1], [4, - 1]),
vector([4, 2], [4, - 2]), vector([4, 3], [4, - 3]),
vector([4, 4], [4, - 4]), vector([4, 5], [4, - 5])],
[vector([5, 1], [5, - 1]), vector([5, 2], [5, - 2]),
vector([5, 3], [5, - 3]), vector([5, 4], [5, - 4]),
vector([5, 5], [5, - 5])]]
(%i6) apply (draw2d, %);
当然,你可以重做这个例子,向量的数量等于 21^2 而不是 5^2,你可以根据需要更改选项。您还可以创建其他图形对象并将它们附加到参数列表,然后将 draw2d
应用于所有参数。