【问题标题】:How do i use a loop in maxima to plot multiple vectors?如何在最大值中使用循环来绘制多个向量?
【发布时间】:2020-08-01 16:33:30
【问题描述】:

我正在尝试为任何点 (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 窗口在每次迭代时都会刷新,所以我尝试将两个循环放在 draw2d 之后和“vector”之前,但这也不起作用。

【问题讨论】:

    标签: loops math vector maxima


    【解决方案1】:

    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 应用于所有参数。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多