Deutsch

Delphi, C++, высшая математика

23.11.05 10:31
Re: Delphi, C++, высшая математика
 
barmaglot завсегдатай
barmaglot
в ответ Tomasson 22.11.05 22:17
Нет, никакая из рисовалок тебе функции подбирать не будет, а уж гнуплот и подавно . Надо глазом смотреть, на что кривая похожа, какого типа функцией можно попробовать её описать. Если, например, вначале слегка падает, а потом растёт -- может быть похожа на ... ну не знаю, на потенциал для квантового осциллятора, например. Или на параболу, которая сшивается с гиперболическим тангенсом. Тут больше шаманства, чем математики. Потом в эту функцию начинаешь совать побольше свободных параметров (масштабирующих высоту, ширину, фазу и ещё Бог знает что). А потом решаешь задачу оптимизации: при каких значениях этих параметров какая-то характерная величина (скажем, сумма квадратов отклонений точек полученной кривой от экспериментальных точек, или, например, минимальное отклонение точки кривой от эксперимента) будет иметь экстремум. В любой библиотеке есть подпрограмма, которая этим занимается, в IDL это CUIRVEFIT.pro, но, конечно, можно и кустарными методами, например, методом секущих с контролем сходимости из NumRec. Самое сложное здесь -- подобрать удачное начальное приближение для параметров, если параметров много, то легко можно "упасть" в неподходящую потенциальную яму. Нашёл экстремум, смотришь -- а лежат ли все точки полученной функции внутри допустимого интервала. Лежат -- идёшь пить пиво. Нет -- горько плачешь и начинаешь шаманствовать над другой функцией. Если лежат, но не все, можно попробовать на менять функцию, а прибавить к ней возмущение, существенное только в той области, где отклонение неподходящее. Вообще, сделать такой процесс автоматическим, без участия человека, ИМХО можно только в небольшом числе случаев, когда кривые на выходе подобны. Более того, невозможно гарантировать что для одной прекрасной кривой ранним весенним утром такой аппроксиматор не склеит ласты и добрый клапан не затопит всю Калининскую (?) губернию.
 

Перейти на