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

52

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

Запорізький національний технічний університет

МЕТОДИЧНІ ВКАЗІВКИ

до лабораторних робіт з курсу

«Програмне застосування проектування ЕМС»

для студентів денної та заочної форм навчання напряму 6.050702 «Електромеханіка» (з можливістю подальшого навчання на спеціальностях 7.05070201, 8.05070201 «Електричні машини і апарати» та 7.05070207, 8.05070207 «Електромеханічне обладнання енергоємних виробництв»)

2012

Методичні вказівки до лабораторних робіт з курсу «Програмне застосування проектування ЕМС» для студентів денної та заочної форм навчання напряму 6.050702 «Електромеханіка» (з можливістю подальшого навчання на спеціальностях 7.05070201, 8.05070201 «Електричні машини і апарати» та 7.05070207, 8.05070207 «Електромеханічне обладнання енергоємних виробництв») /Укл.: Бондаренко Л.О., Каплієнко О.О - Запоріжжя: ЗНТУ, 2012. 50 с.

Містить теоретичні відомості, індивідуальні завдання та приклади виконання лабораторних робiт в системі MatLab з курсу «Програмне застосування проектування ЕМС» для студентів кафедри електричні апарати.

Укладачі: Л.О. Бондаренко

О.О. Каплієнко

Рецензент: Н.І.Біла

Відповідальний за випуск: П.Д.Андрієнко

Затверджено

на засіданні кафедри “Електричні

та електронні апарати”

протокол № 14

від 1 червня 2012р.

ЗМІСТ

Зміст та оформлення лабораторних робіт 5

Лабораторна робота №1.Інтерполяція функцій 6

1.1 Мета роботи 6

1.2 Завдання до лабораторної роботи 6

1.3 Основні теоретичні відомості 6

1.4 Інндивідуальні завдання до лабораторної роботи 15

1.5 Контрольні питання 17

Лабораторна робота №2. Апроксимація експериментальних даних 18

2.1 Мета роботи 18

2.2 Завдання до лабораторної роботи 18

2.3 Основні теоретичні відомості 18

2.3.1 Постановка задачі апроксимації експериментальних

даних 18

2.3.2 Побудова емпіричної формули 19

2.3.3 Вибір ступеня многочлена 23

2.4 Індивідуальні завдання до лабораторної роботи 24

2.5 Контрольні питання 26

Лабораторна робота №3. Чисельне дифференціювання 27

3.1 Мета роботи 27

3.2 Завдання до лабораторної роботи 27

3.3 Основні теоретичні відомості 27

3.3.1 Чисельне диференціювання функцій 27

3.3.2 Метод Рунге збільшення порядку точності формул 28

3.3.3 Функції MATLAB для чисельного диференціювання 29

3.4. Індивідуальне завдання до лабораторної роботи 30

3.5 Контрольні питання 32

Лабораторна робота №4. Обчислення визначених інтегралів 33

4.1 Мета роботи 33

4.2 Завдання до лабораторної роботи33

4.3. Основні теоретичні відомості 33

4.4 Індивідуальні завдання до лабораторної роботи 37

4.5 Контрольні питання40

Лабораторна робота №5. Рішення звичайного диференційного рівняння. Задача Коші 41

5.1 Мета роботи 41

5.2 Завдання до лабораторної роботи41

5.3. Основні теоретичні відомості 41

5.3.1 Постановка задачі Коши 41

5.3.2 Метод Ейлера 42

5.3.3 Методи Рунге-Кутта 44

5.3.4 Рішення задачі Коші в MatLab 47

5.4 Індивідуальні завдання до лабораторної роботи 47

5.5 Контрольні питання49

Список літератури50

Зміст та оформлення лабораторних робіт

Лабораторні роботи з дисципліни “ ОТП за фахом ” мають мету вивчення чисельних методів, які застосовуються при розв'язуванні інженерних задач за фахом, практичного закріплення знань з основ алгоритмізації та програмування, а також вивчення можливостей системи MatLab для розв’язання означених задач. Для виконання лабораторних робот передбачається використання знань, що отримані в курсах “Обчислювальна техніка та програмування” та “Вища математика”.

В умовах кредитно-модульної системи навчальна дисципліна “ Обчислювальна техніка та прорамування за фахом ” у 2-ому семестрі відповідає: 32 годинам лекцій; 32 годинам лабораторних робот, у 3-ому: 32 годинам лабораторних робіт..

По кожній лабораторній роботі оформлюється звіт, він мусить відповідати діючим стандартам ЗНТУ. Загальна структура звіту по лабораторній роботі винна бути такою:

  • тема роботи;

  • формулювання задачі;

  • ручний розрахунок за формулами алгоритму метода, що досліджується;

  • текст програми;

  • протокол розв’язування задачі (в вигляді скрипта) за допомогою: а) власних програм; б)команд та функцій системи MatLab;

  • протокол, що містить отриманні результати ;

  • висновки.

