Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська Політехніка»
Інститут комп’ютерних технологій автоматики та метрології
Кафедра захисту інформації
/
Звіт
Про виконання лабораторної роботи № 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 рівнянь методом Ньютона без обертання матриці Якобі з заданою точністю і виводить результати роботи на екран.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!