Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №2 / Лаба2_Метод наименьших квадратов

.doc
Скачиваний:
17
Добавлен:
01.05.2014
Размер:
65.02 Кб
Скачать

Министерство Образования РФ

Санкт- Петербургский государственный

электротехнический университет “ЛЭТИ”

ФКТИ

Кафедра ВМ

Отчет по лабораторной работе №2

“МЕТОД НАИМЕНЬШИХ КВАДРАТОВ”

По дисциплине “Вычислительная математка”

Вариант №1

Выполнил:

группа: 3371,

Артемьев Ю.Г

Проверил:

Ингстер Ю.И.

Санкт – Петербург

2005

Текст программы(МЕТОД НАИМЕНЬШИХ КВАДРАТОВ ):

Basis1.m:

function y=basis1(x,i)

y = x.^i

Work1.m:

% Создаем матрицу g, составленную из столбцов базисных функций

for i=0:m,

g(:,i+1)=basis1(x',i);

end

% Вычисляем матрицу Грама:

gram=zeros(m+1);

for i=1:m+1,

for k=1:m+1

gram(i,k)=sum(g(:,i).*g(:,k));

end,

end

% Вычисляем столбец правых частей:

b=zeros(m+1,1);

for i = 1:m+1,

b(i)=sum(y'.*g(:,i));

end

% Вычисляем строку t коэффициентов модели:

t=gram^(-1)*b;

t=t'

% Вычисляем строку f значений модельного многочлена:

f=g(:,1)*t(1);

for i=2:m+1,

f=f + g(:,i)*t(i);

end

f=f';

% Запоминаем среднеквадратичную погрешность аппроксимации:

nx=max(size(x));

err(m)=sqrt(sum((y-f).^2)/nx)

plot(x,y,'*', x,f), grid, pause

Laba2_1:

% ЧАСТЬ 1: АЛГЕБРАИЧЕСКАЯ АППРОКСИМАЦИЯ

clc;

clear;

a=0;

a0=0; a1=0; a2=1; a3=-1;

b=5;

n=25;

x=a:(b-a)/n:b;

y0=a0 + a1*x + a2*exp(-x) + a3*exp(-2*x);

y=y0 + 0.03 * randn(size(x));

plot(x,y,'*'), grid, pause

m=1, work1, f1=f; t1=t;

m=2, work1, f2=f; t2=t;

m=3, work1, f3=f; t3=t;

m=4, work1, f4=f; t4=t;

p=polyfit(x,y,4)

err1=err

save result11 t1 t2 t3 t4 p err1

nm=plot(x,y,'*', x,f1,'-.', x,f2,'--', x,f3,':', x,f4, x,y0,'o'), grid, pause

saveas( nm(1,:),'grafik2.fig' );

Basis2.m:

function y=basis2(x,i)

if i==0, y=x*0+1;

elseif i==1, y=x;

elseif i==2, y=exp(-x);

elseif i==3, y=exp(-2*x);

end;

Work2.m:

% Создаем матрицу g, составленную из столбцов базисных функций

for i=0:m,

g(:,i+1)=basis2(x',i);

end

% Вычисляем матрицу Грама:

gram=zeros(m+1);

for i=1:m+1,

for k=1:m+1

gram(i,k)=sum(g(:,i).*g(:,k));

end,

end

% Вычисляем столбец правых частей:

b=zeros(m+1,1);

for i = 1:m+1,

b(i)=sum(y'.*g(:,i));

end

% Вычисляем строку t коэффициентов модели:

t=gram^(-1)*b;

t=t'

% Вычисляем строку f значений модельного многочлена:

f=g(:,1)*t(1);

for i=2:m+1,

f=f + g(:,i)*t(i);

end

f=f';

% Запоминаем среднеквадратичную погрешность аппроксимации:

nx=max(size(x));

err(m)=sqrt(sum((y-f).^2)/nx)

plot(x,y,'*', x,f), grid, pause

Laba2_2:

% ЧАСТЬ 2: АППРОКСИМАЦИЯ ЭКСПОНЕНТАМИ

clc;

clear;

a=0;

b=5;

a0=0; a1=0; a2=1; a3=-1;

n=25;

x=a:(b-a)/n:b;

y0=a0+ a1*x + a2*exp(-x) + a3*exp(-2*x);

y=y0 + 0.03 * randn(size(x));

plot(x,y,'*'), grid, pause

m=1, work2, f1=f; t1=t;

m=2, work2, f2=f; t2=t;

m=3, work2, f3=f; t3=t;

err2=err

save result12 t1 t2 t3 err2

plot(x,y,'*', x,f1,'-.', x,f2,'--', x,f3,':', x,y0,'o'), grid, pause