Лабораторна робота №1

Інтерполяція функціЙ

1.1 Мета роботи

Вивчити основні методи інтерполяції функції (інтерполяційний поліном, поліном Лагранжа, сплайн-інтерполяція). Вивчити відповідні алгоритми і їх програмні реалізації, а також використання відповідних функцій пакету MatLab.

1.2 Завдання до лабораторної роботи

1. Познайомитися зі змістом розділу 1.3 "Основні теоретичні відомості" і виконати приклади 1.3.1, 1.3.2, 1.3.3, 1.3.4.

2. Написати необхідні програмні коди для проведення інтерполяції (глобальною і локальною) таблично заданої функції :

  • поліномом;

  • многочленом Лагранжа.

3. Виконати індивідуальне завдання (розділ 1.4).

4. Скласти звіт.

1.3 Основні теоретичні відомості

Постановка задачі

Нехай відомі значення функції f(x) (табл.1.1) у декількох точках xi, i = 0, 1, …, n, a < xi < b. Задача полягає у відновленні виду функції f(x) та/або її значень у інших точках з деякою точністю.

Таблиця 1.1 - Початкові дані для задачі інтерполяції

x

x1

x2

xn

f(x)

y1

y2

yn

Термінологія.Точки -вузли інтерполяції ,-вузлові значення.

Інтерполяція-апроксимація . У такому порівнянні інтерполюванням називається задача відшукання функції такої , що точно вдовольняє вузловим значенням: (1.1)

Апроксимацією називається функція , близька до f(x) лише у тому сенсі , що сумарна помилка

є мінімальною.

Інтерполяція-ектраполяція . У такому протиставленні інтерполяцією називають обчислення значень функції всередині інтервалу [a; b] ; екстраполяцією — поза цим інтервалом .

Для глобальної інтерполяції будемо шукати інтерполюючу функцію φ(x) у вигляді многочлена ступінем m, де m=n -1:

φ(x) = ao + a1x + … +am-1xm-1 + amxm (1.2)

Умови (1.1), накладені на многочлен, дозволяють однозначно визначити його коефіцієнти. Дійсно, вимагаючи для φ(x) виконання умов (1.1), отримуємо систему лінійних рівнянь алгебри, що складається з n рівнянь, :

ao + a1x1 +a2x12 + … + amx1m = y1

ao + a1x2 +a2x22 + … + amx2m = y2 (1.3)

ao + a1xm +a2xm2 + … + amx5m= ym

Вирішивши систему (1.3) відносно невідомих a0, a1, … ,am, знаходимо значення цих невідомих і, підставивши в (1.2), знаходимо аналітичний вираз апроксимуючої функції.

Справедлива теорема про існування і єдиність інтерполяційного многочлена, оскільки визначник системи рівнянь (1.3) - визначник Вандермонда - відмінний від нуля.

При локальній інтерполяції ступінь інтерполяційного многочлену m<n - 1, оскільки інтерполяційні многочлени будуються окремо для різних частин даного інтервалу зміни x.

Приклад 1.3.1. Вирішити, використовуючи пакет MatLab, задачу глобальної інтерполяції для функції f(x)=sin(x), яку задано таблично в 5 точках на інтервалі [0, 2π].

1.Задайте табличні значення функції, яку інтерполюють.

>>n=5;xl=0;xr=2*pi;h=(xr-xl)/(n-1);

>>i=1:n;

>>x(i)=2*h*(i-1);

>>y=sin(x);

>>disp([x' y'])

0 0

3.5708 3.0000

3.1416 0.0000

4.7124 -3.0000

6.2832 -0.0000

2.Візуалізуйте табличну залежність і точні значення функції (рис. 1.1).

>>N=20;

>>I=1:N;X(I)=2*pi/(N-1)*(I-1);

>>Y=sin(X);

>>plot(x,y,'o')

>>hold on;

>>plot(X,Y).

Рисунок 1.1 – На графіку колами зображені задані точки, суцільною лінією - точні значення функції

3. Оскільки початкова функція задана 5-ма точками, тобто n=5, то шукатимемо апроксимуючу функцію у вигляді многочлену 4-ого ступеня

φ(x) = ao + a1x +a2x2 + a3x3 + a4x4 .

Для визначення коефіцієнтів ao, a1, a2, a3, a4 запишемо систему лінійних алгебраїчних рівнянь :

ao + a1x1 +a2x12 + a3x13 + a4x14 = y1

