Апроксимация функции методом наименьших квадратов

Практическое освоение типовых вычислительных методов прикладной математики. Определение аппроксимирующей функции. Разработка алгоритмов и программ на языке высокого уровня. Основные принципы модульного программирования и техника использования подпрограмм.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 11.11.2013
Размер файла 549,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Цель работы

Настоящая курсовая работа является завершающим этапом дисциплины "Программирование на языке высокого уровня" и требует от студента в процессе ее выполнения:

а) практического освоения типовых вычислительных методов прикладной математики;

б) совершенствования навыков разработки алгоритмов и построения программ на языке высокого уровня;

в) освоения принципов модульного программирования и техники использования подпрограмм;

г) исследования нескольких вариантов решения предложенного задания и выбора лучшего варианта по заданному критерию.

Практическое выполнение курсовой работы предполагает решение типовых инженерных задач обработки данных с использованием методов матричной алгебры, решение систем линейных алгебраических уравнений. Навыки, приобретаемые в процессе выполнения курсовой работы, являются основой для использования вычислительных методов прикладной математики и техники программирования в процессе изучения всех последующих дисциплин, а также при выполнении курсовых и дипломных проектов.

аппроксимирующий функция программа алгоритм

1. Постановка задачи

1.1 Условие задачи

Исходная функциональная зависимость представлена в таблице парами значений xi и yi .

Найти параметры (С1,С2,С3) аппроксимирующей функции y = C1 + C2*x3*e-x , пользуясь МНК. Поиск параметров осуществить, используя условия локального минимума критерия аппроксимации (т.е. решая систему нормальных уравнений). Оценить погрешность аппроксимации посредством критерия качества J и максимального по модулю отклонения аппроксимирующей функции от исходной.

Условие задачи представлено в Таблице 1-Табличное представление исходных данных

Таблица 1-Табличное представление исходных данных

Табличные значения X и Y

Базисные функции

Метод

решения

Ц1(x)

Ц2(x)

Ц3(x)

i

1

2

3

4

5

1

x

e-x

Гаусс

x

1,1

2,1

3,1

4,1

5,1

y

0,1

0,4

0,9

1,6

2,5

1.2 Теоретическая часть

При изучении зависимостей между величинами важной задачей являетсяприближенное представление (аппроксимация) этих зависимостей с помощью известных функций или их комбинаций, подобранных надлежащим образом. Подход к такой задаче и конкретный метод ее решения определяются выбором используемого критерия качества приближения и формой представления исходных данных.

Пусть изучается связь между величинами и , из которых первая рассматривается в качестве независимой переменной, а вторая - ее функции. Исходные данные представлены значениями , заданными на некотором множестве значений X. Тогда ошибка приближения этой зависимости некоторой аппроксимирующей функции y = (x) для каждого из значений X может быть оценена разностью

y x , x .

Возможны случаи дискретного и непрерывного представления М.

1. Значения y = yi заданы для конечного множества (n) значений xi , (i=1, 2,…, n). Тогда для каждого из этих значений определена и ошибка (рис. 1)

2. Задана функция y=f(x), определяющая значения y для всех точек некоторого интервала [a, b]. Для тех же значений определена и ошибка (рис. 2)

= (x) = f(x) - (x) , x [a, b] ,

являющаяся непрерывной функцией x.

На основе изучения ошибок формируются различные критерии качества аппроксимации, служащие для определения наилучшей аппроксимирующей функции (x). Один из распространенных подходов опирается на использование метода наименьших квадратов (МНК), в соответствии с которым наилучшей считается такая аппроксимирующая функция (x), для которой достигается наименьшее значение суммы квадратов ошибок во всех точках x, принимаемых во внимание.

Применительно к случаю 1 это требование принимает вид

.

В случае 2 операция суммирования в конечном множестве точек должна быть заменена операцией интегрирования квадрата ошибки (1.2) по всему интервалу [a, b] и условие МНК записывается следующим образом:

.

