лабораторная. Л.р. 5 (ОБРАБОТКА РЕЗУЛЬТАТОВ ЭКСПЕРИМЕНТА). Скорость охлаждения
Скачать 392.1 Kb.
|
56 Математическая обработка результатов эксперимента Изучая теорию интерполяции, вы познакомились с интерполяционными формулами, которые в точности воспроизводят значения данной функции в узлах интерполяции. Однако в ряде случаев выполнение этого условия затруднительно или даже нецелесообразно 1. Если заданные величины хи у являются экспериментальными данными, то могут содержать в себе существенные ошибки, т. к. получены в результате измерений или наблюдений. Поэтому построение аппроксимирующего многочлена, воспроизводящего в точности заданное значение функции, означало бы тщательное копирование допущенных при измерениях ошибок. 2. Если имеются точные значения функции в некоторых точках, но число таких точек n весьма велико, то интерполяционный многочлен будет очень высокой степени 3. Между узлами интерполяции значения интерполяционного многочлена могут сильно отклоняться от значений интерполируемой функции. Пример 2. Известный из физики закон охлаждения состоит в том, что скорость охлаждения тела пропорциональна избытку температуры тела над температурой среды, те. выражается формулой = a , где – скорость охлаждения, - избыток температуры и а – коэффициент пропорциональности (закон Ньютона. В Таблице 9 приведены опытные данные, выражающие зависимость между и для некоторого определенного тела, по которым можно определить значения коэффициента пропорциональности а. Таблица 9 220 200 180 160 140 120 100 8,81 7,40 6,10 4,89 3,88 3,02 2,30 По существу, при отсутствии ошибок измерения для определения значения a достаточно иметь лишь одно наблюдение. Однако на самом деле это не таки, как показывает Таблица 2, каждое из наблюдений дает новое значение 5 Если только разности не будут становиться постоянными. 57 a. Например, первое из наблюдений дает = 220, = 8,81, откуда, следует а = 0,040. Аналогично следующие наблюдения дают а = 0,037; 0,034; 0,031; 0,028; 0,025; 0,023. Смотря потому, каким из наблюдений мы пользуемся, зависимость между скоростью охлаждения и избытком температуры будет иметь тот или иной коэффициент пропорциональности и будет изображаться соответствующей прямой (Рисунок 17). Конечно, есть возможность по имеющимся семи наблюдениям, построить интерполяционный многочлен шестой степени, который будет в точности совпадать с наблюденными значениями. Но это совершенно ненужно, так как все эти значения содержат ошибки. Требуется по имеющимся наблюденным данным построить линейную функцию, которая для различных (в том числе и имеющихся в таблице) значений давала бы наиболее близкие значения Таким образом, возникает задача построения многочлена некоторой вполне определенной степени, но меньшей чем n - 1, который хотя и не дает точных значений функции в узлах интерполяции, но достаточно близко к ним подходит. Метод наименьших квадратов В Примере 2 рассматривалась зависимость вида = a , причем значения и получаются из наблюдений. Если бы измерения величины и производились без ошибок, то для определения коэффициента а было бы достаточно одного измерения. Если рассматривать более общую зависимость, например, = а + b, то здесь имеется два неизвестных Рисунок 17. Опытные данные Примера 2 коэффициента, для нахождения которых достаточно было бы двух абсолютно точных измерений. На самом деле, абсолютно точные измерения чаще всего невозможны. Для того, чтобы исключить влияние ошибок, производится большое число измерений. Каждое измерение дает нам уравнение, связывающее неизвестные коэффициенты. При большом числе измерений мы приходим, следовательно, к системе, число уравнений в которой значительно больше, нежели число неизвестных. Здесь ставится задача отыскания наиболее вероятных значений коэффициентов, которые, вообще говоря, не будут точно удовлетворять ни одному из уравнений системы. Эту задачу можно сформулировать в более общем виде. Пусть дана функция y = f(x; a 0 , a 1 , ..., a m ) (10) независимой переменной хит параметра a 0 , a 1 , ..., a m . Эти параметры постоянны, но заранее неизвестны и подлежат определению. Для их отыскания производится ряд измерений величин хи. Подставляя их в равенство (10), мы получаем уравнения между параметрами a 0 , a 1 , ..., a m , вида y i = f (x i , a 0 , a 1 , ..., a m ) (i =1, 2, …, n), (11) где хи соответствующие друг другу измеренные значения, а п число измерений. Если бы значениях и у находились точно, то для отыскания т + 1 параметра достаточно было бы произвести т + 1 измерение. На самом деле, значениях и у содержат ошибки, и никакие m + 1 измерений не позволят определить истинные значения параметров. Поэтому обычно производится большее число измерений (n > m + 1), в результате чего число уравнений (11) будет больше, чем число неизвестных параметров. В этом случае система (11) будет несовместной, те. точные решения каких-либо (т + 1) из уравнений системы могут неудов- летворять остальным уравнениям. Требуется найти наиболее вероятные значения неизвестных параметров Эти вероятные значения будут тем более близки к истинным, чем больше число наблюдений. Так как уравнения (11) удовлетворяются неточно, то будем иметь y i - f (x i , a 0 , a 1 , ..., a m ) = i (i = 1, 2, …, n), (12) 6 Разумеется, так поступают тогда, когда константы a 0 , a 1 , ..., a m не поддаются непосредственным измерениям, а величины хи у измерению доступны. 7 В случает система (2) была бы совместной и всегда имела бы бесчисленное множество решений. где i — отклонения измеренных значений отв ы численных по формуле (10). Принцип наименьших квадратов утверждает, что наивероятнейшими значениями параметров будут такие, при которых сумма квадратов отклонений i , будет наименьшей, те) Функцию S называют функцией невязки. Аппроксимация в видели ней ной комбинации функций Часто функцию f(x) выбирают в виде линейной комбинации подходящих функций f (x) = a 0 f 0 (x) + a 1 f 1 (x) + … + a m f m (x). (14) Условие минимума S определяется уравнениями 0 a S = 0, 1 a S = 0, ..., m a S = 0. (15) Поскольку S = n i 0 [y i – (a 0 f 0 (x) + a 1 f 1 (x) + … + a m f m (x))] 2 , (16) это условие эквивалентно системе уравнений 0 a S = 2 i=0 n [y i – (a 0 f 0 (x) + a 1 f 1 (x) + … + a m f m (x))] f 0 (x) = 0, 1 a S = 2 i=0 n [y i – (a 0 f 0 (x) + a 1 f 1 (x) + … + a m f m (x))] f 1 (x) = 0, . . . . . . . . . . . . . . . m a S = 2 i=0 n [y i – (a 0 f 0 (x) + a 1 f 1 (x) + … + a m f m (x))] f m (x) = 0. Эти m + 1 уравнений, очевидно, можно представить в виде 8 При этом мы считаем, что отклонения i подчиняются нормальному закону распределения. 60 m n i i m n i i m i n i i m i n i i i n i i a a x f x f x f x f x f x f x f x f 0 0 2 0 0 0 0 0 1 0 0 2 0 = n i i i m n i i i y x f y x f 0 0 0 (17) Так как элементы матрицы в левой части и вектора-столбца в правой определяются табличными данными, то выписанная система m + 1 линейных уравнений с m +1 неизвестными может быть решена. Можно выбрать любую функцию f(x), лишь бы она была линейной относительно своих коэффициентов. Если предполагается, что данные могли бы быть смоделированы в виде линейной комбинации произвольных функций (14), следует использовать функцию linfit, чтобы вычислить коэффициенты a i . Это так называемая аппроксимация линейной комбинацией функций Рисунок 18). linfit(vx, vy, F) Возвращает вектор, содержащий коэффициенты, чтобы создать линейную комбинацию функций издающую наилучшую аппроксимацию данных из векторов vx и vy. F – функция, которая возвращает вектор, состоящий из функций, которые нужно объединить в виде линейной комбинации. Примеры применения способа наименьших квадратов Занимаясь интерполированием функций, мы рассматривали, как говорят, точечную интерполяцию те. строили интерполяционные многочлены, значения которых точно совпадали со значениями самой функции в узлах интерполяции. Однако было указано, что возможна и другая постановка задачи, когда от интерполяционного многочлена требуется лишь, чтобы он как-то приближал заданную функцию и необязательно совпадал с ней в отдельных заданных точках. Говоря о заданной функции, мы будем подразумевать при этом, что нам известны лишь отдельные ее значения в некоторых точках 9 Мы предполагаем, следовательно, что зависимость у от х имеет вид многочлена ус неизвестными коэффициентами. Нашей задачей является нахождение по результатам наблюдений наиболее вероятных значений коэффициентов a 0 , a 1 , ..., a m 9 Можно говорить и о приближении функций, заданных аналитически. Рисунок 18. Использование функции linfit для нахождения коэффициентов в линейной комбинации функций Если бы число наблюдений в точности равнялось числу неизвестных коэффициентов, то мы имели бы дело с задачей интерполяции. Значительно более важным является тот случай, когда число наблюдений п много больше степени многочлена. В этом случае получается обычная задача способа наименьших квадратов. Требуется найти коэффициенты a 0 , a 1 , ..., a m , дающие минимум функции невязки S = n i 0 [y i – (a 0 + a 1 x + ... + a m x m )] 2 (19) Условие минимума S определяется уравнениями 0 a S = 0, 1 a S = 0, ..., m a S = 0. Условие (19) с учетом (20) эквивалентно системе уравнений = 2 i=0 n [y i – (a 0 + a 1 x i + ... + a m x i m )], 1 a S = 2 i=0 n [y i – (a 0 + a 1 x i + ... + a m x i m )] x i , . . . . . . . . . . . . . . . m a S = 2 i=0 n [y i – (a 0 + a 1 x i + ... + a m x i m )] Эти m + 1 уравнений можно представить в виде 10 Нет смысла применять метод наименьших квадратов при n т + 1. В этом случае система уравнений для определения коэффициентов a i совместна и сумма квадратов будет равна нулю при любых решениях системы. 63 (n + 1)a 0 + a 1 n i i x 0 + a 2 n i i x 0 2 + ... + a m n i m i x 0 = n i i y 0 , a 0 n i i x 0 + a 1 n i i x 0 2 + a 2 n i i x 0 3 + ... + a m n i m i x 0 1 = n i i i y x 0 , . . . . . . . . . . . . . . . . . . . a 0 n i m i x 0 + a 1 n i m i x 0 1 + a 2 n i m i x 0 2 + ... + a m n i m i x 0 2 = n i i m i y x 0 . (21) Решая систему уравнений (находим коэффициенты a 0 , a 1 , ..., a m , которые являются искомыми параметрами многочлена (18). Систему (21) можно записать компактно , , 1 1 0 0 1 1 1 11 0 10 0 0 1 01 где n i l k i l k x b 0 , , n i i k i k y x c 0 , m l k ..., , 1 , 0 , (22) (23) Используйте regress, когда нужно использовать единственный полином, чтобы приблизить все данные. Функция regress допускает использование полинома любого порядка. Однако на практике не следует использовать степень полинома выше n = 4 (Рисунок 19). Так как regress пытается приблизить все точки данных, используя один полином, это не даст хороший результат, когда данные не связаны единой полиномиальной зависимостью. Например, предположим, ожидается, что y i зависят линейно от х в диапазоне от х дохи ведут себя подобно кубическому полиному в диапазоне от х дох. Если используется regress с n = 3, можно получить хорошее приближение для второй половины, но плохое — для первой. Функция loess облегчает эти проблемы, выполняя локальное приближение. Вместо создания одного полинома, как это делает regress, loess создаёт различные полиномы второго порядка в зависимости от расположения на кривой. Она делает это, исследуя данные в малой окрестности точки, представляющей интерес. Аргумент span управляет размером этой окрестности. По мере того, как диапазон становится большим, loess становится эквивалентным regress с n = 2. Значение по умолчанию — span = 0,75. Рисунок 20 показывает, как span влияет на приближение, выполненное функцией loess. Заметьте, что меньшее значение span лучше приближает флуктуации данных. Большее значение span сглаживает колебания данных и создает более гладкую приближающую функцию. regress(vx, vy, n) Возвращает вектор, требуемый interp, чтобы найти полином порядка n, который наилучшим образом приближает данные из хи ух есть m- мерный вектор, содержащий координаты х. уесть мерный вектор, Рисунок 19. Аппроксимация полиномами различной степени с помощью функции regress содержащий координаты у соответствующие m точкам, определенным в х. loess(vx, vy, span) Возвращает вектор, требуемый interp, чтобы найти набор полиномов второго порядка, которые наилучшим образом приближают опре- делённые окрестности выборочных точек, определенных в векторах и vy. есть т-мерный вектор, содержащий координаты х vy есть m- мерный вектор, содержащий координаты у, соответствующие т точкам, определенным в Аргумент span (sрап > 0) определяет, насколько большие окрестности будет использовать loess при выполнении локального приближения. interp(vs, vx, vy, x) Возвращает интерполируемое значение у соответствующее х Вектор vs вычисляется loess или regress на основе данных изvx и vy. Рисунок 20. Влияние различных значений span на функцию loess Аппроксимирующие функции в Mathcad В пакете Mathcad представлен широкий набор функций для представления наблюденных данных уравнениями, некоторые из которых уже были рассмотрены в предыдущих разделах. В таблице 10 приведен список функций. Таблица 10 Аппроксимирующие функции в Mathcad Функция Вид аппроксимируемой зависимости Уравнение linfit(vx,vy, F) линейная комбинация функций a 1 f 1 (x) + … … + a 2 f 2 (x) + a m f m (x) regress(vx, vy, n) Полином степени n a 0 + a 1 x +…+ a n x n loess(vx, vy, span) Набор полиномов второй степени slope(vx, vy) intercept(vx, vy) линейная a + b x line(vx, vy) линейная a + b x medfit(vx, vy) линейная a + b x pwrfit(vx, vy, vg) степенная a х b + c expfit(vx, vy, vg) показательная a e bx + c logfit(vx, vy, vg) логарифмическая а ln(x + b) +c sinfit(vx, vy, vg) синусоидальная a sin(x - b) + c lgfit(vx, vy, vg) логистическая cx e b a 1 genfit( vx, vy, vg, F) нелинейная Особый интерес представляет собой функция genfit, использование которой возможно для аппроксимации в общем случае любой нелинейной зависимости. Все, что можно делать с помощью любой из функций из Таблицы 3, можно также делать, хотя в ряде случаев и менее удобно, с помощью genfit. Однако имеются случаи, когда гибкость функций, представляющих ту или иную математическую зависимость, недостаточна. Например, если данные могут быть смоделированы в виде суммы f(x) = a 1 sin(2x) +a 2 tg(3x) и все, что нужно сделать – решить уравнение относительно неизвестных коэффициентов a 1 и a 2 , значит эта проблема решается с помощью linfit. В противоположность этому, если данные должны быть смоделированы в виде суммы f(x) = 2 sin(a 1 x) +3 tg(a 2 x) и требуется найти неизвестные параметры a 1 и a 2 , то это задача для функции genfit. Таким образом, если данные должны быть смоделированы в виде х = f(x, u 0 , u 1 , . . ., u n ), нужно использовать функцию genfit, чтобы найти неизвестные параметры u i genfit(vx, vy, vg, F) Возвращает вектор, содержащий n параметров u 0 , u 1 , . . ., u n-1 , которые обеспечивают наилучшее приближение данных из vx и vy функцией f, зависящей от хи параметров u 0 , u 1 , . . ., Аргументы х- вектор значений вещественных данных х у - вектор значений вещественных данных у F– функция, которая возвращает n + мерный вектор, содержащий f и ее частные производные относительно параметров. Для нахождения частных производных необходимо использовать команду символьных преобразований Символы Переменные Дифференциалы vg - мерный вектор начальных значений для n параметров. На Рисунке 21 приведен пример использования функции genfit для определения коэффициентов степенной функции. Причем результаты расчета, полученные с использованием функции genfit, полностью совпадают с результатами использования функции pwrfit. Функции Mathcad для линейной аппроксимации Встроенные функции intercept (to intercept - отложить отрезок на линии) и slope (наклон) решают самую простую и распространенную задачу линейной аппроксимации экспериментальных данных f(x) = slope(vx, vy) x + intercept(vx, vy) slope (vx, vy) Возвращает скаляр наклон линии для данных из векторов vx и vy. intercept(vx, vy) Рисунок 21. Использование функции genfit Возвращает скаляр смещение по оси ординат линии для данных из векторов vx и vy. Рисунок 22 показывает, как можно использовать эти функции, чтобы провести линию через набор данных. В последних версиях Mathcad появились две новые функция для определения коэффициентов прямой линии, аппроксимирующей исходный набор точек. Рисунок 22. Использование функций slope и intercept line(vx, vy), medfit(vx, vy) Определяют вектор, содержащий коэффициенты линейного уравнения a + b x. Рисунок 10 показывает применение функций и medfit. А также приведено сравнение результатов вычислений поточности. Как показано на Рисунке 10, функция дает более точное приближение, нежели функция medfit. Нахождение коэффициентов для степенных функций Формулу вида у = ах с заданным показателем степени т можно привести к линейному виду, построив на оси Ох функциональную шкалу для функции Х = х т . Функция Mathcad pwrfit служит для нахождения коэффициентов для степенных функций. х, у Определяет вектор, содержащий коэффициенты для кривой показателя степени видах. Аргументы х- вектор значений вещественных данных х у - вектор значений вещественных данных у vg - вектор параметров аи св показательном уравнении. Векторы хи у должны иметь одно и тоже число элементов. Вектор оценок vg необходим для инициализации. Уменьшение значения встроенной системной переменной TOL может увеличивать точность аппроксимациис использованием функции pwrfit. На Рисунке 23 поясняется использование функции. Подбор коэффициентов для показательных функций Из наиболее часто встречающихся на практике зависимостей осталось рассмотреть зависимость вида y = a e bx (25) Функция Mathcad expfit служит для нахождения коэффициентов для степенных функций. expfit х, у Определяет вектор, содержащий коэффициенты для кривой показателя степени вида a e bx + c. Аргументы х- вектор значений вещественных данных х у - вектор значений вещественных данных у vg - вектор параметров аи св показательном уравнении. Векторы хи у должны иметь одно и тоже число элементов. Вектор оценок vg необходим для инициализации. Уменьшение значения Рисунок 23. Аппроксимация данных с использованием функции prwfit встроенной системной переменной TOL может увеличивать точность аппроксимации с использованием функции expfit. На Рисунке 24 поясняется использование функции. Сглаживание данных эксперимента Сглаживание предполагает использование набора значений у (и, возможно, x) и возвращение нового набора значений у, который является более гладким, чем исходный набор. В отличие от аппроксимации, сглаживание приводит к новому набору значений у, а не к функции, которая может оценивать значения между заданными точками данных. Функция supsmooth использует симметричную линейную процедуру сглаживания Методом наименьших квадратов по правилу k- ближайших точек, чтобы выполнить локальную линейную аппроксимацию исходных данных. supsmooth адаптивно выбирает различную ширину полосы сглаживания для различных частей данных. supsmooth(vx,vy) Возвращает мерный вектор, созданный локальным использованием симметричной линейной процедуры сглаживания методом наименьших квадратов по правилу ближайших точек, в которой k выбирается адаптивно. Аргументы vx,vy – мерные векторы вещественных чисел. Элементы vx должны быть расположены в порядке возрастания. Рисунок 25 показывает пример использования функции supsmooth для сглаживания экспериментальных данных. В Mathcad имеется еще 2 функции для сглаживания экспериментальных данных. Сглаживание с помощью функции ksmooth полезно, когда данные взяты в точках, отделяемых друг от друга интервалами примерно равной ширины. ksmooth(vx,vy, b) Возвращает мерный вектор, созданный сглаживанием при помощи гауссова ядра данных из вектора vy. Аргументы vx,vy – мерные векторы вещественных чисел b - параметр, управляет окном сглаживания и должен быть в несколько раз больше величины интервала между точками х. Рисунок 24 . Аппроксимация данных с использованием функции expfit Функция medsmooth наиболее устойчивая из трех, так как в меньшей степени подвержена влиянию зашумленных данных. medsmooth(vy, m) Возвращает мерный вектор, созданный сглаживанием вектора vy с помощью скользящей медианы. Аргументы vx,vy – мерные векторы вещественных чисел m - ширина окна, по которому происходит сглаживание, причем m должно быть нечетным числом и m < n. Порядок выполнения работы Упражнение 1 . Из файлов данных С:\Variant\vх*.txt и С где * - номер варианта, используя функцию READPRN, сформировать векторы хи соответственно. С помощью функции length определить число элементов n в векторах хи у. Упражнение 2 . Аппроксимировать многочленами ой, ой и ой степеней по методу наименьших квадратов функцию, заданную таблицей значений x i и y i . Сравнить качество приближений, вычислив сумму квадратов отклонений для каждого случая. Построить графики многочленов и отметить узловые точки (x i , y i ). Указание составить нормальную систему метода наименьших квадратов и решить ее с помощью встроенной функции lsolve. Упражнение 3 . Для сформированных данных (x i , определить параметры линейной зависимости с использованием встроенных функций Mathcad: slope и intercept; line; medfit. Отобразить графически совокупность точек векторов x i и y i и результаты проведенной аппроксимации. Упражнение 4 . Аппроксимировать данные из векторов x i и y i полиномами 2 и ой степени при помощи функций regress и interp; наборами полиномов второго порядка с помощью функций loess и interp, (при span равном 0,6 и 2,0). Отобразить графически результаты аппроксимации. Рисунок 25. Сглаживание зашумленных данных с помощью функции supsmooth Упражнение 5 . Аппроксимировать экспериментальные данные из таблиц значений x i и y i линейной комбинацией функций f(x) = a 1 f 1 (x) + a 2 f 2 (x) + a 3 f 3 (x). Коэффициенты вектора а найти с помощью функции linfit. Отобразить графически совокупность точек векторов x i и y i и результаты проведенной аппроксимации. Таблица 11 Варианты упражнения варианта sin x x 4 arctg x ln ln x sin x 5 2 / 2 e x 1 / x e -x 6 x x 2 1 10 cos x cos x 7 ) e 1 ( 1 2 x 1 2 x cos x 8 cos(x/2) 2 - cos x sin(x/2) 9 1/(1 + e x ) x arctg sin (3x) 10 ln (x + 5) 1 x sin x 11 1 / x 1 x 1 / x 2 12 cos x 1/(1 + x + x 2 ) 1/(1 + x) 13 e x cos4x - e x/2 14 x e 1 e x/3 sin 2 (3x) 15 1/(1 + x + x 2 ) Упражнение 6 . Аппроксимировать экспериментальные данные из таблиц значений x i и y i функцией вида 74 2 2 Параметры вектора u найти с помощью функции genfit. Отобразить графически совокупность точек векторов x i и y i и результаты проведенной аппроксимации Упражнение 7 . Зависимость между величинами x и y (Таблица 12) описывается функцией y = f(x, a, b), где a и b – неизвестные параметры. Найти эти параметры с помощью функций pwrfit или expfit в зависимости от варианта. Таблица 12 Варианты упражнения варианта, Величины хи уху х 0.1; 0.4; 0.9; 1.2; 1.6; 2 уху 4 a e х 1; 1.6; 1.9; 2.2; 2.6; 3 уху 6 a e х 1; 1.2; 1.4; 1.5; 1.8; 2 уху 8 a e х 0.1; 0.6; 0.9; 1.2; 1.5; 2 уху 10 a e х 0.1; 0.6; 0.9; 1.2; 1.5; 2 уху 16.77; 20.78 12 a e х 0.1; 0.2; 0.25; 0.5; 0.9; 1 уху 14 a e х 0.1; 0.2; 0.4; 0.5; 0.8; 1 уху Упражнение 8 . Используя функцию равномерного распределения rnd, создать вектор данных у, претерпевающих случайное искажение с амплитудой 0.1v: y i := cos(x i ) rnd (0.1 v) где v - номер вариантах. Выполнить сглаживание экспериментальной функции, заданной таблицей значений x i и y i , с помощью встроенной функции Маthcad supsmooth. Результаты сглаживания отобразить графически. Упражнение 9 . Выполнить сглаживание экспериментальной функции, заданной таблицей значений x i и y i (см. Упражнение 8), используя встроенные функции Маthcad: medsmooth и ksmooth. Результаты сглаживания отобразить графически. Контрольные вопросы 1. В каких случаях применение интерполяции нецелесообразно 2. В чем состоит принцип наименьших квадратов 3. Влияет ли число наблюденных данных на число параметров в аппроксимируемой функции 4. С помощью какой функции в Mathcad возможна аппроксимация в виде линейной комбинации функций 5. Каким образом можно определить вид аппроксимирующей функции 6. Назовите функции полиномиальной аппроксимации в Mathcad. 7. Назовите функции Mathcad для линейной аппроксимации. 8. Назовите особенности определения коэффициентов для степенных функций. 9. Назовите особенности определения коэффициентов для показательных функций. |