МОДЕЛИ

ДИНАМИКА: МОДЕЛЬ КЕПЛЕРА

Модель солнечной системы Кеплера (см. справку по iMatLab): интегрируем уравнения Ньютона на случай взаимодействия планет и Солнца (планеты между собой не взаимодействуют) . Получаем эллиптические орбиты.


%toolbox runge, %toolbox space, 

if tick=0, 
Z1=planette(5), Z2={Z1}, Z3={Z1}, dT=1, g=1, M=1000, 
x1=[ 0  80 -2.5 -0.1], 
x2=[ 160 0 -0.3 -1.9], 
x3=[-110 0  0.3 -2.5],
A=[0 0 1 0 ; 0 0 0 1 ;  0 0 0 0 ; 0  0 0 0], 
G=[0 0 0 0 ; 0 0 0 0 ; -g 0 0 0 ; 0 -g 0 0], B={G*M},
end, x1=Runge(x1 dT), x2=Runge(x2 dT), x3=Runge(x3 dT),
     moveXat(Z1 220+x1[0]), moveYat(Z1 150+x1[1]),
     moveXat(Z2 220+x2[0]), moveYat(Z2 150+x2[1]),
     moveXat(Z3 220+x3[0]), moveYat(Z3 150+x3[1]),
     show(Z1 Z2 Z3),
ticker(10), 

function: Fun(x),
var F r, r=sqrt(x[0]*x[0]+x[1]*x[1]), 
F={{A*x+B*x/r/r/r}}, 
return F, 
end,

ВЗАИМНОЕ ВЛИЯНИЕ ПЛАНЕТ

Добавим в правую часть дифференциальных уравнений поправочные члены, учитывающие воздействие планет друг на друга. Видно, насколько проблематичным становится сохранение стабильности системы и заодно демонстрируется, как при помощи планет можно разгонять космические корабли.


%toolbox runge, %toolbox space, 

if tick=0, 
Z1=planette(5), Z2={Z1}, Z3={Z1},
dT=1, g=1, M=1000, m1=8, m2=7, m3=30, 
x1=[0  80 -2.5 -0.1], 
x2=[160 0 -0.3 -1.9], 
x3=[-140 0 0.3 -2.5],
A=[ 0 0 1 0 ; 0 0 0 1 ;  0 0 0 0 ; 0  0 0 0 ], 
G=[ 0 0 0 0 ; 0 0 0 0 ; -g 0 0 0 ; 0 -g 0 0 ], B={G*M},  
end, X1={x1}, X2={x2}, X3={x3},
     b={{G*m1*m2}}, F1=Funs(x1 X2), 
     b={{G*m1*m3}}, F2=Funs(x1 X3), 
     x1=Runge(x1 dT), 
     b={{G*m2*m1}}, F1=Funs(x2 X1), 
     b={{G*m2*m3}}, F2=Funs(x2 X3), 
     x2=Runge(x2 dT),
     b={{G*m3*m1}}, F1=Funs(x3 X1), 
     b={{G*m3*m2}}, F2=Funs(x3 X2), 
     x3=Runge(x3 dT),
     moveXat(Z1 220+x1[0]), moveYat(Z1 150+x1[1]),
     moveXat(Z2 220+x2[0]), moveYat(Z2 150+x2[1]),
     moveXat(Z3 220+x3[0]), moveYat(Z3 150+x3[1]),
     show(Z1 Z2 Z3),
ticker(10),

function: Fun(x),
var F r, r=sqrt(x[0]*x[0]+x[1]*x[1]), 
F={{A*x+B*x/r/r/r+F1+F2}}, 
return F, 
end,

function: Funs(x1 x2),
var F dx r, dx={x1-x2}, 
 r=sqrt(dx[0]*dx[0]+dx[1]*dx[1]),  
 F={{b*dx/r/r/r}}, 
return F, 
end,

КОЛЕБАНИЯ ЦЕПОЧКИ


%toolbox rungec, 

if tick=0, L=1, M=1, dT=0.05, 
 P=[M M M M L L L L],  X=[0 0 1 -1 0 0 0 0], 
 n=rows(X)/2, C=one(n+1), 
 for i=0:n, p=pendulum(L), C[i]=p, end, 
 C[n]=basis(L), t=line(100), t={t*dT}, 
 Y=zero(t),
end,

Y[tick]=X[0], X=chain(X), 

if tick<rows(t), a=0, x=215, y=20, 
  for i=0:n-1, turnunit(C[i] X[i]), end, 
  show(C), ticker(100), else, plot(t Y), 
end,

function: turnunit(Z A),
  a=a+A, moveXat(Z x), moveYat(Z y), turnat(Z a), 
  x=Z[0][5], y=Z[1][5], 
end,

function: unit(L),
var Z X Y, LL=250/n,
Z=iniFG(0 '#222255' 0 0), 
addFG(Z 'T' 'T' '#ff2255' [0 0] [0 LL]), 
return Z, 
end,

function: basis(L),
var Z t X Y, Z=unit(L),  
addFG(Z 'T' 'F' '#ff2255' [-50 -50 50 50] [0 1 1 0]),
moveXat(Z 215), moveYat(Z 20),
return Z, 
end,

function: pendulum(L),
var Z t X Y, t=time(2*PI 8), Z=unit(L),
X=fun(5*M*sin(t)), Y=fun(LL+5*M*cos(t)), 
addFG(Z 'T' 'T' '#ff2255' X Y),
return Z, 
end,

МАНИПУЛЯТОР: ДВА ШАРНИРА С ПРУЖИНОЙ


%toolbox runge,