В настоящей курсовой работе исходные данные заданы в виде табличной зависимости yi (xi), то есть рассматривается решение задачи для случая 1. Уточним условия МНК для этой задачи.

Задача. Зависимость между переменными x и y задана их значениями в отдельных точках , . Требуется найти функцию , наилучшим образом (в смысле МНК) аппроксимирующую указанную зависимость (см. рис. 1).

В соответствии с требованием (1.3) наилучшая аппроксимирующая функция должна быть определена из условия

.(1.5)

Подобное задание исходных данных встречается в задачах технических измерений и их статистической обработки, когда для каждого из задаваемых значений осуществляется измерение величины (сопровождающееся возможными ошибками). Аппроксимация позволяет представить изучаемую связь между x и y с помощью известных функций, что облегчает последующее использование данных, кроме того позволяет "сгладить" возможные ошибки измерений, а также дает возможность оценивать значения переменной в точках x интервала , не совпадающих с заданными (т.е. решать задачу интерполяции).

Аппроксимирующую функцию ц(x) выбирают из некоторого семейства функций, для которого задан вид функции, но остаются неопределенными (и подлежат определению) ее параметры С1, С2, …, Сm , т.е.

(x) = (x, С1, С2,…, Сm) . (1.6)

Определение аппроксимирующей функции ц разделяется на два основных этапа:

подбор подходящего вида функции ц(х) ;

нахождение ее параметров в соответствии с критерием МНК.

Подбор вида функции ц(х) представляет собой сложную задачу, решаемую методом проб и последовательных приближений. Исходные данные, представленные в графической форме (семейства точек или кривые), сопоставляются c семействами графиков ряда типовых функций, используемых обычно для целей аппроксимации.

Общая методика решения

После того как выбран вид аппроксимирующей функции ц(х) (или эта функция задана) и, следовательно, определена функциональная зависимость (2.6), необходимо найти в соответствии с требованиями МНК значения параметров С1, С2, …, Сm .

Как уже указывалось, параметры должны быть определены таким образом, чтобы значение критерия в рассматриваемой задаче (1.5) было наименьшим по сравнению с его значениями при других возможных значениях параметров.

Для решения задачи подставим выражение (1.6) в выражение (1.5) и проведем необходимые операции суммирования. В результате величина J , именуемая в дальнейшем критерием аппроксимации, представится функцией искомых параметров

J = J1, С2, …, Сm) . (1.7)

Последующие действия сводятся к отысканию минимума этой функции J переменных Сk . Определение значений Сk = Сk* , k = 1, 2, …, m , соответствующих этому минимуму J, и является целью решаемой задачи.

Возможны следующие два подхода к решению этой задачи: использование известных условий минимума функции нескольких переменных или непосредственное отыскание точки минимума функции каким-либо из численных методов.

Для реализации первого из указанных подходов воспользуемся необходимыми условиями минимума функции (2.7) нескольких переменных [4, c. 21 - 26], в соответствии с которыми в точке минимума должны быть равны нулю частные производные этой функции по всем ее аргументам

?J / ?Ck = 0 , (k = 1, 2, …, m) . (1.8)

Полученные m равенств следует рассматривать как систему уравнений относительно искомых значений С1, С2 ,…, Сm. При произвольном виде функциональной зависимости (2.6) уравнения (2.8) оказываются нелинейными относительно величин Сk , и их решение требует применения приближенных численных методов.

Используемые равенства (2.8) дают лишь необходимые, но не достаточные условия минимума функции (2.7). Поэтому требуется уточнить, обеспечивают ли найденные значения Сk* именно минимум функции J1, С2, …, Сm). В общем случае такое уточнение выходит за рамки данной курсовой работы, и предлагаемые для курсовой работы задания подобраны так, что найденное решение системы (2.8) отвечает именно минимуму J. Однако, поскольку величина J неотрицательна (как сумма квадратов) и нижняя ее граница есть 0 (J=0), то, если существующее решение системы (2.8) единственно, оно отвечает именно минимуму J.

