русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Решение систем линейных уравнений


Дата добавления: 2013-12-23; просмотров: 989; Нарушение авторских прав


END.

Xp:=x;

REPEAT

X:=x0;

Read(x0,e);

Begin

End;

Begin

End;

Begin

Program Newton;

END.

Else

REPEAT

K:=0;

Read(a,b,e);

Begin

End;

Begin

VAR

Program Bisect;

End.

X:=f(x);

Xp:=x;

REPEAT

X:=x0;

Read(x0,e);

Begin

End;

Begin

VAR

Program Iter;

xp, e, x0, x :REAL;

Function f(x:real): real;

f:= x*x-2;

writeln('введите начальное приближение х и точность');

UNTIL ABS(x-xp)<e;

writeln('корень уравнения =', x);

 

В данной программе используется подпрограмма функция f, которая вычисляет левую часть преобразованного уравнения:

 

.

 

Переменная xp используется в программе для сохранения предыдущего значения х.

 

Численное решение нелинейных уравнений
методом бисекции

Метод сос­то­ит в по­стро­е­нии по­­­сле­­до­ва­тель­ности вло­жен­ных от­рез­ков, на кон­­цах ко­то­рых F(х) имеет разные зна­ки. Каж­дый по­­­сле­­ду­ю­щий от­ре­зок получают де­ле­ни­­ем по­по­лам пре­ды­ду­­ще­го. Этот процесс по­стро­е­ния по­­­сле­­до­­ва­тель­нос­ти вло­жен­ных отрезков по­зво­ляет най­­­ти нуль функ­ции (F(х) = 0) с лю­бой за­дан­ной точ­­­ностью.

Опишем подробно один шаг итерации (рис. 28). Пусть на k-м ша­ге найден отрезок [аk , bk], на концах ко­­то­рого F(х) меняет знак. Заметим, что обязательно [аk, bk] Î [а, b].



1. Разделим те­перь отрезок [аk, bk] пополам и вы­де­­лим F(ck), где ck – се­ре­ди­­на [аk , bk].

2. Здесь воз­мож­­ны два слу­чая:

§ первый, ког­да F(ck) = 0, тогда мы го­ворим, что ко­рень найден;

§ вто­рой, ког­да F(ck) ¹ 0, тог­да срав­­ниваем знак F(ck) с F(аk) и F(bk) и из двух по­­ло­­вин [аk, ck] и [ck, bk] вы­бираем ту, на концах ко­то­рой функ­ция меняет свой знак. Та­ким образом, аk+1 = аk , bk+1 = ck, если F(ck)F(аk) < 0 (рис. 27), и аk+1 = ck , bk+1 = bk, ес­ли F(ck)F(bk) < 0.

При заданной точности e деление пополам про­­­­­­дол­жа­ют до тех пор, пока длина отрезка не ста­­­­­нет меньше 2e, тогда координата середины по­­след­­­­него най­­­денного от­резка и есть значение кор­­ня тре­бу­е­мой точ­ности.

 

Рисунок 28 – Геометрическая интерпретация решения уравнения методом бисекции
a) k–й шаг; b) k+1-й шаг.

 

Приведём программу, реализующую итерационный метод уточнения корня уравнения:

.

 

A,B,E :REAL; X : REAL;

Function f(x:real): real;

f:= x*x-x-2;

writeln('введите отрезок локализации корня [a,b] и точность');

X := (A+B)*0.5;

IF f(X)*f(B)<0 THEN

a:=x

b:=x

UNTIL ABS(B-A)<e;

writeln('корень уравнения =', (A+B)*0.5);

 

В данной программе используется подпрограмма функция f, которая вычисляет левую часть исходного уравнения:

.

Переменная x используется в программе для сохранения значения середины отрезка [a, b].

 

 

Численное решение нелинейных уравнений
методом Ньютона

Положим:

,

 

