Интерполирование и аппроксимация функции. Полином пятой степени. Формирование вектора не зависимой переменной

Страницы работы

Содержание работы

Лабораторная №3

Интерполирование и аппроксимация функции.

Полином пятой степени.Задание1

polyfit

p=polyfit(x,y,n)

clc-очищаем командное окно

global var1; -объявляем глобальные переменные

global var2; -объявляем глобальные переменные

var1 = [1.67 2.20; 1.82 3.0; 2.0 4.0;2.07 4.5;2.1 5.0;2.11 6.20;2.13 8.0] – присваиваем значение переменной

var2=[1.94 3.0; 2.13 4.0;2.25 6.0;2.32 7.0;2.4 11.0;2.26 15.0] x2 = var1(:,1); - формирование вектора независимой переменной

y2= var1(:,2);-формирование вектора зависимой переменной

P2 = polyfit(x2,y2,5)-расчет коэффициента полинома 5 степени

F2= polyval(P2,x2) – вычисление значений полинома в заданных точках

graph1=plot(x2,y2,’k*’,x2,F2,’k’); -строим график

set(graph1,’LineWidth’,3); - изменяем толщину графика

Вматлабе:

>> global var1;

>> global var2;

>> var1 = [1.67 2.20; 1.82 3.0; 2.0 4.0;2.07 4.5;2.1 5.0;2.11 6.20;2.13 8.0]

var1 =

1.6700    2.2000

1.8200    3.0000

2.0000    4.0000

2.0700    4.5000

2.1000    5.0000

2.1100    6.2000

2.1300    8.0000

>> var2=[1.94 3.0; 2.13 4.0;2.25 6.0;2.32 7.0;2.4 11.0;2.26 15.0]

var2 =

1.9400    3.0000

2.1300    4.0000

2.2500    6.0000

2.3200    7.0000

2.4000   11.0000

2.2600   15.0000

>> x2 = var1(:,1);

>> y2= var1(:,2);

>> P2 = polyfit(x2,y2,5)

P2 =

1.0e+006 *

0.0357   -0.3427    1.3150   -2.5190    2.4085   -0.9195

>> F2= polyval(P2,x2)

F2 =

2.2000

2.9998

4.0053

4.4377

5.2897

5.9205

8.0470

>> graph1=plot(x2,y2,'k*',x2,F2,'k');

>> set(graph1,'LineWidth',3);

Полином третей степени. Задание 2

Формирование вектора не зависимой переменной, потом не зависимой переменной

Задание2

y=polyval(p,s)

p(x)=3x2 +2x+x

в точке x=2,5

p=[3 2 1]

y=polyval(p,2.5)

% y=24.75

Задание1

x3= var2(:,1);

y3= var2(:,2);

P3 = polyfit(x3,y3,3)

F3= polyval(P3,x3)

graph2=plot(x3,y3,’r-’,x3,F3,’k’);

set(graph2,’LineWidth’,2);

xlabel(‘переменная x’);

ylabel(‘функция’);

hold on

grid on

В матлабе:

Задание1

Интерполирование данных с помощью степенных полиномов

x3= var2(:,1);

y3= var2(:,2);

P3 = polyfit(x3,y3,3)

F3= polyval(P3,x3)

P3 =

1.0e+003 *

-0.3623    2.3679   -5.1232    3.6755

F3 =

2.9092

4.7179

8.7630

10.3293

10.2297

9.0508

>> graph2=plot(x3,y3,'r-',x3,F3,'k');

>> set(graph2,'LineWidth',2);

>> xlabel('переменная x');

>> ylabel('функция');

>> hold on

grid on

Задание2

Вычислить значения полинома в заданной точке

>> p=[4 3 0.5 1]

p =

4.0000    3.0000    0.5000    1.0000

>> y=polyval(p,1.6)

y = 25.8640

>> p=[3 2 1]

y=polyval(p,2.5)

% y=24.75

p =

3     2     1

y =

24.7500

Задание3

Интерполяция линейная и интерполяция сплайнами

Сплаинт

y=cos(x) по 9 точкам синтаксис функции interp

y= interp1(x,y,’method’)

nearest – по соседним точкам

linear – линейная

spline- кубичискими сплайнами

cubic-кубический полином

x=0:9; - задоем в интервали от нуля до 9

y=cos(x);

xi=linspace(0,9,100);-генерирум вектор страку из 100 элементов от 0 до 9

yi1=interp1(x,y,xi); - построение ленейного полинома

yi2=interp1(x,y,xi,’spline’);- построение сплаинт полиномов