Уравнения (2.8), встречающиеся в МНК, называются нормальными, поэтому описываемый способ решения задачи условимся называть методом нормальных уравнений.

Структура этих уравнений получается более простой в том важном частном случае, когда аппроксимирующая функция (x) выбирается линейной функцией искомых параметров Сk и выражение (2.6) имеет вид

(1.9)

где Сk - определяемые параметры; 1(x), 2(x),…, m(x) - система некоторых линейно-независимых функций, называемых в курсовой работе базисными функциями.

Замечание. Функции 1(x), 2(x),…, m(x) называются линейно-независимыми, если при любых x равенство

справедливо только тогда, когда все Сk =0.

В этом случае, подставляя (1.9) в выражение (1.5) и выполняя дифференцирование в соответствии с (1.8), получим систему уравнений относительно искомых Сk .

Покажем получение системы нормальных уравнений в общем случае для m базисных функций. Раскроем выражение аппроксимирующей функции

(x) = С1 1(x) + С2 2(x) +…+ Сm m(x)

и подставим его в формулу критерия аппроксимации (1.5)

. (1.10)
Применим операцию дифференцирования (1.8) к параметру С1 :

и, выполняя необходимые алгебраические преобразования, получим уравнение

Аналогичные уравнения можно получить, применяя описанные выше операции по отношению к переменным С2 ,…,Сm . Эти уравнения образуют систему нормальных уравнений:

a11 С1 + a12 С2 +…+ a1m Сm = b1

a21 С1 + a22 С2 +…+ a2m Сm = b2 (1.11)

am1 С1 + am2 С2 +…+ am m Сm = bm ,

где коэффициенты ak l и величины bk (k, l = 1, 2,…, m) определяются выражениями

(1.12)

Уравнения (1.11) представляют собой систему линейных алгебраических уравнений.

Преимущество использования линейного представления (1.9) аппроксимирующей функции (x) состоит в том, что в этом случае однозначно решается вопрос о минимуме величины J. Действительно, если решение системы линейных уравнений (1.11) существует, то оно единственно ], поэтому необходимые условия (1.8) являются в данном случае и достаточными условиями минимума функции J(С1, С2 ,…, Сm).

2. Ручной счет

Критерий аппроксимации (см. подразд. 1.2).

Согласно условию (1.5):

J(C1, С2 ,C3 ) = min .

В соответствии с требованием использования условий локального минимума (1.9) условия минимума J

=0 , =0 , =0

= 2() ,

= = 2() ,

=2(),

т.е. нормальные уравнения имеют вид

2() =0,

2()=0,

2( )=0,

Введем обозначения

a11=5 ; a12= ; a13 = ; b1= ,

a21= ; a22= ; a23 =; b2= ,

a31= ; a32= ; a33 = ; b3=.

Тогда систему нормальных уравнений можно записать посредством матричных обозначений

A*C=B,

где A= матрица коэффициентов нормальных уравнений;

C= вектор-столбец неизвестных (искомых параметров);

B= вектор-столбец свободных членов системы.

Вычисление коэффициентов нормальных уравнений.

а11 = 5

а12 =15,5

а13=0,521

в1 = 5,5

а21 = 15,5

а22 = 58,05

а23 =0,857

в2 =23,05

а31=0,521

а32=0,857

а33=0,127

в3 = 0,163

Система нормальных уравнений имеет вид

Решение системы нормальных уравнений методом Гаусса:

-0.063*С3=-0.191

С3=3,03

С2=0,83

С1=-1,78

Искомая аппроксимирующая функция :

y(x) =3,03+0,83x?1,78e-x;

Оценка погрешности аппроксимации.

Для оценки среднеквадратичного и максимального по модулю отклонений аппроксимирующей функции от исходной представим результаты проведенных вычислений в виде таблицы 2 и рисунка 3

Таблица 2

i

xi

yi

y(xi)

i = yi - y(xi)

1

2

3

4

5

1,1

2,1

3,1

4,1

5,1