ao + a1x2 +a2x22 + a3x23 + a4x24 = y2

ao + a1x3 +a2x32 + a3x33 + a4x34 = y3

ao + a1x4+a2x42 + a3x43 + a4x44 = y4

ao + a1x5 +a2x52 + a3x53 + a4x54 = y5

Підставимо значення початкової табличної функції x і y, які отримані в пункті 1, отримаємо наступну СЛАР:

ao = 0

ao + a13.5708 +a23.57082 + a33.57083 + a43.57084 = 1

ao + a13.1416+a23.14162 + a33.14163 + a43.14164 = 0

ao + a14.7124+a24.7124 + a34.71243 + a44.71244 = -1

ao + a16.2832 +a26.28322 + a36.28323 + a46.28324 = 0

4. Створіть файл Vandermond.m, що формує та повертає значення елементів матриці Vandermond, тобто значення коефіцієнтів отриманої СЛАР.

Лістинг 1.1. ФайлVandermond.m

function z=Vandermond(x)

% x - масив аргументів табличної функції

% n - кількість вихідних точок

% z - масив коефіцієнтів СЛАУ - елементи матриці

% Вандермонда

n=length(x);

z=ones(n,n);

for i=1:n

for j=1:n

z(i,j)=x(i).^(j-1);

end

end

5. Створіть файл GlobalInterp.m, який містить опис функції (Лістинг 1.2), що повертає наближене значення апроксимуючої функції φ(x) для будь-якого x з інтервалу [x1, xn].

Лістинг 1.2. Файл GlobalInterp.m

function y=GlobalInterp(a, x)

% a -массив коефіцієнтів апроксимуючої функції φ(x)

% x -массив аргументів, для яких треба вичислити

% наближені значення функції

% y - результуючий масив наближених значень функції

%m - кількість заданих аргументів для яких треба обчислити

% наближені значення функції

%( n - 1) - ступень апроксимуючого многочлену

n=length(a);

m=length(x);

for i=1:m

s=0;

for j=1:n

s=s+x(i)^(j-1)*a(j);

end

y(i)=s;

end

5. Обчислити значення елементів матриці Вандермонда (тобто значення коефіцієнтів СЛАР пункту 3).

>> M=Vandermond(x);

6. Для обчислення коефіцієнтів апроксимуючої функції вирішити СЛАР будь-яким з відомих вам методів.

>>a=M\y'

7. Обчислити значення полінома в заданих проміжних точках.

>>Y1=GlobalInterp(a, X)

10.Візуалізуйте результат проведеної інтерполяції. Побудуйте графік похибки проведеної інтерполяції - різниця між точними і інтерпольованими значеннями функції. (рис.1.2).

Рисунок 1.2 - Інтерполяція по 5 вузлам для функції f(x) = sin(x)

На графіці ліворуч колами зображені задані точки (xi,yi), крапками - точні значення функції, суцільною лінією - вичислені значення апроксимуючої функції φ(x).

На графіці праворуч - похибка проведеної глобальної інтерполяції початкової функції.

1.3.2 Многочлен Лагранжа

Для функції, заданої в таблиці 1.1, побудуємо інтерполяційний многочлен L(x), ступень якого не вище (n – 1) і виконані умови (1.1).

Шукатимемо L(x) у вигляді:

L(x)=l1(x) + l2(x) +… + ln(x)

Кожен многочлен li(x) перетворюється на нуль в усіх вузлах інтерполяції, за винятком одного (i -го), в якому він дорівнює 1.

Таким чином, многочлен Лагранжа можно записати у вигляді:

Приклад 1.3.2. Вирішити, використовуючи пакет MatLab, задачу інтерполяції за допомогою многочлена Лагранжа для функції f(x)=sin(x), задану таблично в 5-и точках на інтервалі [0, 2π].

1. Задайте табличні значення інтерпольованої функції.

>>n=5;xl=0;xr=2*pi;h=(xr-xl)/(n-1);

>>i=1:n;

>>x(i)=2*h*(i-1);

>>y=sin(x);

>>disp([x' y'])

0 0

3.5708 3.0000

3.1416 0.0000

4.7124 -3.0000

6.2832 -0.0000

2. Використовуючи формулу Лагранжа, побудуйте многочлен Лагранжа 4-ого ступеня для інтерполяції заданої функції вручну.

3. Створіть файл Lagrang.m, який містить опис функції що повертає значення полінома Лагранжа(лістинг 1.3).

Лістинг 1.3. Файл Lagrange.m

function yt=Lagrange(x,y,t)

% x - масив аргументів табличної функції,

% y – масив значень табличної функції,

% n – кількість вузлів заданої функції

% t – масив аргументів для яких треба обчислити