if tick=0, 
  % ПОДВЕС И ДЛИНА,
  x0=215, y0=50, L=1,   
  Z=basis(L), Z1=pendulum(L), 
  moveXat(Z  x0), moveYat(Z  y0),
  moveXat(Z1 x0), moveYat(Z1 y0),
  Z2={Z1}, Z3=spring(L),
  % ПАРАМЕТРЫ КОНСТРУКЦИИ,
  dT=0.05, g=9.8, N=180/PI,
  % МАССЫ И ЖЕСТКОСТЬ,
  M=1, m=1, G=1.44*L*L*100, 
  W=2*M*L*L, w=2*m*L*L, A=W+2*w,
  x=[1.5 0 0 0], 
end,
  x=Runge(x dT), 
  % ЗВЕНО 1,
  turnat(Z1 x[0]), x1=Z1[0][5], y1=Z1[1][5],
  % ЗВЕНО 2,
  moveXat(Z2 x1), moveYat(Z2 y1), 
  turnat(Z2 x[1]), x2=Z2[0][5], y2=Z2[1][5],
  % ПРУЖИНА-МУСКУЛ,
  Z3[0][4]=(x0+x1)/2, Z3[1][4]=(y0+y1)/2, 
  Z3[0][5]=(x1+x2)/2, Z3[1][5]=(y1+y2)/2, 
  show(Z Z1 Z2 Z3),
ticker(10),

function: Fun(x),
var F B C D Y f1 f2 f3 f4 s c r d y,
r=x[1]-x[0], s=sin(r), c=cos(r), 
B=w*c, C=w*s, D=A*w-B*B, 
% SPRING, 
d=abs(1+c), d=sqrt(d), 
d=1-d, d=G*d, 
d=d*sin(r/2), % if r>0 d=-d end,
% FORCES,
Y=x[0], Y=L*g*sin(Y), 
Y=d-0*x[2]-(M+2*m)*Y+C*x[3]*x[3], 
y=x[1], y=L*g*sin(y),   
y=-d-0*x[3]-m*y-C*x[2]*x[2],
f1=x[2], f2=x[3], 
f3=(w*Y-B*y)/D, f4=(A*y-B*Y)/D,
F=[f1 f2 f3 f4],
return F,
end,

function: basis(L),
var Z t X Y, Z=spring(L), L=100*L, 
addFG(Z 'T' 'МАНИПУЛЯТОР' '#00ff00' -45 -15),
addFG(Z 'T' 'F' '#ff2255' [-50 -50 50 50] [0 1 1 0]),
return Z, 
end,

function: pendulum(L),
var Z t X Y, t=time(2*PI 8), Z=spring(L),
X=fun(10*sin(t)), Y=fun(100*L+10*cos(t)), 
addFG(Z 'T' 'T' '#ff2255' X Y),
return Z, 
end,

function: spring(L),
var Z X Y, L=100*L,
Z=iniFG(0 '#222255' 0 0), 
addFG(Z 'T' 'T' '#ff2255' [0 0] [0 L]), 
return Z, 
end,

ОКРАСКА МНОЖЕСТВА МАНДЕЛЬБРОТА

Мир нелинейных систем велик. Итерационный процесс, порождающий множество Мандельброта, за три десятка лет компьютерной эволюции оброс фантастическими иллюстрациями.

НЕКОТОРЫЙ ЛИКБЕЗ

ОКРАСКА НА ПРОИЗВОДИТЕЛЬНОЙ МАШИНЕ

Среди методов раскраски есть и такой, при котором со сдвоенных тарелок множества смотрят львиные лица: сфинкс.

Древняя египетская богиня Бастет на многих изображениях тоже имеет характерный нагрудный знак. В физиологии человека и животных парность - обыденность. Помимо того, что таз изоморфен черепу, конечности и глаза не только парны, но и асиметричны: правая и левая руки развиты неодинаково и т.п.


A=mandset(101 -2 0.5 -1 1 50 100), tr(A),

P=10*PI, I=ones(A), Ex={exp(-1.5*A)}, A={I-Ex}, 
A={cos(P*A)}, A={cos(P*A)}, 'MS'=send(A), bar('MS':CR),

function: mandset(n x1 x2 y1 y2 Q M),
var i j k z xx yy ri rj, A=zeros(n), n=n-1, 
dx=(x2-x1)/n, dy=(y2-y1)/n, cP=100,
for i=0:n, xx=x1+i*dx,  
for j=0:n, yy=y1+j*dy, ri=0.0, rj=0.0, k=0, 
 while k<Q, k=k+1,
 z=xx+(ri*ri-rj*rj), rj=yy+(ri*rj*2), ri=z, 
 if abs(ri)>M, k=Q, end, 
 if abs(rj)>M, k=Q, end,
 end,
 if abs(ri)>M, ri=0.0, else,
 if abs(rj)>M, ri=0.0, else, 
 ri=sqrt(ri*ri+rj*rj), end, end, 
 A[i][j]=ri,
end, end,
return A,
end,

СКУЛЬПТУРЫ КРИСА КУКСИ

От его искусства просто мурашки по коже, его дикие, зловещие, непредсказуемые, но богатые картины и инсталляции проникают глубоко во внутрь и затрагивают душу. Его работы сочетают в себе видения автора психологических, религиозных, идеологических и эстетических проблем. Американец Крис Кукси (Kris Kuksi) преследует идею разоблачения иллюзий, созданных нами в результате страха, который живет в нашем сознании. Присмотритесь к множеству Мандельброта – будучи однажды открытой математической абстракцией, оно обладает возрастом Вселенной и может подспудно ужасать не меньше скульптур Криса. Если, конечно, его инсталляция не навеяна самим этим множеством, уж больно похоже, в деталях.



Rambler's Top100