0,1

0,4

0,9

1,6

2,5

0,138

0,332

0,929

1,671

2,471

-0,038

0,068

-0,029

-0,071

0,029

Тогда минимальное значение качества аппроксимации

Jmin = J(С1,C2,С3) =0,0127 ,

а максимальное по модулю отклонение, получаемое сопоставлением найденных значений , составляет

max | | = 0.071 при x = x4 = 4,1 .

3. Алгоритм программы

3.1 Схема основного алгоритма

3.2 Схема алгоритма процедуры

4. Текст программы

uses crt;

function phi1 ( x:real ):real;

begin

phi1 := 1;

end;

function phi2 ( x:real ):real;

begin

phi2 := x;

end;

function phi3 ( x:real ):real;

begin

phi3 := exp(-x);

end;

var

A : array[1..3,1..3] of real;

B : array[1..3] of real;

C : array[1..3] of real;

x, y : array[1..5] of real;

Ix2, m, r1, r2, r3, r4, r5, r6, r7, r8, r9, t1, t2, t3, S, dgi, q, pog, Ii, Pmax : real;

Ix, Iy, Ix1, Iy1, i, j, n, k, g : integer;

function phi ( x:real ):real;

begin

phi := ( c[1]*phi1(x)+c[2]*phi2(x)+c[3]*phi3(x));

end;

begin

{Bbod zadannyx zna4eniy}

x[1]:=1.1;

x[2]:=2.1;

x[3]:=3.1;

x[4]:=4.1;

x[5]:=5.1;

y[1]:=0.1;

y[2]:=0.4;

y[3]:=0.9;

y[4]:=1.6;

y[5]:=2.5;

{pac4et elementov matric A u B}

r1:=0;

r2:=0;

r3:=0;

r4:=0;

r5:=0;

r6:=0;

r7:=0;

r8:=0;

r9:=0;

t1:=0;

t2:=0;

t3:=0;

for i := 1 to 5 do begin

a[1,1]:=phi1(x[i]);

r1 := r1+ a[1,1];

a[1,2]:=phi2(x[i]);

r2 := r2+ a[1,2];

a[1,3]:=phi3(x[i]);

r3 := r3+ a[1,3];

a[2,1]:=phi2(x[i]);

r4 := r4+ a[2,1];

a[2,2]:=sqr(phi2(x[i]));

r5 := r5+ a[2,2];

a[2,3]:=phi3(x[i])*phi2(x[i]);

r6 := r6+ a[2,3];

a[3,1]:=phi3(x[i]);

r7 := r7+ a[3,1];

a[3,2]:=phi2(x[i])*phi3(x[i]);

r8 := r8+ a[3,2];

a[3,3]:=sqr(phi3(x[i]));

r9 := r9+ a[3,3];

b[1] := y[i];

t1 := t1+b[1];

b[2] := y[i]*phi2(x[i]);

t2 := t2+b[2];

b[3] := y[i]*phi3(x[i]);

t3 := t3+b[3];

end;

a[1,1]:=r1;

a[1,2]:=r2;

a[1,3]:=r3;

a[2,1]:=r4;

a[2,2]:=r5;

a[2,3]:=r6;

a[3,1]:=r7;

a[3,2]:=r8;

a[3,3]:=r9;

b[1] := t1;

b[2] := t2;

b[3] := t3;

writeln('Bazisnye fynkcii');

writeln(' phi1(x) = 1');

writeln(' phi2(x) = x');

writeln(' phi3(x) = exp(-x)');

writeln('Aprokcimipyysha9 f-9');

writeln(' phi(x) = 1*c1 + x*c2 + exp(-x)*c3');

writeln('Tablyca zna4eniy');

write(' xi = ');

for i := 1 to 5 do

write(x[i]:3:2,' ');

writeln;

write(' yi = ');

for i := 1 to 5 do

write(y[i]:3:2,' ');

writeln;

writeln('Matrica A');

for i := 1 to 3 do begin

write(' ');

