Как вы уже знаете, функция GraphicsArray позволяет на одном листе (чертеже) нарисовать несколько графиков, расположив их в одну строку или в виде двухмерного массива. Однако если вы все графики вычерчиваете с помощью одной функции, например ParametricPlot, удобно предварительно установить те значения ее опций, которые совпадают у большинства графиков. Пусть, например, мы хотим установить опции
AspectRatio->Automatic и Axes->False. Вот как это делается.
SetOptions[ParametricPlot,AspectRatio->Automatic,Axes->False] ;
Теперь можем определить нужные нам графики и при необходимости задать значения тех опций, которые отличаются от установленных ранее. Пусть, например, на первом и третьем графиках вычерчиваются оси координат. Тогда для этих графиков устанавливаем
Axes->True.
Block[{$DisplayFunction=Identity},
pl=ParametricPlot[{Cos[t],Sinft]},{t,0,2Pi},Axes->True];
p2=ParametricPlot[{2Cos[t],Sin[t]),{t,0,2Pi}];
p3=ParametricPlot[{ (2Cos [t] -1) Cos [t-] , (2Cos [t]-1) Sin [t] },
{t,0,2Pi},Axes->True];
p4=ParametricPlot[{t Cos[t],t Sin[t]},{t,0,12Pi}];
p5=ParametricPlot[{t Cos[t]Sin[t],t Sin[t]Л2},{t,0,8Pi}];
p6=ParametricPlot[{Sin[2t]+Sin[5t],Cos[2t]+Cos[5 t]},{t,0,2Pi}];
p7=ParametricPlot[{Sin[2t]Sin[5t],Cos[2t]Sin[5t]},{t,0,2Pi}];
p8=ParametricPlot[{Cos[t]+l/2Cos[7t]+l/3 Cos[-17t+Pi/2],
Sin[t]+l/2 Sin[7 t]+l/3Sin[-17t+Pi/2]},{t,0,2Pi}];]
Block[{k=5},Block[{a,b,r=Sin[k*z]},
Block[{XY={r*Cos[a*z],r*Sin[b*z]}),
Show[GraphicsArray[ Table[Table[ParametricPlot[XY,{z,0,2 Pi}],
{b,6}],{a,9}]]]]]]
№ n/n |
r1 |
r2 |
а |
1 |
2 |
-1 |
1 |
2 |
3 |
- 1 |
1 |
3 |
3 |
-2 |
2 |
4 |
4 |
-1 |
1 |
  |   |   |   |
Как начертить все нужные нам кривые, не задавая в их уравнениях параметры вручную? Для этого придется превратить таблицу в список наборов параметров.
Заметьте, что порядковый номер включен в набор параметров первым элементом. Это значительно облегчает поиск нужного набора параметров в таблице. Теперь мы хотим написать программу, которая печатает на одном чертеже графики с порядковыми номерами в заданном диапазоне, располагая их по т штук в ряду.
Сначала определим вращающийся единичный вектор.
Rphi[phi_]:={Cos[phi],Sin[phi]}
После этого можно дать определение функции PolarXYAB для наших циклоид.
PolarXYAB[t_,г 1_,r2_,a_,omega_]= r1+r2*Rphi[t]+a*Rphi[omega*t]
Теперь определим функцию, рисующую отдельный график.
gg[n_]:=Block[{plot,rl=parTable[[n]] [[2]],r2=parTable[[n]] [ [3]],
a=parTable[[n]] [[4]]},
plot=ParametricPlot[PolarXYAB[t,rl,r2,a,omega],
{t,0,2 Denominator[omega]Pi}, Axes->False,
PlotLabel->"n="oToString [n] ] ]
Block[{n,m=5,omega=l/7},
Show[GraphicsArray[
Table[Table[gg[n=(a-l)*m+b],{b,m}],{a,3}]]]]
Block[{n,m=2,omega=l/7},
Show[GraphicsArray[
Table[Table[gg[n=15+(a-1)*m+b],{b,m}],{a,!)]]]]
Block!{n,m=3,omega=l/7},
Show[GraphicsArray[
Table[Table[gg[n=17+(a-1)*m+b],{b,m}],{a,1}]]]]
Block[(n,m=5,omega=l/7),
Show[GraphicsArray[
Table[Table[gg[n=20+(a-1)*m+b],{b,m}],{a,2}]]]]
Block[{n,m=5,omega=l/7},
Show[GraphicsArray[
Table[Table[gg[n=30+(a-1)*m+b],{b, m}], {a, 2}]] ] ]