8.4 Пример использования команды
В качестве примера использования идентификации параметров по динамике движения рассмотрим определение угла бросания камня. Камень бросают вверх под различными углами к горизонту с одинаковой скоростью. В момент, когда высота становится равной –0.001 [m], расчет останавливается (камень упал на землю).
Пусть у нас есть результаты измерений полета камня (зависимость высоты полета от дальности) при угле бросания 25 [deg]. Эти измерения принимаются в качестве эталона.
Будем идентифицировать угол бросания по этим результатам измерений.
В данном примере:
− идентифицируемый параметр – угол бросания камня (скаляр angle);
− измеряемая характеристика – высота полета камня (датчик height). Результат измерений движения эталона содержится в функции function1;
− аргумент измерений – дальность полета камня (датчик distance).
В модели угол бросания камня равен 45 [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 ) );
set ground = ground;
sensor distance=bodyDisplacement( ground, point1, projectX, stone, point1 );
scalar angle=45 [ deg ];
node node3=node( point1, 0 [ deg ], 0 [ deg ], angle, color = index( 36 ) );
condition condition1=transVelocity( ground, vectorX( node3 ), stone, point1, 6 [m/s] );
gravity gravity1=parallel( reverse( projectY ), g = 9.807[ m/ s2 ] );
sensor height=bodyDisplacement( ground, point1, projectY, stone, point1 );
reform reform1=stop( );
event event1=reformsBySensor( list( reform1 ), height, -0.001 [ m ] );
string string1="h_d.tbl";
function function1=tablePieceLine( string1 );
command command1=identification( list( angle ), list( height ), list( function1 ), list( 1.0 [ 1/ m ] ), distance, 0 [ m ], 2.8142 [ m ], 12, 100, 0.1, 0.1 );
/\///////////////////////////////////////////////////////////
/\ Единицы измерения;
set units = SI;
Файл функции function1 (h_d.tbl)
2
distance [ m ]
height [ m ]
// distance height
0 0
0.27189 0.11453
0.54378 0.20454
0.81568 0.27003
1.0876 0.311
1.3595 0.32746
1.6314 0.3194
1.9032 0.28682
2.1751 0.22972
2.447 0.14811
2.7189 0.04198
2.8142 -0.00099998
На рис.22 приведены графики, полученные в результате решения задачи идентификации параметров по динамике движения.

Рис. 22.Идентификация угла бросания по заданной зависимости высоты полета от дальности.