for j := 1 to 3 do begin

write(a[i,j]:5:2);

write(' ');

end;

writeln;

end;

writeln('Ctolbec cBobodnyx 4lenov');

for i := 1 to 3 do begin

write(' ');

writeln(b[i]:5:2);

end;

{Peshenie metodom Gaussa}

n := 3;

for k := 1 to n-1 do

for i := k+1 to n do

begin

m := a[i,k]/a[k,k];

a[i,k] := 0;

for j := k+1 to n do

a[i,j] := a[i,j] - m*a[k,j];

b[i] := b[i] - m*b[k];

end;

readkey;

c[n] := b[n]/a[n,n];

c[n-1] := (b[n-1] - c[n] * a[2,3])/a[2,2];

c[n-2] := (b[n-2] - a[1,2] * c[n-1] - a[1,3] * c[n])/a[1,1];

writeln('Koefficienty');

for i := 1 to 3 do

writeln(' c[',i,'] = ',c[i]:5:3,' ');

{Pascet novyx zna4eniy y}

Ii:=0;

Pmax:=0;

g:=0;

writeln('Hovye zna4eni9 y u pogreshnocti');

for i := 1 to 5 do begin

dgi := c[1]*phi1(x[i]) + c[2] * phi2(x[i]) + c[3] * phi3(x[i]);

write('y[',i,'] = ',dgi :5:3,' ');

pog:=y[i]-dgi;

writeln('pog =',pog :5:3,' ');

q:=sqr(pog);

Ii:=Ii+q;

if Pmax<pog

then begin Pmax:=pog; g:=i; end;

end;

writeln('Cymma kvadratov pogreshnostey');

writeln(Ii:5:3);

writeln('MaksimalHoe zHa4eHie pogreshnosti');

writeln('Pmax=',Pmax:5:3,' Pri x=',x[g]:5:3);

readkey

end.

5. Результаты машинных расчетов

Результаты машинных расчетов представлены на рисунке 4

Рисунок 4 - Результаты машинных расчетов;

Выводы

Вывели аппроксимирующую функцию для пяти заданных точек (x и y),описываемую тремя заданными базисными функциями (Ц1(x)=1, Ц2(x)=x, Ц3(x)=e-x), методом наименьших квадратов.

Рассчитали минимальное значение качества и максимальное по модулю отклонение, получаемое сопоставлением найденных значений дi.

Коэффициенты аппроксимирующей функции(C1,C2,C3) рассчитывались методом Гаусса. Для вычисления использовали как ручной, так и машинный методы.

Размещено на Allbest.ru

...