plot(xi,[yi1;yi2]);- построение графика

clc

clf

x=0:10;

y=sin(x)

xi=0:0.25:10;

yi=spline(x,y,xi);

plot(x,y,’k’,xi,yi,’r’);

grid on

clc

clf

x=0:12;

y=exp(x) %y=e^x

xi=0:0.8:15

yi=spline(x,y,xi);

plot(x,y,’k’,xi,yi,’r’);

grid on

Задание 3

>> x=0:0.12:12;

>> y=cos(x);

>> xi=0:0.12:12;

>> yi=spline(x,y,xi);

>> plot(x,y,'k',xi,yi,'r');

grid on

кос.jpg

>> x=0:0.12:12;

>> y=sin(x);

>> xi=0:0.12:12;

>> yi=spline(x,y,xi);

>> plot(x,y,'k',xi,yi,'r');

grid on

син.jpg

>> x=0:0.12:12;

>> y=tan(x);

>> xi=0:0.12:12;

>> yi=spline(x,y,xi);

>> plot(x,y,'k',xi,yi,'r');

grid on

тан.jpg

Задание 4 Интерполяция табличных данных

X

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Y

-2.99

-2.96

-2.91

-2.84

-2.75

-2.64

-2.51

-2.36

-2.19

clc

clf

x=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

y=[-2.99 -2.96 -2.91 -2.84 -2.75 -2.64 -2.51 -2.36 -2.19]

xi=[x(1):0.1:x(length(x))];

ynear=interp1(x,y,’nearest’);

yline= interp1(x,y,’spline’);

subplot(2,2,1);

>> plot(x,y,'k*');

>> title('исходные данные');

>> subplot(2,2,2);

>> plot(x,y,'k*',xi,ynear,'k-');

>> title('По соседним значениям');

>> subplot(2,2,3);

>> plot(x,y,'k*',xi,yline,'k-');

>> title('кубический сплаинт');

Задание 4

Интерполяция табличных данных

Y=Y+0.08*N

Y =Y +0.96

X

0.010

0.020

0.030

0.040

0.050

0.060

0.070

0.080

0.090

Y

1.480

1.479

1.478

1.477

1.475

1.473

1.470

1.467

1.464

Y1

2.44

2.439

2.438

2.437

2.435

2.433

2.43

2.427

2.424

>> clf

>> x=[0.010 0.020 0.030 0.040 0.050 0.060 0.070 0.080 0.090]

x =

0.0100    0.0200    0.0300    0.0400    0.0500    0.0600    0.0700    0.0800    0.0900

>> y=[2.440 2.439 2.438 2.437 2.435 2.433 2.430 2.427 2.424]

y =

2.4400    2.4390    2.4380    2.4370    2.4350    2.4330    2.4300    2.4270    2.4240

>> xi=[x(1):0.01:x(length(x))];

>> ynear=interp1(x,y,xi,'nearest');

>> yline=interp1(x,y,xi,'spline');

>> subplot(2,2,1);

>> plot(x,y,'k*');

>> title('исходные данные');

>> subplot(2,2,2);

>> plot(x,y,'k*',xi,ynear,'k-');

>> title('по соседним значениям');

>> subplot(2,2,3);

>> plot(x,y,'k*',xi,yline,'k-');

>> subplot(2,2,4);

>> plot(x,y,'k*',xi,yline,'k-');

>> title('кубический сплайн');

>> 

55.jpg

Задание 5

A= zeros(1,20), % аргумент

For i=1:20

А(i)= i*0.1;

End

T=[2.09 ], % выходное значение y

Создание нейронной сети вызов функции new

net=newff([-1 2.09],[5 1]);

{‘tansig’ ‘purelin’};

функция newff создает «классическую многослойную н.с.» с обучением обратного распространения ошибки, т.е изменение весов сенапса, происходит с учетом функции ошибки. Разница между полученными и правильными ответами н.с. распространяется в обратном направлении в примере сеть будет иметь два скрытых слоя.В первом слое 5 нейронов, во втором 1. Функция активации первого слоя tansig, это сигмоидальная функция возвращает выхлдные векторы, в диапозоне от -1 до +1, для второго слоя функция октивации purelin-это ленейная функция активации, возвращает выходные векторы без изменений. В примере задано 50 циклов обучения. Для обучения нейрона сети используется функция train.

net. trainParam.epochs=50

net=train(net,P,T);

y=sim(net,P);

figure(1)

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

Похожие материалы

Информация о работе

Предмет:
Информатика
Тип:
Отчеты по лабораторным работам
Размер файла:
143 Kb
Скачали:
0