×
 

9.4 Пример использования команды

В качестве примера использования Идентификации можно привести задачу идентификации угла броска камня по эталонной траектории. Камень бросают вверх под углом к горизонту с известной скоростью. Эталонный бросок осуществляется под углом в 45 [deg]. Эталонная траектория представлена в виде функции высоты от расстояния и рассчитывается по следующей формуле:
,
где  – эталонный угол броска,
 – ускорение гравитационного притяжения,
 – скорость броска,
 – расстояния,
 – высота.
Начальное значение угла броска – 25 [deg].
 
Файл проекта
point point1=point( 0 [m], 0 [m], 0 [ m ] );
solid solid1=sphere( point1, 0.1 [ m ], mass = 1 [ kg ] );
color color1=index( 25 );
body stone=body( color = color1 );
body stone < ( solid1 );
body ground=body( color = RGB( 229, 229, 229 ) );
sensor dist=bodyDisplacement( ground, point1, projectX, stone, point1 );
scalar v=6 [m/s];
scalar angle=25 [deg];
scalar true_angle=45 [deg];
node node3=node( point1, 0 [ deg ], 0 [ deg ], angle, color = index( 36 ) );
condition condition1=transVelocity( ground, vectorX( node3 ), stone, point1, v );
scalar g=9.807 [ m/ s2 ];
gravity gravity1=parallel( reverse( projectY ), g = g );
sensor height=bodyDisplacement( ground, point1, projectY, stone, point1 );
command dynamics=constRK4( 5 [s], 0.01 [s], stepOut = 1, minTimeOut = 0 );
function height_func(d[m]) = tg(true_angle)*#d-g/2*(#d/(v*cos(true_angle)))*(#d/(v*cos(true_angle)));
command id=identification( NelderMead:,
list( identificationVariable( angle, 25 [deg], 1, lowerBound = 0 [deg], upperBound = 90 [deg] ) ),
list( identificationFunction( height_func, height, dist, 1 [m], 0 [m], 3.5 [m], 100 ) ), list( ), 0.0001, 100, dynamics );
 
/\///////////////////////////////////////////////////////////////////////////////////
set ground = ground;
 
/\///////////////////////////////////////////////////////////////////////////////////
/\ Единицы измерения;
set angle = deg;
 
На рис. 23 представлена результаты проведения Идентификации.
 
Рис. 23. Окно результатов
 
Из результатов видно, что полученный угол равен 45.008761 [deg], что соответствует заданному эталонному значению.