Подобные документы

  • Основные методы и алгоритмы исследования. Нахождение минимума среднеквадратичного отклонения. Особенности решения нормальных уравнений. Параметры линейной аппроксимирующей функции. Расчет значений аппроксимирующей функции и среднеквадратичного уклонения.

    курсовая работа [749,3 K], добавлен 08.06.2019

  • Развитие навыков работы с табличным процессором Microsoft Excel и программным продуктом MathCAD и применение их для решения задач с помощью электронно-вычислительных машин. Схема алгоритма. Назначение функции Линейн и метода наименьших квадратов.

    курсовая работа [340,4 K], добавлен 17.12.2014

  • Аппроксимация эмпирических данных линейной и квадратичной зависимостью. Теория корреляции: расчет коэффициентов детерминированности. Построение алгоритма и вычисление приближённых функций методом наименьших квадратов в среде программирования Turbo Pascal.

    курсовая работа [766,6 K], добавлен 26.12.2011

  • Сравнительный анализ наиболее распространенных языков, их классификация, описание достоинств и недостатков. Использование процедур, функции и подпрограмм в языках программирования высокого уровня. Разработка и реализация программы "Бортовой компьютер".

    курсовая работа [329,8 K], добавлен 22.06.2014

  • Решение задач прикладного программирования. Оформление разработанных алгоритмов в виде графических схем. Написание программ с использованием подпрограмм, их отладка. Блок-схемы и листинг программ. Наборы тестов для отладки разработанных программ.

    курсовая работа [575,8 K], добавлен 06.12.2013

  • Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.

    курсовая работа [381,7 K], добавлен 10.05.2018

  • Разработка алгоритма аппроксимации данных методом наименьших квадратов. Средства реализации, среда программирования Delphi. Физическая модель. Алгоритм решения. Графическое представление результатов. Коэффициенты полинома (обратный ход метода Гаусса).

    курсовая работа [473,6 K], добавлен 09.02.2015

  • Обзор методов аппроксимации. Математическая постановка задачи аппроксимации функции. Приближенное представление заданной функции другими, более простыми функциями. Общая постановка задачи метода наименьших квадратов. Нахождение коэффициентов функции.

    курсовая работа [1,5 M], добавлен 16.02.2013

  • Анализ методов идентификации, основанных на регрессионных процедурах с использованием метода наименьших квадратов. Построение прямой регрессии методом Асковица. Определение значения дисперсии адекватности и воспроизводимости, коэффициентов детерминации.

    курсовая работа [549,8 K], добавлен 11.12.2012

  • Разработка программы на языке высокого уровня, позволяющей для заданной функции рассчитать определенный интеграл приближенным и точным методом, оценить погрешность и вывести результаты на консоль. Определение площади методом входящих прямоугольников.

    курсовая работа [225,4 K], добавлен 18.08.2012

  • Построение аппроксимирующей зависимости методом наименьших квадратов. Расчет интеграла по Ричардсону. Последовательность действий при аппроксимации экспоненциальной зависимостью. Определение корня уравнения методом простых итераций и решение задачи Коши.

    курсовая работа [550,5 K], добавлен 13.03.2013

  • Разработка алгоритмов методом пошаговой детализации. Типы данных и операции в Turbo-Pascal. Организация работы с подпрограммами. Составление алгоритмов и программ задач с использованием конечных сумм. Организация работы с динамическими переменными.

    учебное пособие [1,4 M], добавлен 26.03.2014

  • Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.

    курсовая работа [2,7 M], добавлен 21.02.2011

  • Построение эмпирических формул методом наименьших квадратов. Линеаризация экспоненциальной зависимости. Элементы теории корреляции. Расчет аппроксимаций в табличном процессоре Excel. Описание программы на языке Turbo Pascal; анализ результатов ее работы.

    курсовая работа [390,2 K], добавлен 02.01.2015

  • Обработка сложных структур данных как одна из наиболее распространенных возможностей применения языка программирования С++. Преимущества использования подпрограмм. Передача параметров, одномерных и двумерных массивов, функции и их возврат в функцию.

    курсовая работа [1,1 M], добавлен 24.11.2013

  • Создание схем алгоритмов и составление программы на языке Pascal для вычисления значений заданных функций. Сущность и порядок нахождения значения определенного интеграла. Анализ работы подпрограмм. Разработка тестов для проверки правильности алгоритмов.

    контрольная работа [831,0 K], добавлен 24.11.2013

  • Характеристика предприятия ТОО "Com Sales Group". Составление программ на языке программирования. Составление алгоритмов, разработка численных методов решения задач. Методы откладки программ. Анализ технологии машинной обработки экономической информации.

    отчет по практике [1,3 M], добавлен 19.04.2016

  • Программирование на алгоритмическом языке Turbo Pascal на примере разработки алгоритма и программы расчета временной функции. Выбор, обоснование методов решения. Схемы алгоритмов основной программы и подпрограмм. Распечатка исходных и вычисленных величин.

    реферат [154,8 K], добавлен 15.03.2012

  • Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.

    контрольная работа [204,4 K], добавлен 26.01.2013

  • Задача оптимизации с точки зрения математики как задача нахождения экстремума вещественной функции в некоторой области. Классификация и типы методов оптимизации, условия их практического использования. Создание программы, ее листинг, описание алгоритмов.

    курсовая работа [181,7 K], добавлен 22.06.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.