АППРОКСИМАЦИЯ ФУНКЦИИМЕТОДОМ НАИМЕНЬШИХ
КВАДРАТОВ
Содержание
1. Цельработы
2. Методические указания
2.1 Методические рекомендации по аппроксимацииметодом наименьших квадратов
2.2 Постановка задачи
2.3 Методика выбора аппроксимирующей функции
2.4 Общая методика решения
2.5 Методика решения нормальных уравнений
2.6 Рекомендации по выбору формы записи системлинейных алгебраических уравнений
2.7 Методика вычисления обратной матрицы
3. Ручной счет
3.1 Исходные данные
3.2 Система нормальных уравнений
3.3 Решение систем методом обратной матрицы
4. Схема алгоритмов
5. Текст программы
6. Результаты машинного расчета
Вывод
1. Цель работы
Настоящая курсоваяработа является завершающим разделом дисциплины «Вычислительная математика ипрограммирование» и требует от студента в процессе ее выполнения решенияследующих задач:
а) практическогоосвоения типовых вычислительных методов прикладной информатики; б) совершенствованиянавыков разработки алгоритмов и построения программ на языке высокого уровня.
Практическое выполнениекурсовой работы предполагает решение типовых инженерных задач обработки данныхс использованием методов матричной алгебры, решения систем линейныхалгебраических уравнений численного интегрирования. Навыки, приобретаемые впроцессе выполнения курсовой работы, являются основой для использованиявычислительных методов прикладной математики и техники программирования впроцессе изучения всех последующих дисциплин при выполнении курсовых идипломных проектов.
2.Методические указания
2.1Методические рекомендации по аппроксимации методом наименьших квадратов
2.2Постановка задачи
Приизучении зависимостей между величинами важной задачей является приближенноепредставление (аппроксимация ) этих зависимостей с помощью известных функцийили их комбинаций, подобранных надлежащим образом. Подход к такой задаче иконкретный метод её решения определяются выбором используемого критериякачества приближения и формой представления исходных данных.
2.3 Методика выборааппроксимирующей функции
Аппроксимирующуюфункцию />выбирают из некоторогосемейства функций, для которого задан вид функции, но остаются неопределенными(и подлежат определению) её параметры />т.е.
/>
(1)
Определениеаппроксимирующей функции φ разделяется на два основных этапа:
Подбор подходящего видафункции />;
Нахождение еепараметров в соответствии с критерием МНК.
Подборвида функции /> представляет собой сложнуюзадачу, решаемую методом проб и последовательных приближений. Исходные данные,представленные в графической форме (семейства точек или кривые), сопоставляетсяс семейством графиков ряда типовых функций, используемых обычно для целейаппроксимации. Некоторые типы функций />,используемых в курсовой работе, приведены в таблице 1.
Болееподробные сведения о поведении функций, которые могут быть использованы взадачах аппроксимации, можно найти в справочной литературе. В большинствезаданий курсовой работы вид аппроксимирующей функции />задан.
2.4 Общая методикарешения
Послетого как выбран вид аппроксимирующей функции /> (илиэта функция задана) и, следовательно, определена функциональная зависимость (1),необходимо найти в соответствии с требованиями МНК значения параметров С1,С2, …, Сm.Как уже указывалось, параметры должны быть определены таком образом, чтобызначение критерия в каждой из рассматриваемых задач было наименьшим посравнению с его значением при других возможных значениях параметров.
Длярешения задачи подставим выражение (1) в соответствующее из выражений ипроведем необходимые операции суммирования или интегрирования (в зависимости отвида I). В результатевеличина I, именуемая вдальнейшем критерием аппроксимации, представляется функцией искомых параметров
/>
(2)
Последующеесводиться к отысканию минимума этой функции переменных Сk;определение значений Сk=Ck*,к=1,m, соответствующих этомуэлементу I, и является цельюрешаемой задачи.
Типыфункций Таблица 1Вид функции Название функции
Y=C1+C2·x Линейная
Y=C1+C2·x+C3·x2 Квадратичная (параболическая)
Y=/>
Рациональная(полином n-й степени)
Y=C1+C2·/> Обратно пропорциональная
Y=C1+C2·/> Степенная дробно-рациональная
Y=/> Дробно-рациональная(первой степени)
Y=C1+C2·XC3 Степенная
Y=C1+C2·aC3·x Показательная
Y=C1+C2·logax Логарифмическая
Y=C1+C2·Xn (0 Иррациональная, алгебраическая
Y=C1·sinx+C2cosx Тригонометрические функции (и обратные к ним)
Возможны следующие дваподхода к решению этой задачи: использование известных условий минимума функциинескольких переменных или непосредственное отыскание точки минимума функции каким– либо из численных методов.
Для реализации первогоиз указанных подходов воспользуемся необходимым условием минимума функции (1)нескольких переменных, в соответствии с которыми в точке минимума должны бытьравны нулю частные производные этой функции по всем ее аргументам
/>
Полученные mравенств следует рассматривать как систему уравнений относительно искомых С1,С2,…, Сm.При произвольном виде функциональной зависимости (1) уравнения (3) оказываетсянелинейным относительно величин Ckиих решение требует применение приближенных численных методов.
Использование равенства(3) дают, лишь необходимые, но недостаточные условия минимума (2). Поэтомутребуется уточнить, обеспечивают ли найденные значения Ck*именноминимум функции />. В общем случаетакое уточнение выходит за рамки данной курсовой работы, и предлагаемые длякурсовой работы задания подобраны так, что найденное решение системы (3)отвечает именно минимуму I.Однако, поскольку величина Iнеотрицательна (как сумма квадратов) и нижняя её граница есть 0 (I=0),то, если существует решение системы (3) единственно, оно отвечает именноминимуму I.
При представленииаппроксимирующей функции /> общимвыражением (1) соответствующие нормальным уравнениям (3) оказываютсянелинейными относительно искомых Ск. их решение может быть сопряженосо значительными трудностями. В таких случаях предпочтительным являютсянепосредственный поиск минимума функции />вобласти возможных значений ее аргументов Ск, не связанный сиспользованием соотношений (3). Общая идея подобного поиска сводиться кизменению значений аргументов Ск и вычислению на каждом шагесоответствующего значения функции Iдо минимального или достаточно близко к нему.
2.5Методика решения нормальных уравнений
Одиниз возможных способов минимизации критерия аппроксимации (2) предполагаетрешение системы нормальных уравнений (3). При выборе в качестве аппроксимирующейфункции линейной функции искомых параметров нормальные уравнения представляютсобой систему линейных алгебраических уравнений.
2.6Рекомендации по выбору формы записи систем линейных алгебраических уравнений
Системуn линейных уравнений общего вида:
/>
(4)
(4)можно записать посредством матричных обозначений в следующем виде: А·Х=В,
/>; />; /> (5)
квадратная матрица Аназывается матрицей системы, а вектора Х и В соответственно вектором-столбцомнеизвестных систем и вектором-столбцом ее свободных членов.
В матричном видеисходную систему n линейныхуравнений можно записать и так:
/>
(6)
Решение системылинейных уравнений сводиться к отысканию значений элементов вектора-столбца (хi),называемых корнями системы. Чтобы эта система имела единственное решение,входящее в нее n уравнениедолжно быть линейно независимым. Необходимым и достаточным условием этогоявляется неравенство нулю определителя системы, т.е. Δ=detA≠0.
Алгоритм решениясистемы линейных уравнений подразделяется на прямые и итерационные. На практикеникакой метод не может быть бесконечным. Для получения точного решенияитерационные методы требуют бесконечного числа арифметических операций.практически это число приходиться брать конечным и поэтому решение в принципе имеетнекоторую ошибку, даже если пренебречь ошибками округлений, сопровождающими большинствовычислений. Что же касается прямых методов, то они даже при конечном числеопераций могут в принципе дать точное решение, если оно существует.
Прямые и конечныеметоды позволяют найти решение системы уравнений за конечное число шагов. Эторешение будет точным, если все промежутки вычисления проводятся с ограниченнойточностью.
2.7 Методика вычисленияобратной матрицы
Одиниз методов решения системы линейных уравнений (4), записываем в матричной формеА·Х=В, связан с использованием обратной матрицы А-1. В этом случаерешение системы уравнений получается в виде
Х=А-1·В,
гдеА-1 –матрица, определяемая следующим образом.
ПустьА –квадратная матрица размером nх n с ненулевым определителем detA≠0.Тогда существует обратная матрица R=A-1,определяемая условием A·R=E,
гдеЕ –единичная матрица, все элементы главной диагонали которой равны I,а элементы вне этой диагонали -0, Е=[E1,...,En], где Еi–вектор-столбец. Матрица К –квадратная матрица размером nх n.
/>
где Rj–вектор-столбец.
Рассмотрим ее первыйстолбец R=( r11,r21,…,rn1)T,где Т –означает транспонирование. Нетрудно проверить, что произведение A·Rравно первому столбцу E1=(1,0, …, 0)Т единичной матрицы Е, т.е. вектор R1можно рассмотреть как решение системы линейных уравнений A·R1=E1.Аналогичноm –й столбец матрицы R, Rm, 1≤ m≤n, представляет собой решениеуравнения A·Rm=Em,где Em=(0, …, 1, 0)Tm –й столбец единичной матрицы Е.
Таким образом, обратнаяматрица R представляет собойнабор из решений n систем линейныхуравнений
A·Rm=Em, 1≤ m≤n.
Для решения этих системможно применять любые методы, разработанные для решения алгебраическихуравнений. Однако метод Гаусса дает возможность решать все эти nсистем одновременно, а независимо друг от друга. Действительно, все эти системыуравнений отличаются только правой частью, а все преобразования, которыепроводятся в процессе прямого хода метода Гаусса, полностью определяютсяэлементами матрицы коэффициентов (матрицы А). Следовательно, в схемахалгоритмов изменению подлежат только блоки, связанные с преобразованием вектораВ. В нашем случае одновременно будут преобразовываться nвекторов Em, 1≤ m≤n. Результатом решения также будетне один вектор, а n векторов Rm,1≤ m≤n.
3. Ручной счет
3.1 Исходные данные
Xi 0,3 0,5 0,7 0,9 1,1 Yi 1,2 0,7 0,3 -0,3 -1,4
/> /> />
Метод MINU
/>
3.2Системанормальных уравнений
/>
/>
/>
/>
/>/>
/>
/>
3.3 Решение системметодом обратной матрицы
аппроксимация квадрат функция линейный уравнение
5 3,5 2,6 0,5 5 3,5 2,60,5
3,5 2,85 2,43 -0,89 0 0,4 0,61 -1,24
2,56 2,43 2,44 -1,86 0 0,638 1,109-2,116
5 3,5 2,6 0,5
0 0,4 0,61 -1,24
0 0 0,136 -0,138
/>
Результаты расчета:
С1=1,71; С2=-1,552;С3=-1,015;
Аппроксимирующаяфункция:
/>
4.Текст программы
ProgramApprF;
UsesCrt;
constn=3;
type
mass=array[1..5]ofreal;
mass1=array[1..3,1..3]of real;
mass2=array[1..3]of real;
var
X,Y,E,y1,delta: mass;
A:mass1;
B,x1:mass2;
big,r,sum,temp,maxD,Q:real;
i,j,k,l,num: byte;
ProcedureVVOD(var E: mass);
Begin
Fori:=1 to 5 do
read(E[i]);
writeln;
End;
FunctionFI( i ,k: integer): real;
Begin
ifi=1 then FI:=1;
ifi=2 then FI:=Sin(x[k]);
ifi=3 then FI:=Cos(x[k]);
End;
ProcedurePEREST(i:integer;var a:mass1;var b:mass2);
begin
big:=0;
num:=0;
forl:= i to 3 do
ifabs(a[l,i]) > big then
begin
big:=a[l,i];writeln ( big:6:4);
num:=l;
end;
ifbig=0 then
writeln('Перестановкауравнений');
ifnumi then
forj:=i to 3 do
begin
temp:=a[i,j];
a[i,j]:=a[num,j];
a[num,j]:=temp;
end;
temp:=b[i];
b[i]:=b[num];
b[num]:=temp;
end;
Begin
writeln('__________________');
writeln('Введитезначения Х');
VVOD(X);
writeln('__________________');
writeln('‚Введитезначения Y');
VVOD(Y);
writeln('___________________');
Fori:=1 to 3 do
Forj:=1 to 3 do
begin
A[i,j]:=0;
Fork:=1 to 5 do
beginA[i,j]:= A[i,j]+FI(i,k)*FI(j,k); write(a[i,j]:7:5); end;
end;
writeln('________________________');
writeln('МатрицаКоэффициентовAi,j');
writeln('__________________________');
Fori:=1 to 3 do
begin
Forj:=1 to 3 do
write(A[i,j]:5:2, ' ');
writeln;
end;
Fori:=1 to 3 do
begin
B[i]:=0;
Forj:=1 to 5 do
B[i]:=B[i]+Y[j]*FI(i,j);
end;
writeln;
readkey;
writeln('__________________________');
writeln(‘МатрицаКоэффициентов Bi ');
writeln('_________________________');
Fori:=1 to 3 do
write(B[i]:5:2,' ');
writeln;
fori:=1 to 2 do
begin
PEREST(i,a,b);
fork:=i+1 to 3 do
begin
Q:=a[k,i]/a[i,i];writeln('g=',Q);
a[k,i]:=0;
forj:=i+1 to 3 do
a[k,j]:=a[k,j]-Q*a[i,j];writeln('a=',a[k,j]);
b[k]:=b[k]-Q*b[i];writeln('b=',b[k]);
end;
end;
x1[n]:=b[n]/a[n,n];
write(x1[n]);
fori:=2 downto 1 do
begin
sum:=b[i];
forj:=i+1 to 3 do
sum:=sum-a[i,j]*x1[j];
x1[i]:=sum/a[i,i];
end;
writeln('__________________________');
writeln('Значение коэффициентов ');
writeln('_________________________');
fori:=1 to 3 do
writeln(' C',i,'=',x1[i]);
k:=1;
fori:=1 to 5 do
begin
y1[i]:=x1[k]*FI(k,i) + x1[k+1]*FI(k+1,i) + x1[k+2]*FI(k+2,i);
delta[i]:=abs(y[i]-y1[i]);
writeln;
writeln(y1[i]);
end;
fori:=1 to 3 do
write(x1[i]:7:3);
writeln;
maxD:=delta[1];
fori:=1 to 5 do
ifdelta[i]>maxD then maxD:=delta[1];
writeln('max Delta= ', maxD:5:3);
End.
5.Результаты машинного расчета
С1=1,511; С2=-1,237;С3=-1,11;
/>
Вывод
В процессе выполнениякурсовой работы я практически освоил типовые вычислительные методы прикладнойматематики, совершенствовал навыки разработки алгоритмов и построения программна языках высокого уровня. Получил навыки, являющиеся основой для использованиявычислительных методов прикладной математики и техники программирования впроцессе изучения всех последующих дисциплин при выполнении курсовых идипломных проектов.