Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська Політехніка»
Інститут комп’ютерних технологій автоматики та метрології
Кафедра захисту інформації
/
Звіт
Про виконання лабораторної роботи № 5
«Комп’ютерні методи дослідження
інформаційних процесів і систем»
(Варіант3)
Мета роботи: ознайомлення з напоширенішим ітераційним методом розвязування систем нелінійних рівнянь – модифікованим методом Ньютона.
Завдання:
Ознайомитись з основними теоретичними відомостями.
Розробити детальну блок-схему алгоритму методу.
Написати програму, яка забезпечить розв’язок та виведення на екран результатів роботи.
Ввести в комп’ютер програму згідно з отриманим завданням.
Здійснити відладку введеної програми, виправивши виявлені помилки.
Виконати програму. Текст відлагодженої програми та отримані результати оформити у звіт з лабораторної роботи.
варіант
Система рівнянь
Метод
Початкові наближення
Похибка
3
Модифікований Ньютона
х1 = -1
х2 = 1
0,0001
Блок-схеми:
початок
введення х1,х2,Е
обчислення якобіана
обчислення визначника
матриці
обчислення оберненого
якобіана
обчислення
функції
Обчислення нових іксів
while (dE>E);
Вивести
х1,х2
кінець
Остаточна версія програми:
#include <stdafx.h>
#include <iostream>
#include <math.h>
using namespace std;
double xs[2],xn[2],jac[2][2],F[2],Jobernene[2][2],E,det,dE;
int i,j,ins;
double sqr(double a)
{
return a*a;
}
int main()
{
cout<<"Vvedit: x1,x2,E\n";
cin>>xs[0]>>xs[1]>>E;
do
{
jac[0][0]=(1-(xs[0]*xs[0]-2*xs[0]*xs[0])/(sqr((xs[0]*xs[0]+xs[1]*xs[1]))));
jac[0][1]=(2*xs[0]*xs[1])/(sqr((xs[0]*xs[0]+xs[1]*xs[1])));
jac[1][0]=(2*xs[0]*xs[1])/(sqr((xs[0]*xs[0]+xs[1]*xs[1])));
jac[1][1]=(1-(xs[0]*xs[1]-2*xs[1]*xs[1])/((sqr((xs[0]*xs[0]+xs[1]*xs[1])))));
det = jac[1][ 1] * jac[0][ 0] - jac[0][ 1] * jac[1][ 0];
Jobernene[0][ 0] = (1 / det) * jac[1][ 1];
Jobernene[0][ 1] = ((-1) / det) * jac[1][ 0];
Jobernene[1][ 0] = ((-1) / det) * jac[0][ 1];
Jobernene[1][ 1] = (1 / det) * jac[0][ 0];
F[0]=xs[0]-(xs[0]/(sqr(xs[0])+sqr(xs[1])))+0.4;
F[1]=xs[1]-(xs[1]/(sqr(xs[0])+sqr(xs[1])))-1.4;
xn[0]=xs[0]-Jobernene[0][0]*F[0]+Jobernene[1][0]*F[1];
xn[1]=xs[1]-Jobernene[0][1]*F[0]+Jobernene[1][1]*F[1];
dE=(xn[0]-xs[0])/xs[0];
if(((xn[1]-xs[1])/xs[1])<dE)dE=((xn[1]-xs[1])/xs[1]);
xs[0]=xn[0];
xs[1]=xn[1];
}
while (dE>E);
cout<<"x1="<<xn[0];
cout<<"x2="<<xn[1];
cin>>ins;
Результати роботи програми:
/
Висновок:
В цій лабораторній роботі я ознайомився з основним методом розвязання систем нелінійних рівнянь – модифікованим методом Ньютона. Дана програма розвязує систему з n рівнянь методом Ньютона без обертання матриці Якобі з заданою точністю і виводить результати роботи на екран.