МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Розрахунково-графічна робота
з курсу "Чисельні методи"
Підготував:
студент групи КН-23
Мельник Юрій
Перевірив:
к.т.н., доцент кафкдри САПР
Денисюк П.Ю.
Львів-2014
МЕТА РОБОТИ
Мета роботи – закріпити знання отримані при вивченні курсу «Чисельні методи в інформатиці» та ознайомитися з новими відомими чисельними методами.
Завдання:
Розв'язати систему лінійних алгебраїчних рівнянь методом Гаусса за схемою Халецького наведену у Додатку 1 згідно варіанту індивідуального завдання отриманого у викладача. Навести хід розв’язку. Здійснити перевірку розв’язку СЛАР за допомогою 2 ітерацій методом простої ітерації. Написати програму.
19.
Побудувати графік функції наведеної у додатку 2 згідно варіанту індивідуального завдання отриманого у викладача. На заданому інтервалі для 5 різних точок побудувати інтерполяційний поліном (степінь див. додаток 2). За допомогою інтерполяційного полінома дослідити вплив степені полінома на точність одержаних результатів. Написати программу
Дати розгорнуту відповідь на контрольні запитання наведені у додатку.
37. Метод простих інтерацій. Метод Зейделя.
9.Інтеполітаційний поліном Ерміта.Програмна реалізація.
Хід роботи:
I. Для виконання даного завдання нам потрібно виконати ряд дій:
Спочатку заповнюємо таблицю коефіцієнтів і таблицю вільних членів, відповідно до завдання;
Отримуємо розв’язок системи рівнянь за методом Гауса
Задаємо точність обчислення для методу простих ітерацій;
Знаходимо розв’язки системи рівнянь за допомогою методу простих ітерацій, а також ітерацію, на якій цей розв’язок було знайдено;
Результати даних дій почергово виводяться на екран, для методу простих ітерацій на екран виводяться матриці знормованої системи;
Аналізуємо отримані результати;
Код програми в середовищі MATLAB:
clear all;
clc;
disp('Таблиця коефіцієнтів:')
A 11 -2 -2 -1; -1 -9 2 -3; -6 -1 -14 8; 2 -3 -1 15]
disp('Таблиця вільних членів:')
B=[ 3; 6; -10; -8]
r=4;
disp('Метод Гауса')
Od=rref([A B]); %отримання одиничної матриці з розширеної
X=Od(1:r,(r+1)) %корені системи рівнянь
disp('Метод простих ітерацій')
%зведення системи до нормальної
AA=A'*A;
BB=A'*B;
e=0.00001;
t=0;
iter=0;
% кількість ітерацій
disp('Матриця A знормованої системи(A"A)');
disp(AA); %вивід матриці коефіцієнтів
disp('Матриця B знормованої системи(A"B)');
disp(BB); %вивід матриці вільних членів
NumIter=30;
for i=1:4,
for j=1:4,
if i==j
c(i,j)=0;
else
c(i,j)=-AA(i,j)/AA(i,i);
end;
end;
end;
for i=1:4,
d(i)=BB(i)/AA(i,i);
end;
for i=1:4,
sum1=0;
for j=1:4,
sum1=sum1+c(i,j);
end;
s1(i)=sum1;
end;
for i=2:4,
if s1(i)>sum1
sum1=s1(i);
end;
end;
ifabs(sum1)<1
for i=1:4,
x0(i)=d(i);
end;
for i=1:4,
s=0;
for j=1:4,
s=s+c(i,j)*x0(j);
end;
xk(i)=s;
end;
for i=1:4,
xk(i)=xk(i)+d(i);
end;
while((t<4)||(t>4))
iter=iter+1;
for i=1:4,
x0(i)=xk(i);
z(i)=x0(i);
end;
for i=1:4,
s=0;
for j=1:4,
s=s+c(i,j)*z(j);
xk(i)=s+d(i);
z(i)=xk(i);
end;
end;
t=0;
for i=1:4,
if(abs(xk(i)-x0(i))<e)
t=t+1;
end;
if t==4
for j=1:4,
disp(['X',num2str(j),' = ', num2str(xk(j))]);
end;
disp(['Ітерація ',num2str(iter)]);
end;
end;
end;
else
disp('Система не вирішена');
end;
Результат виконяння програми:
Таблиця коефіцієнтів:
A =
11 -2 -2 -1
-1 -9 2 -3
-6 -1 -14 8
2 -3 -1 15
Таблиця вільних членів:
B =
3
6
-10
-8
Метод Гауса
X =
0.1963
-0.4135
0.3043
-0.6219
Метод простих ітерацій
Матриця A знормованої системи(A"A)
162 -13 58 -26
-13 95 3 -24
58 3 205 -131
-26 -24 -131 299
Матриця B знормованої системи(A"B)
71
-26
154
-221
Перевірка правильності розв'язків методом Гауса за схемою Халецького:
Ax=d
, матриця С – нижня трикутна, В – верхня трикутна, причому діагональні коефіцієнти матриці В дорівнюють одиниці.
Починаємо заповнювати матриці В та С., а також матрицю Y. Робимо це за такими загальними формулами:
Перевіривши обрахунки за даним методом ми отримали значення невідомих, які практично збігаються зі значеннями обрахованими у пограмі, оскільки при обрахунку вручну деякі значення були заокруглені.
II. Для того щоб на заданому інтервалі для 5 різних точок побудувати інтерполяційний поліном 3 та 8 степенів, ми за допомогою середовища MATLAB, написали програму, де ми:
Створюємо для зручності одразу два масиви точок для заданих проміжків, враховуючи точки інтерполяції та екстраполяції. Дані масиви при потребі будемо змінювати.
Будуємо графік функції по точних значенням, враховуючи початкову умову: y = 0 при x < 2 та y = ln(x) при x >=2.;
Створюємо також для зручності одразу два масиви точок для заданих проміжків для поліномів. Дані масиви при потребі будемо змінювати.
Вибираємо наступні степені полінома n1 = 3; n2 =8;
Обраховуємо за другою формулою Ньютона поліноми 3 та 8 степенів.
Далі знаходимо абсолютні похибки поліномів різних степенів відносно точної функції;
Знаходимо відносні похибки;
Будуємо графік, де будуть зображені поліноми різних степенів та точна функція;
Будуємо графік, де будуть відображатися абсолютні похибки.
Повторюємо дії для другого інтервалу;
Код програми:
clear all;
clc;
format short;
% Проміжок з точками екстраполяції [-3;5]
x = [-3.15 -2 1 4 5.05];
% Проміжок з точками екстраполяції [5;10]
% x = [4 6 7 9 11];
[r c] = size(x);
for k = 1:c;
T(k) = 1/(1+ 77*(x(k)).^2);
end
a =[-3 5];
% a =[5 10];
n =[3 8];
for ni = n;
h = (a(2)-a(1))/ni;
xi = a(1):h:a(2);
[r1 c1] = size(xi);
for m = 1:c1;
y(m) = 1/(1+ 77*(x(m)).^2);
end
for j =1: c;
for i=1:(ni+1);
CH = x(j)-xi;
ZN = xi(i) - xi;
CH(i) = 1;
ZN(i) = 1;
L(i)=prod(CH)/prod(ZN)*y(i);
end
Li(j,ni) = sum(L)
end
% Абсолютна похибка
AP(:,ni)=abs(T(:)-Li(:,ni))
% Відносна похибка
VP(:,ni)=AP(:,ni)./T(:)
end
figure(1);
plot(x,T,'b', x, Li(:,n(1)),'g-.', x, Li(:,n(2)),'rd--')
legend('Точна функція','Поліном 4 степеня','Поліном 7 степеня')
figure(2);
plot(x, AP(:,n(1)),'g-.', x, AP(:,n(2)),'rd--')
legend('Поліном 4 степеня','Поліном 7 степеня')
title('Абсолютна похибка');
figure(3);
plot(x, VP(:,n(1)),'g-.', x, VP(:,n(2)),'rd--')
legend('Поліном 4 степеня','Поліном 7 степеня')
title('Відносна похибка');
Результати:
Для проміжку [5;10]
Рис. Графік точної функції та поліномів
Рис. Абсолютна похибка
Рис. Відносна похибка
Для проміжку [-3;5]
Рис. Графік точної функції та поліномів
Рис. Абсолютна похибка
Рис. Відносна похибка
Відповіді на контрольні запитання
37) . Метод простих інтерацій. Метод Зейделя.
Використана література
1. Щуп Т. Решение инженерных задач на ЕВМ. – М.: Мир, 1982. – 235с.
2. Демидович Б. П., Марон И. А. Основы вычислительной математики. – М.: Наука, 1970. – 664 с.
3. Демидович Б. П., Марон И. А., Шувалова Е. З. Численные методы анализа. – М.: Мир, 1967Волков Е. А. Численные методы. – М.: Наука, 1988.
4. Мак – Кракен Д., Дрон У. Численные методы и програмирование на фортране. – М.: Мир, 1977. – 584 с.
5. Бахвалов Н. С. Численные методы . Т. И. Анализ, алгебра, обычные диференциальные уравнения. – М.: Наука, 1975. – 631 с.