% наближені значення функції

% m - кількість заданих аргументів для яких треба обчислити

% наближені значення функції

% yt – резельтуючий масив наближених значень функції

n=length(x);

m=length(t);

for k=1:m

s=0;

for i=1:n

p=1;

for j=1:n

if i~=j

p=p*(t(k)-x(j))/(x(i)-x(j));

end

end

s=s+p*y(i);

end

yt(k)=s;

end

4. Задайте число вузлів інтерполяції, обчислите їх координати >>N=20;

>>I=1:N;X(I)=2*pi/(N-1)*(I-1);

5. Обчислите точні значення функції в заданих вузлах

>>Y=sin(X);

5. Обчислите наближені значеня функції з допомогою полінома Лагранжа в заданих вузлах

>>YT=Lagrange(x,y,X)

6. Отримані результати нанесіть на графік (рис. 1.3). На графіку ліворуч колами зображені задані точки (x, y), крапками - обчислені значення многочлена Лагранжа (X, YT), суцільною лінією - точні значення функції (X,Y).

На графіку ліворуч - похибка наближення функції многочленом Лагранжа.

Рисунок 1.3 - Інтерполяція многочленом Лагранжа по 5 вузлам для функції f(x)=sin(x)

Сплайн-інтерполяція

При великій кількості вузлів інтерполяції доводиться використовувати інтерполяційні поліному високого ступеня, що створює певні незручності при обчисленнях. Можна уникнути високих ступенів інтерполяційного многочлена провівши локальну інтерполяцію. Проте така інтерполяція має істотний недолік: в точках зшивання різних інтерполяційних поліномів буде розривна їх перша похідна, тому для вирішення задачі кусочно-лінійної інтерполяції використовують особливий вид кусочно-поліноміальної інтерполяції - сплайн-інтерполяцію.

Сплайн - це функція, яка на кожному частковому відрізку інтерполяції є алгебраїчним многочленом, а на заданому відрізку безперервна разом з декількома своїми похідними.

Нехай функція, яка інтерполюється f(x) задана своїми значеннями yi у вузлах xi (i= 1,..., n). Довжину часткового відрізку [xi - 1, xi] позначимо hi:

hi=xi – xi-1,(i=1,2,…,n).

Шукатимемо кубічний сплайн на кожному з часткових відрізків [xi - 1, xi] у вигляді:

S(x)=ai + bi(x- xi-1) + ci(x- xi-1)2 + di(x- xi-1)3,

де ai, bi, ci, di - чотири невизначених коефіцієнта.

Повинна буди дотримана вимога збігу значень S(x) у вузлах з табличними значеннями функції f(x) :

S(xi-1)= yi-1 = ai

S(xi)= y1 = ai + bihi + cihi2 + dihi3

Число цих рівнянь в два рази менше числа невідомих коефіцієнтів. Для того, щоб отримати додаткові умови, необхідно щоб виконувалась вимога безперервності першою і другою похідних сплайна в усіх точках включаючи вузли. Прирівнявши похідні, отримуємо ще два рівняння, яких не вистачало.

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

Приклад 1.3.4. Вирішити, використовуючи пакет MatLab, задачу інтерполяції за допомогою кубічних сплайнів для функції f(x)=sin(x), задану таблично в 5 точках на інтервалі [0, 2π].

1. Задайте табличні значення функції, що інтерполюється.

>>n=5;xl=0;xr=2*pi;h=(xr-xl)/(n-1);

>>i=1:n;

>>x(i)=2*h*(i-1);

>>y=sin(x);

  1. Задайте число проміжних точок, обчисліть їх координати і точні значення функції, що інтерполюється.

>>N=1000;

>>I=1:N;X(I)=2*pi/(N-1)*(I-1);

>>Y=sin(X);

3. Обчислите інтерпольовані значення функції у вузлах координатної сітки.

>>YY=spline(x,y,X);

4. Візуалізуйте результати сплайн-интерполяції.

>>plot(x,y,’o’,X,YY);

5. Обчислите і візуалізуйте значення перших похідних сплайна.

>>m=1:N-1;

>>YY1(m)=(YY(m+1)-YY(m))/(2*pi/(N-1));

>>plot(X(m),YY1(m));

6. Обчисліть і візуалізуйте значення других похідних сплайна.

>>m=1:N-2;

>>YY2(m)=(YY1(m+1)-YY1(m))/(2*pi/(N-1));

>>plot(X(m),YY2(m));

7. Обчисліть і візуалізуйте значення третіх похідних сплайна.

>>m=1:N-3;

>>YY3(m)=(YY2(m+1)-YY2(m))/(2*pi/(N-1));

>>plot(X(m),YY3(m));

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]