Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_2_семестр.doc
Скачиваний:
2
Добавлен:
15.09.2019
Размер:
393.22 Кб
Скачать

Задание 2

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

а)

x



+2

+4

+6

+8

y

2.5

4.9

8

12.1

16.9

Это же задание выполнить с использованием ИС Eureka и Scilab.

Пример выполнения задания 2: (вариант b, номер студента Nст=50,  

x

5

7

9

11

13

y=f(x)

2.5

4.9

8

12.1

16.9

Аппроксимация – это замена одной функции у = f(x) (в нашем случае – приведенной выше табличной функции) другой функцией (в нашем случае – полиномом второй сте­пени ). В методе наименьших квадратов коэффициенты с0, с1 и с2 подбирают так, чтобы величина

принимала минимальное значение. Здесь n – номер последнего узла таблицы. Нумерация ве­дется с нуля, то есть для нашей таблицы x0=5, x1=7, …, x4=13, n=4.

Эта задача сводится к решению системы нормальных уравнений для определения неизвестных коэффициентов. В нашем случае три неизвестных коэффициента, надо решить систему из трех линейных урав­нений:

Составим вспомогательную таблицу:

i

xi

yi

0

5

2.5

25

125

625

12.5

62.5

1

7

4.9

49

343

2401

34.3

240.1

2

9

8

81

729

6561

72

648

3

11

12.1

121

1331

14641

133.1

1464.1

4

13

16.9

169

2197

28561

219.7

2856.1

45

44.4

445

4725

52789

471.6

5270.8

Таким образом, для наших исходных данных имеем систему

44.4 = 5c0 + 45c1 + 445c2

471.6 = 45c0 + 445c1+ 4725c2

5270.8 = 445c0 + 4725c1 + 52789c2,

решая которую (например, методом Гаусса), получаем:

с0 = 0.24071429, с1= – 0.064285714, с2 = 0.10357143.

Следовательно, нашу таблично заданную функцию мы заменили параболой y = 0.241 – 0.064x + 0.104x2.

Последний этап решения: наносим исходные данные на координатную плоскость и на этой же плоскости строим полученную параболу.

Ответ: y = 0.241 0.064x + 0.104x2

Чтобы решить задачу с помощью ИС Eureka, в окне Edit надо набрать:

y(x) := c0 + c1*x + c2*x^2

y(5) = 2.5

y(7) = 4.9

y(9) = 8

y(11) = 12.1

y(13) = 16.9

$ substlevel = 0

После выполнения команды Solve в окне Solution получим решение:

с0 = 0.241

c1 = – 0.064

c2 = 0.104

Maximum error is 0.0511428571

Ответ: y = 0.241 0.064x + 0.104x2

Примечание: Если в каком-либо окне видны не все данные, то это окно можно распахнуть на весь экран, нажав клавишу F5.

Чтобы решить данную задачу с помощью ИС Scilab, можно в окне редактора системы набрать следующую программу:

xbasc()

clc

//Функция, вычисляющая разность между экспериментальными

//и теоретическими значениями,

//перед использованием необходимо определить

//z=[x;y] - матрицу исходных данных и

//с - вектор начальных значений коэффициентов,

//размерность вектора должна совпадать

//с количеством искомых коэффициентов

function y=G(c,z)

y=z(2)-c(1)-c(2)*z(1)-c(3)*z(1)^2

endfunction

//Исходные данные

x=[5 7 9 11 13];

y=[2.5 4.9 8 12.1 16.9];

//Формирование матрицы исходных данных

z=[x;y];//та же буква, что и в функции y=G(c,z)

//Вектор начальных приближений

c=[0;0;0];//нулей столько, сколько искомых коэффициентов. Это нач. приближение

//Решение задачи

[a,err]=datafit(G,z,c)

//Построение графика экспериментальных данных

plot2d(x,y,-4);

//Построение графика подобранной функции на отрезке [4 , 14]

t=4:0.01:14;

Ptc=a(1)+a(2)*t+a(3)*t^2;

plot2d(t,Ptc);

После запуска программы (Execute/Load into Scilab) в командном окне получим:

err =

0.0051429

a =

0.2406191

- 0.0642614

0.1035701

Здесь err - сумма площадей квадратов отклонений, а – вектор искомых коэффициентов с0, с1 и с2 .

Ответ: y = 0.1036x2 0.0643x + 0.2407

Очевидно, что коэффициенты с0, с1 и с2, полученные в результате решения непосредственно системы уравне­ний и с помощью ИС Eureka и Scilab, должны совпадать (с учетом погрешностей округления, которые мы делали, решая систему вручную).