C уравнение методом простой итерации

Метод итераций

Правила ввода функции

  1. Примеры
    ≡ x^2/(1+x)
    cos 2 (2x+π) ≡ (cos(2*x+pi))^2
    ≡ x+(x-1)^(2/3)

На рис.1а, 1б в окрестности корня |φ′(x)| 1, то процесс итерации может быть расходящимся (см. рис.2).

Достаточные условия сходимости метода итерации

Процесс нахождения нулей функции методом итераций состоит из следующих этапов:

  1. Получить шаблон с омощью этого сервиса.
  2. Уточнить интервалы в ячейках B2 , B3 .
  3. Копировать строки итераций до требуемой точности (столбец D ).

Примечание: столбец A — номер итерации, столбец B — корень уравнения X , столбец C — значение функции F(X) , столбец D — точность eps .

C уравнение методом простой итерации

Nickolay.info. Обучение. Лекции по численным методам. Приближённое решение нелинейных алгебраических уравнений

1. Приближенное решение нелинейных алгебраических уравнений

Дано нелинейное алгебраическое уравнение

Нелинейность уравнения означает, что график функции не есть прямая линия, т.е. в f(x) входит x в некоторой степени или под знаком функции.

Решить уравнение – это найти такое x* ∈ R: f(x*)=0. Значение x* называют корнем уравнения. Нелинейное уравнение может иметь несколько корней. Геометрическая интерпретация корней уравнения представлена на рис. 1. Корнями уравнения (1) являются точки x1*, x2*, x3*, в которых функция f(x) пересекает ось x.

Методы решения нелинейного уравнения (1) можно разделить на точные (аналитические) и приближенные (итерационные). В точных методах корень представляется некоторой алгебраической формулой. Например, решение квадратных уравнений, некоторых тригонометрических уравнений и т. д.

В приближенных методах процесс нахождения решения, вообще говоря, бесконечен. Решение получается в виде бесконечной последовательности <xn>, такой, что . По определению предела, для любого (сколь угодно малого) ε, найдется такое N, что при n>N, |xn x*| / (x) не меняет знак на отрезке [a, b], т.е. f(x) – монотонная функция, в этом случае отрезок [a,b] будет интервалом изоляции.

Если корней несколько, то для каждого нужно найти интервал изоляции.

Существуют различные способы исследования функции: аналитический, табличный, графический.

Аналитический способ состоит в нахождении экстремумов функции f(x), исследование ее поведения при и нахождение участков возрастания и убывания функции.

Графический способ – это построение графика функции f(x) и определение числа корней по количеству пересечений графика с осью x.

Табличный способ это построение таблицы, состоящей из столбца аргумента x и столбца значений функции f(x). О наличии корней свидетельствуют перемены знака функции. Чтобы не произошла потеря корней, шаг изменения аргумента должен быть достаточно мелким, а интервал изменения достаточно широким.

Решить уравнение x 3 ‑ 6x 2 +3x+11=0, т.е. f(x)= x 3 ‑ 6x 2 +3x+11.

Найдем производную f / (x)=3x 2 -12x+3.

Найдем нули производной f / (x)=3x 2 -12x+3=0; D=144-4*3*3=108;

X1== 0.268;

X2== 3.732;

Так как f / ()>0, то f / (x)>0 при , f / (x) / (x)>0 при . Кроме того, f()= 0. Следовательно, на интервале возрастает от до f(x1)= 3x1 2 -12x1+3=11.39; на интервале — убывает до f(x2)= 3x2 2 -12x2+3=-9.39 и на интервале возрастает до , т.е. уравнение имеет три корня.

Найдем интервалы изоляции для каждого из корней.

Рассмотрим для первого корня отрезок [-2, -1]:

f(-2)= -27 0, f / (x)>0 при т.е. этот отрезок является интервалом изоляции корня.

Рассмотрим для второго корня отрезок [1, 3]:

f(1)= 9>0, f(3)= -7 / (x) 0, f / (x)>0 при т.е. этот отрезок является интервалом изоляции корня.

Метод Зейделя на C++

Для написания программы, решающей систему линейных уравнения методом итерации или Зейделя, Вам потребуется среда разработки, например Visual Studio 2008 или Dev-C++.

Создадим новый проект пустой проект и добавим в него файл исходного кода — main.cpp со следующим содержимым

Листинг 1.1 — main.cpp

Теперь создадим заголовочный файл norm.h, содержащий прототипы функций, вычисляющих нормы матрицы, и iterat.h, содержащий прототип функции iterat() , которая считает количество итераций.

Листинг 1.2 — norm.h

Листинг 1.3 — iterat.h

Теперь добавим в проект третий заголовочный файл okr.h — в нем будет находиться прототип функции округления

Листинг 1.4 — okr.h

Создадим еще три файла — norm.cpp, iterat.cpp и okr.cpp

Листинг 1.5 — norm.cpp

В файле iterat.cpp будет описана функция, вычисляющая количество итераций по по методу Зейделя, либо по методу простых итераций.

Листинг 1.6 — iterat.cpp

И последний файл — okr.cpp, содержащий определение функции округления

Листинг 1.7 — okr.cpp

Вы можете скачать полный архив со всем файлами проекта.


источники:

http://nickolay.info/study/methods/01.html

http://code-live.ru/post/cpp-simple-iterations-and-zeydels-method/