где x – корень уравнения f(x) = 0, hn считаем малой величиной. Отсюда, применяя формулу Тейлора, получим:

 

.

 

Следовательно, . Подставив это выражение, получим:

 

 

Геометрическая интерпретация метода представлена на рисунке 29.

Через точку А0(х,у) с координатами х = x0, у = f(x0) про­водим ка­са­тель­­ную. По формуле

 

 

на­ходим точку пересечения касательной с осью ОХ (точ­к­а х1).

Находим точку А11,у), проводим касательную через точку А1 для нахождения х2.

Этот процесс продолжаем до тех пор, пока разница |хi+1-xi| не станет меньше, чем значение e, т.е. пока не будет найдено значение корня с заданной точностью e.

 

Рисунок 29 – Геометрическая интерпретация решения уравнения методом Ньютона

 

Приведём программу, реализующую итерационный метод уточнения корня уравнения:

.

 

VAR xp,E,x0 :REAL; X: REAL;

Function f(x:real): real;

f:= x*x-x-2;

Function df(x:real): real;

df:= 2*x-1;

writeln('введите начальное приближение х и точность');

x:=x-f(x)/df(x);

UNTIL ABS(x-xp)<E;

writeln('корень уравнения =', x);

 

В данной программе используется подпрограмма функция f, которая вычисляет левую часть исходного уравнения:

а также подпрограмма функция df, которая вычисляет значение дифференциала:

.

Переменная xp используется в программе для сохранения предыдущего значения х.

 

К решению систем линейных алгебраических уравнений с большим числом неизвестных приводят многие практически важные задачи. Разработано множество методов, предназначенных для решения систем с матрицей того или иного вида. Все эти методы можно разделить на два больших класса: прямые (или точные) и итерационные.

Прямые методы дают решение системы за конечное число арифметических операций. Если коэффициенты системы не содержат погрешностей, а арифметические операции выполняются точно (без округления), то решение получается точным. Недостатки прямых методов: иногда требуется выполнение неприемлемо большого числа арифметических и логических операций; погрешности округления могут очень сильно исказить результат.

Итерационные методы позволяют получить приближенное решение с любой заданной точностью ε. Они дают искомое решение как предел последовательности приближений и различаются способами построения таких последовательностей. Недостатком этих методов является то, что построенные последовательности нередко оказываются расходящимися, т.е. конечного предела таких последовательностей может не существовать. Поэтому оказывается необходимым исследование сходимости.

Численное решение систем линейных
уравнений методом Гаусса

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

 

 

в матричной форме такая система выглядит так:

 

,

 

где А – матица коэффициентов системы уравнений:

,

 

– вектор свободных членов (правых частей) уравнений, – вектор неизвестных:

 

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

В результате прямого хода матрицы системы за m преобразований приводится к треугольному виду:

 

.

 

Количество преобразований исходной матрицы (m) в общем случае равно количеству уравнений в системе (n).

На каждом k-ом шаге преобразования выбирается ведущая строка (k) и ведущий элемент .

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

;

для строк, лежащих под ведущей строкой:

.

Элемент называется ведущим.

Обратный ход используется для вычисления значений неизвестных.

Система уравнений с треугольной матрицей А имеет следующий вид:

 

 

Очевидно, что

.

 

Формула обратного хода метода Гаусса (нахождения остальных неизвестных в обратном порядке) имеет вид:

.

 

При разработке программы необходимо учитывать то, что принципы индексации, принятые в математике и используемые при разработке программы, могут различаться: коэффициенту уравнения соответствует элемент массива А[j,i] (см. пункт«Описания массивов» стр. 38).

Приведём программу, использующую метод Гаусса для решения системы линейных уравнений (обратите внимание на комментарии, поясняющие назначение ключевых фрагментов программы):

 



<== предыдущая лекция | следующая лекция ==>
Решение нелинейных уравнений | Численное интегрирование методом прямоугольников


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.34 сек.