绘制for循环值(数组)

时间:2017-06-20 23:36:01

标签: arrays for-loop plot wolfram-mathematica

因为我对Mathematica完全陌生,所以我遇到了以下问题:

我应该在y方向(向上)“飞行”一架无人机,在它撞到位于{0,5}的“障碍物”之前,它应该在x方向上移开。这可行,但现在我应该绘制无人机的“飞行路径”。我尝试使用数组,但我无法绘制它。有人可以帮助我吗?

<form class="navbar-form navbar-left" (ngSubmit)="addProduct()"> <div class="form-group"> <input type="text" class="form-control" Identification" [(ngModel)]="proName" name="proName"></div> <div class="form-group"> <input type="text" class="form-control" [(ngModel)]="proPrice" name="proPrice"> </div> <div class="form-group" > <input type="text" class="form-control" name="cat.name" [(ngModel)]="cat.name " > </div>

Reap[For[it = 1, it < 11, it++, drone = {0, it}; 
  Sow[drone] If[obstacle == drone + {0, 1}, 
    For[i = 1, i < 11, i++, drone = {i, it}; Sow[drone]]]]]

我知道“For”不是在Mathematica中做到这一点的最好方法,但我已经习惯了其他程序语言。

我用Google搜索了很多不同的方法,(表格,列表等),但没有成功,这是我最接近的解决方案,对我来说是合适的(如果我能够绘制它) 。

编辑:

感谢您的解决方案。得到它的工作!

1 个答案:

答案 0 :(得分:1)

你应该在Sow[drone]If[obstacle == drone + {0, 1}之间加一个分号,尽管在这种情况下它仍然有效。以下是一些策划建议。

obstacles = {{0, 5}, {3, 12}};
i = 0;

path = Reap[For[it = 1, it < 21, it++,
     drone = {i, it};
     Sow[drone];
     If[MemberQ[obstacles, drone + {0, 1}],
      Do[drone = {i++, it};
       Sow[drone], 3]]]][[2, 1]];

plot = Show[ListLinePlot[path, PlotMarkers -> Automatic], 
  ListPlot[obstacles, PlotStyle -> Red, PlotMarkers -> {Automatic, 12}],
  Frame -> True, PlotRangePadding -> {0.6, {1, 2}}, Axes -> False]

enter image description here