limeeattack
limeeattack

Reputation: 320

Plotting multiple arrays in maple

I'm trying to plot 4 data-sets in a single coordinate-system. I can plot every single one of them by themselves. However when I try to plot 2 or more with the same plot function I get an error. I can't use lists since I want to scale the arrays up to 2*10000, which a list can't. I'm using Maple 18. Can anybody please help me solve this?

This is my code:

enter image description here

Here is a plotted data-set: enter image description here

Here is the error I get, when trying to plot multiple sets(note I have tried using {} instead of []): enter image description here

Upvotes: 0

Views: 817

Answers (1)

acer
acer

Reputation: 7246

Your problem is that your use of pair and zip is not going to produce Arrays P[i] whose layout is valid for plotting. (Perhaps you cribbed that bit of code from something which was intended to produce a list of lists instead of an Array.)

Instead, you could construct the P[i] as iterator-by-2 Matrices (ie. 2-column Matrices).

One way:

restart;

mu := 2.5:
iterator := 25:

fcn := proc(a)
  local F,i;
  F := Array(1..iterator);
  F[1] := a;
  for i from 2 by 1 to iterator do
    F[i] := mu*F[i-1]*(1-F[i-1]);
  end do;
  F;
end proc:

f[1]:=fcn(0.01):
f[2]:=fcn(0.1):
f[3]:=fcn(0.3):
f[4]:=fcn(0.5):

x := Array([seq(i,i=1..iterator)]):

for i from 1 to 4 do
  P[i] := <x,f[i]>^%T:
end do:

plot([P[1],P[2],P[3],P[4]]);

Another (similar) way:

restart;

mu := 2.5:
iterator := 25:

fcn := proc(a)
  local F,i;
  F := Vector(1..iterator);
  F[1] := a;
  for i from 2 by 1 to iterator do
    F[i] := mu*F[i-1]*(1-F[i-1]);
  end do;
  F;
end proc:

f[1]:=fcn(0.01):
f[2]:=fcn(0.1):
f[3]:=fcn(0.3):
f[4]:=fcn(0.5):

x := Vector([seq(i,i=1..iterator)]):

for i from 1 to 4 do
  P[i] := <x|f[i]>:
end do:

plot([P[1],P[2],P[3],P[4]]);

You could alternatively use the command plots:-listplot directly on your f[i], though you'd likely way to also specify different colors for each so that it looked nice when you used plots:-display to render them all together.

I leave aside considerations of performance. There are ways to do all this and get faster computation. I deliberately keep your basic methodology.

Upvotes: 2

Related Questions