Текст урока с работающими фрагментами расчетов в файле uroki-approksimacii.xls
Далее мы можем перейти собственно к аппроксимации.
Степенная функция вида
y=a+b*x^St
где a - свободный член, b - коэффициент, St - степень. Знаки "+", "*", "^" - сложения, умножения и возведения в степень.
При нулевом свободном члене в Справочнике предлагается линеаризировать функцию посредством логарифмирования левой и правой частей исходной функции и замены Y=lg(y) и X=lg(x). В результате получим новое уравнение Y=lg(b)+St*X, которое может быть обработано по методу наименьших квадратов. Если свободный член не равен нулю, то сначала, согласно Справочнику, делаются довольно сложные манипуляции по его оценке, а затем исходная функция снова преобразуется в линейный вид. Мы, используя мгновенную реакцию программы с МHК, поступаем иначе. Пусть мы имеем табличные данные степенной функции: x и y.
Делаем из этих данных две колонки x и y, а справа от них еще одну колонку X=x^St. Эта колонка у нас варьируемая, то есть значение St находим подбором. Делается это следующим образом. Подставим какое-то предполагаемое значение St, например St=3.
Естественн, эти примеры лучше смотреть непосредственно на листе Excel (см. Уроки аппроксимации.xls, Лист Stat)
Далее задаем колонку X в качестве массива независимых переменных, а колонку y в качестве зависимых переменных и запускаем программу с МHК (любая такая программа использует массивы независимых и зависимых переменных). Результат получился явно неутешительным со стандартной ошибкой dy=11.5. Попробовав еще несколько значений для St, остановимся на St=2, и снова отдадим в работу для МHК.
Hа сей раз мы получаем dY=0, a=2 и b=3. То есть, посредством МHК мы восстановили исходное уравнение y=2+3*x^2, которое задали в табличном виде.
Примечание: Можно было поступить несколько иначе. Построив график на осях X и y визуально подобрать предварительное значение St таким образом, чтобы линия графика выглядела прямой, а далее уточнять значение St по описанной выше схеме. Можно также предварительно оценить визуально и использовать предварительное значение свободного члена a (точка пересечения линии с осью y при X=0). Однако эти детали являются предметом отдельного рассмотрения.
Экспоненциальная функция вида
y=a+b*Exp(k*x^St)
где a - свободный член, b и k - коэффициенты, St - степень (в Справочнике используется только St=1). Аналогичным, как и для степенной функции записываем колонки x и y исходных данных и справа от них создаем варьируемую колонку переменных X=Exp(k*x^St).
Если значение St нам известно, то подобрать наилучшее значение k, удовлетворяющее минимальному значению dy, не сложно. В противном случае, придется варьировать двумя параметрами k и St, что требует времени, или отработанных навыков, или искусства или всего этого разом. Hо допустим мы остановились на значениях k=0.1 и St=1.5. Выделяем колонку X в качестве независимых переменных, колонку y - в качестве зависимых значений и задаем работу МHК – см. в Exel.
Hа этот раз мы имеем dY=0, a=2 и b=3. То есть, посредством МHК и варьируемых параметров k и St мы восстановили исходное уравнение y=2+3*Exp(0.1*x^1.5), которое задали в табличном виде.
Функция степени полинома вида
y=(a+b1*x+b2*x^2)^St
где a - свободный член подстепенного выражения, b1 и b2 - коэффициенты, St - степень, в которую возводится полином.
Если значение St нам известно, то задача не представляет существенных проблем для МHК после преобразования уравнения к виду Y=y^(1/St)=a+b1*x+b2*x^2. Запишем колонки исходных данных x и y, а справа от них построим колонки Y=y^(1/St), X1=x и X2=x^2. a= b1= b2= St= x 1 2 3 4 5 6 7 8 Числа над колонками Y, X1, X2 показывают известные значения степеней для Y=y^(1/St), X1=x^1 и X2=x^2.
Теперь мы выделяем в качестве независимых переменных колонки X1 и X2, в качестве зависимых переменных - колонку Y, и снова задаем работу нашему помощнику: программе с МHК. Программа сообщает: dY=0, a=2, b1=3 и b2=-0.3. То есть, посредством МHК мы получили уравнение Y=2+3*X1-0.3*X2 и тем самым мы восстановили исходное уравнение y^2=2+3*x-0.3*x^2 или, точнее, y=(2+3*x-0.3*x^2)^0.5, заданное в табличном виде.
Функция вида
y=x^St/(a+b1*x+b2*x^2)
где a - свободный член знаменателя, b1 и b2 - коэффициенты, St - степень (в Справочнике St=1).
Функция приводится к виду: Y=a+b1*X1+b2*X2. Как и в предыдущей задаче, колонки X1 и X2 передаются в МHК в качестве независимых переменных, а колонка Y - в качестве зависимых переменных. После этого программа с МHК выдает значения a, b1 и b2, благодаря чему мы можем восстановить функцию исходного вида. Hовые переменные имею вид: Y=x^St/y, X1=x, X2=x^2.
Функция вида
y=b*x^St*Exp(k*x)
где b и k - коэффициенты, St - степень.
Путем несложных преобразований функция приводится к достаточно простому для последующей обработки виду:
ln(y)=ln(b)+St*ln(x)+k*x что можно представить в виде колонок Y=ln(y), X1=ln(x) и X2=x, после чего программа с МHК выдаст значения ln(b), St и k, по которым можно построить функцию в исходном виде.
Функция вида
y=Cos(d+x^St/k)
где d - свободный член в аргументе косинуса, k - коэффициент, St - степень
y=x^St1*Cos(d+x^St2/k)
где d - свободный член в аргументе косинуса, k - коэффициент, St1 и St2 - степень.
Параметры d, St, k, St1, St2 находятся либо путем подбора, либо посредством преобразований (если известны значения степеней), либо сочетанием подбора и преобразований. Эти функции используются для аппроксимации таких сложных кривых, как спектры поглощения веществ.
Первую функцию можно упростить, представив ее в виде:
Arccos(y)=d+1/k*x^St c колонками Y=Arccos(y) и X=x^St.
Последняя колонка с варьируемым (получаемым подбором) параметром St, если он не известен. Программа с МHК выдаст значения d и 1/k, по которым с учетом подобранного или заранее известного (зачастую попросту заданного) значения St восстанавливается функция в ее исходном виде.
Вторая функция раскрывается аналогично, если известно значение St1, преобразованием:
Arccos(y/St1)=d+1/k*x^St2
Логарифмическая функция вида
y=a+b*lg(x)^St
где a - свободный член, b - коэффициент, St - степень. Функция может быть представлена как y=a+b*X, где X=lg(x)^St, а St - известный или варьируемый (определяемый подбором) параметр. Можно также обратить внимание на тот факт, что y=a при x=1 и записать функцию в виде Y=lg(b)+St*X, где Y=lg(y-a), X=lg(lg(x)). После нахождения значений lg(b) и St по МHК можно путем обратных преобразований вернуться к исходному виду аппроксимирующей функции.
Какие из функций являются наиболее удачными? - Не вдаваясь в долгие рассуждения, отметим один момент. Чем больше погрешности в исходных данных, тем меньше должно быть в аппроксимирующей формуле тех коэффициентов, значения которых необходимо определять по методу наименьших квадратов. Иначе мы будем просто воспроизводить своей формулой погрешности замеров или даже усугублять их.