Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Тема №8. Решение систем нелинейных алгебраических уравнений.




Задание: графически и численно решить систему нелинейных алгебраических уравнений, на примере поиска точек пересечения двух функций.

Исходные данные:

график строится по исходным данным, определяемым в виде констант в программе:

а) координаты верхнего левого угла прямоугольника, в котором должен быть расположен график;

б) размеры прямоугольника;

в) количество линий координатной сетки по каждой из осей;

г) диапазон изменения аргумента;

Решение нелинейного алгебраического уравнения проводить одним из методов:

- простых итераций;

- дихотомии (деления отрезка пополам);

- пошаговых приближений.

 

Примерный внешний вид результата решения на экране:

 

Как видно из этого рисунка на экране должны быть изображены:

- графики функций,

- оси координат,

- координатная сетка,

- предельные значения по осям.

 

А также должны присутствовать координаты точек пересечения, например:

 

X -0.8 +0.8

Y +0.7 +0.7

 

Также должно быть предусмотрено сохранение:

1) координат точек пересечения в типизированном файле;

2) таблицы обеих функций в отдельных нетипизированных файлах (под таблицей функции подразумевается двумерный массив, первый столбец которого – это значения аргумента, а второй – значения функции).

 

Варианты заданий

 

Таблица № 1
система уравнений отрезок аргумента
  -5<x<5
  -5<x<5
  -5<x<5
  -5<x<3
  -5<x<5
  -5<x<5
  -5<x<5
  -5<x<5
  -5<x<5
  -5<x<5
  -5<x<10
  -5<x<10
  -5<x<5
  0.5<x<1
  0.5<x<1

 

Напомним, что решение нелинейного алгебраического уравнения вида F(x) = 0 состоит в том, чтобы найти такие значения переменной x, при которых значение функции F(x) обращается в нуль. Поиск решения уравнения ведется в пределах отрезка значений аргумента x. Отрезок, на котором ведется поиск решения, в данной задаче задан. Процесс поиска итерационный. Общий алгоритм поиска для всех трех методов решения следующий:

1. Задается начальное значение для аргумента x

2. По значению аргумента x вычисляется новое значение аргумента x.

3. Проверяется условие достижения наперед заданной точности и, если условие выполняется, то вычисленное значение принимается за решение, в противном случае алгоритм повторяется, начиная со 2-го пункта.

Для обеспечения сходимости итерационного процесса в зависимости от алгоритма метода должно быть выполнено несколько условий.

Для использования метода простых итераций необходимо выполнение следующих условий:

1. Решение уравнения в пределах указанного отрезка должно быть единственным.

2. Уравнение F(x) = 0 можно преобразовать к виду x = f(x).

3. Первая производная функции f(x) должна быть меньше 1 на всем отрезке.

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

// функция f(x)

function f (x: real): real;

begin

f:= sin (x) + 0.25;

end;

var x, e: real;

begin

writeln ('Решение уравнения x = sin(x) + 0.25 методом простых итераций');

writeln;

write ('Задайте начальное значение x x0 = ');

readln (x);

write ('Задайте погрешность вычисления результата e = ');

readln (e);

while abs (f (x) - x) >= e do

begin

x:= f (x);

writeln (x: 12: 9);

end;

writeln;

writeln('Корень уравнения x = ', x: 12: 9);

write('Для продолжения нажмите <Enter>');

readln;

end.

Метод деления отрезка пополам (дихотомии) можно применять, при условии, что на выбранном отрезке есть только один корень, и реализуется следующим алгоритмом:

1. Исходный отрезок [a,b], на котором ищется корень, делится пополам.

2. Если значение функции F(x) в середине отрезка совпадает по знаку с левой границей отрезка, то левая граница отрезка переносится в середину отрезка, в противном случае в середину отрезка переносится правая граница.

3. Если размеры отрезка больше заданной точности, то повторить действия, начиная с первого пункта, в противном случае любая из границ отрезка принимается за решение.

function F (x: real): real;

begin

F:= x - sin (x) - 0.25;

end;

var

a, b, x, e: real;

begin

writeln;

writeln('Решение уравнения x-sin(x)-0.25=0 методом дихотомии');

writeln;

repeat

writeln('Задайте границы отрезка [a,b], причем а<b ');

write('a = ');

readln (a);

write('b = ');

readln (b);

until b > a;

write('Задайте погрешность вычисления результата e = ');

readln (e);

repeat

x:= (a + b) / 2;

if F (x) * F (a) > 0

then a:= x

else b:= x;

until (b - a) < e;

writeln('Корень уравнения x = ', x: 12: 9);

write('Для продолжения нажмите <Enter>');

readln;

end.

Метод пошаговых приближений позволяет найти все решения на заданном отрезке и реализуется следующим алгоритмом:

1. По виду графика выбирается начальное значение шага таким, чтобы оно было меньше расстояния между ближайшими корнями.

2. На каждом шаге по значениям функций в граничных точках проверяется наличие корня на выбранном отрезке.

3. Если корень есть, то величину шага уменьшают в заданное число раз, например, N=5.

4. Если значение полученного шага меньше, чем заданная точность, деленная на N, то начало отрезка принимается за корень. иначе выполняют действия, начиная с пункта 2.

Для определения отрезка, на котором есть корень в приведенном ниже примере используется функция SubRange, а для вычисления корня - функция Root.





Поделиться с друзьями:


Дата добавления: 2016-12-06; Мы поможем в написании ваших работ!; просмотров: 482 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Победа - это еще не все, все - это постоянное желание побеждать. © Винс Ломбарди
==> читать все изречения...

2214 - | 2048 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.