Читайте также: |
|
Оглавление
Оглавление. 2
Цель работы.. 3
Уравнение для проверки (1 вариант) 3
Тереоретическое обоснование. 4
Текст программы.. 5
Вывод программы.. 6
Цель работы
1. Программная реализация на языке С++ метода простых итераций для решения нелинейного уравнения.
2. Проверка работы составленной программы для заданной системы.
Уравнение для проверки (1 вариант)
Теоретическое обоснование
В основе метода заложено понятие сжимающего отображения. Определим терминологию:
Говорят, что функция осуществляет сжимающее отображение на , если
1.
2.
Тогда основная теорема будет выглядеть так:
Теорема Банаха (принцип сжимающих отображений). Если — сжимающее отображение на , то: 1. — корень; 2. итерационная последовательность сходится к этому корню; 3. для очередного члена справедливо . |
Поясним смысл параметра . Согласно теореме Лагранжа имеем:
Отсюда следует, что . Таким образом, для сходимости метода достаточно, чтобы
1.
.........
и так далее, пока
Текст программы
#include "stdafx.h"
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <iomanip>
using namespace std;
long double func (long double x)
{
return (acos(x*x));
}
long double method_simple_iteration(long double epsilon, unsigned __int64 &i)
{
long double x0=-1.0, xI = func(x0);
for (i = 1; abs(xI - x0) >= epsilon; ++i)
{
x0 = xI;
xI = func(x0);
}
return xI;
}
int _tmain(int argc, _TCHAR* argv[])
{
unsigned __int64 count_of_iteration = 0;
long double e = 0.0001;
cout << "Epsilon " << fixed << setprecision(15) << e << endl;
cout << "Simple iteration method " << fixed << setprecision(16) << method_simple_iteration(e,count_of_iteration) << "\t" << count_of_iteration << endl;
system("pause");
return 0;
}
Дата добавления: 2015-12-01; просмотров: 24 | Нарушение авторских прав