Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Звіт до лабораторної роботи № 4
з курсу “Комп’ютерні методи дослідження систем керування”
СИСТЕМИ НЕЛІНІЙНИХ РІВНЯНЬ.
МЕТОД НЬЮТОНА ТА -АЛГОРИТМ
Варіант #16
Мета роботи: ознайомитися з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – методом Ньютона та екстраполяційним методом – -алгоритмом.
Завдання:
16
-алгоритм
поч. наближення
Код програми:
#include "iostream"
using namespace std;
int main(void)
{
const int m = 2;
const int n = 5;
int q = m;
int p = 2;
double sum;
double e[n + 1][n + 1][m], V[m], x[m] = {0.5, 0.5};
double ee = pow(10.0, -7);
bool con_d = false;
for (int j = 0; j < n+1; j++)
for (int i = 0; i < m ; i++)
{
e[j][0][i] = 0;
}
do
{
con_d = false;
for (int j = 1; j <= p; j++)
{
x[0] = pow(x[0], 2) - pow(x[1], 2) + 0.1;
x[1] = 2 * x[0] * x[1] - 0.1;
}
for (int i = 0; i < m; i++)
{
e[0][1][i] = x[i];
}
for (int j = 0; j <= 2 * q - 1; j++)
{
e[j + 1][1][0] = x[0] = pow(x[0], 2) - pow(x[1], 2) - 0.1;
e[j + 1][1][1] = x[1] = 2 * x[0] * x[1]- 0.1;
if (j == 0)
{
for (int i = 0; i < m; i++)
{
con_d = con_d || (fabs((e[1][1][i] - e[0][1][i]) / e[1][1][i]) > ee);
}
if (con_d = false)
{
break;
}
}
}
if (con_d)
{
for (int k = 1; k <= n - 1; k++)
for (int j = 0; j < n - k; j++)
{
for (int i = 0; i < m; i++)
{
V[i] = e[j + 1][k][i] - e[j][k][i];
}
sum = 0;
for (int i = 0; i < m; i++)
{
sum = sum + V[i] * V[i];
}
for (int i = 0; i < m; i++)
{
V[i] = V[i] / sum;
}
for (int i = 0; i < m; i++)
{
e[j][k + 1][i] = e[j + 1][k - 1][i] + V[i];
}
}
for (int i = 0; i < m; i++)
{
x[i] = e[0][n][i];
}
}
} while (con_d);
for (int i = 0; i < m; i++)
{
cout << "x["<< i + 1 <<"] = " << x[i] << endl;
}
cout << "f[1] = " << pow(x[0], 2) - pow(x[1], 2)- 0.1-x[0] << endl;
cout << "f[2] = " << 2 * x[0] * x[1] - 0.1- x[1] << endl;
system("pause");
return 0;
}
Результат роботи програми:
/