Программирование в системе Турбо Паскаль
Решение систем линейных алгебраических уравнений методом Зейделя: теоретическое описание алгоритма, формирование блок-схемы и написание текста программы. Преобразование массива положительных вещественных чисел по заданному алгоритму программными методами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 26.03.2011 |
Размер файла | 29,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Государственное агентство Российской Федерации по образованию
Архангельский Государственный Технический Университет
Кафедра древесиноведения и тепловой обработки
Факультет механической технологии древесины
Курсовая работа
по информатике
(133.01.КР.02.ПЗ)
Выполнил: студент факультета МТД I курса, 2 группы
Тележкин В.Л.
Руководитель работы: Земцовский А.Е.
Консультанты:
Нормоконтроль:
Архангельск - 2005
СОДЕРЖАНИЕ
1 Программа решения систем линейных уравнений по методу Зейделя
1.1 Формулировка задачи
1.2 Описание алгоритма
1.3 Блок-схема программы
1.4 Текст программы
1.5 Результаты работы программы
1.6 Ручной расчёт контрольного примера
2 Задача №2
2.1 Условие задачи
2.2 Блок схема программы и описание алгоритма
2.3 Текст программы
2.4 Результаты
Список используемой литературы
1 ПРОГРАММА РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ ПО МЕТОДУ ЗЕЙДЕЛЯ
1.1 Формулировка задачи
Решить систему линейных алгебраических уравнений с вещественными коэффициентами методом Зейделя с точностью =0,1; =0,01; =0,001; =0,0001.
1.2 Описание алгоритма
В переменную е - максимальная абсолютная погрешность. С помощью вспомогательной процедуры ReadSystem в двумерный массив а и одномерный массив b вводится с клавиатуры расширенная матрица системы. Начальное приближение предполагается равным нулю. Оба массива и переменные n и e передаются функции Seidel. в функции Seidel исследуется сходимость системы, и в случае если система не сходится, выполнение функции прекращается с результатом false. В ходе получения погрешность становится меньше заданной, выполнение функции прекращается. Полученное решение выводится на экран при помощи вспомогательной процедуры WriteX.
1.3 Блок - схемы программы
Размещено на http://www.allbest.ru/
Рисунок - Блок-схема основной программы
Размещено на http://www.allbest.ru/
Рисунок - Процедура WriteX
Размещено на http://www.allbest.ru/
Рисунок - Процедура ReadSystem
1.4 Текст программы
Uses CRT;
const n=3;
Matrix = Array[1..n, 1..n] of Real;
Vector = Array[1..n] of Real;
{Процедура ввода расширенной матрицы системы }
Procedure ReadSystem(n: Integer; var a: Matrix; var b: Vector);
Var
i, j, r: Integer;
Begin
r := WhereY;
GotoXY(2, r);
Write(`A');
For i := 1 to n do begin
Размещено на http://www.allbest.ru/
Рисунок - Функция Seidel
Размещено на http://www.allbest.ru/
Рисунок - Функция Seidel
GotoXY(i * 6 + 2, r);
Write(i);
GotoXY(1, r + i + 1);
Write(i:2);
end;
GotoXY((n + 1) * 6 + 2, r);
Write(`b');
For i := 1 to n do begin
For j := 1 to n do begin
GotoXY(j * 6 + 2, r + i + 1);
Read(a[i, j]);
end;
GotoXY((n + 1) * 6 + 2, r + i + 1);
Read(b[i]);
end;
End;
{ Процедура ввода результатов}
Procedure WriteX(n :Integer; x: Vector);
Var
i: Integer;
Begin
For i := 1 to n do
Writeln(`x', i, ` = `, x[i]:6:4);
readln;
End;
{ Функция, реализующая метод Зейделя}
Function Seidel(n: Integer; a: Matrix; b: Vector; var x: Vector; e: Data)
:Boolean;
Var
i, j: Integer;
s1, s2, s, v, m: Data;
Begin
{ Исследуем сходимость}
If j <> i then
s := s + Abs(a[i, j]);
If s >= Abs(a[i, i]) then begin
Seidel := false;
Exit;
end;
end;
Repeat
m := 0;
For i := 1 to n do begin
{ Вычисляем суммы}
s1 := 0;
s2 := 0;
For j := 1 to i - 1 do
s1 := s1 + a[i, j] * x[j];
For j := i to n do
s2 := s2 + a[i, j] * x[j];
{ Вычисляем новое приближение и погрешность}
v := x[i];
x[i] := x[i] - (1 / a[i, i]) * (s1 + s2 - b[i]);
If Abs(v - x[i]) > m then
m := Abs(v - x[i]);
end;
Until m < e;
Seidel := true;
End;
Var
i: Integer;
a: Matrix;
b, x: Vector;
e: Data;
Begin
ClrScr;
Writeln('Программа для решения систем линейных уравнений методом Зейделя');
Writeln;
Writeln('Введите точность вычислений');
Repeat
Write(`>');
Read(e);
Until (e > 0) and (e < 1);
Writeln;
Writeln('Введите расширенную матрицу системы');
ReadSystem(n, a, b);
Writeln;
{ Предполагаем начальное приближение равным нулю}
For i := 1 to n do
x[i] := 0;
If Seidel(n, a, b, x, e) then begin
Writeln('Результат вычислений по методу Зейделя');
WriteX(n, x);
end
else
Writeln('Метод Зейделя не сходится для данной системы');
Readln;
End.
1.5 Результаты работы программы
Программа для решения систем линейных уравнений методом Зейделя.
Введите точность вычислений:
>0.01
Введите расширенную матрицу системы
A |
1 |
2 |
3 |
B |
|
1 |
4 |
0.24 |
-0.08 |
8 |
|
2 |
0.09 |
3 |
-0.15 |
9 |
|
3 |
0.04 |
-0.08 |
4 |
20 |
Результат вычислений по методу Зейделя:
x1=1.9092
x2=3.1950
x3=5.0448
Проверяем, подставляя в уравнения. Результаты правильные.
1.6 Ручной расчёт контрольного примера
Найдём определитель системы:
Корни уравнения:
, ,
2 ЗАДАЧА №2
2.1 Условие задачи
Дан одномерный массив положительных вещественных чисел. Последовательно преобразовать этот массив согласно следующему алгоритму. Сначала обнуляется минимальный элемент массива, затем максимальный из оставшихся, далее минимальный из оставшихся и т.д. Вывести на экран сначала последний оставшийся ненулевой элемент, потом множество индексов элементов, которые были минимальными, а затем множество индексов элементов, которые было максимальными.
программирование турбо паскаль
2.2 Блок схема программы и описание алгоритма
Блок-схема программы представлена на рисунке.
Использование в программе подпрограммы - процедуры Procedure mm. Сначала осуществляется нахождение максимального и минимального элемента массива с помощью процедуры Procedure mm., затем последовательно обнуляются элементы массива (с- сисло элементов массива). Далее нахождение последнего ненулевого элемента и вывод его на экран. Вывод на экран множества индексов А[i] минимального и максимального элементов.
2.3 Текст программы
Program for_2;
Const n=5;
Var I,k,r:integer;
Min, max:real;
A:array[l..n] of real;
Размещено на http://www.allbest.ru/
Рисунок - Блок-схема программы
Begin
For i:=l to n do
Begin
Write(`Ввести_',i, `_элемент массива_'); Readln(a[i]);
End;
Min:=a[l];
K:=l;
Max:=a[l];
R:=l;
For i:=2 to n do
Begin
If a[l]<min then begin
Min:=a[l];
K:=i;
End;
If a[i]>max then begin
Max:=a[i];
R:=i;
End;
End;
Writeln(`max_', max: 10:2);
Writeln(`min_', min:10:2);
Writeln('порядковый номер max', r:5);
Writeln('порядковый номер min', r:5);
Readln;
Begin
Min:=0;
Max:=0;
Writeln(` `, max:5:0);
Writeln(` `, min:5:0);
End.
2.4 Результаты
Ввести_1_элемент массива_14
Ввести_2_элемент массива_56
Ввести_3_элемент массива_23
Ввести_4_элемент массива_2
Ввести_5_элемент массива_9
max_56.00
min_2.00
порядковый номер max 2
порядковый номер min 4
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Немнюгин С.А. TURBO PASCAL. Практикум. - М. 2005.
2. Самарский А.А., Гулин А.В. Числовые методы. М.: Наука, 1989. - 430 с.
3. Грошев А.С. Практикум по программированию в системе ТУРБО ПАСКАЛЬ 7.0. - Архангельск 2002.
Размещено на Allbest.ru
Подобные документы
Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal.
курсовая работа [1,2 M], добавлен 15.06.2013Использование метода Зейделя для нахождения корней системы линейных алгебраических уравнений. Суть метода простых итераций. Оценка погрешности нормальной системы. Составление алгоритма, блок-схемы и кода программы. Тестовый пример и проверка в MathCad.
лабораторная работа [174,8 K], добавлен 02.10.2013Использование MS Excel для математических расчетов. Описание численных методов решения системы линейных алгебраических уравнений. Решение систем линейных алгебраических уравнений с методами Крамера и Зейделя и с помощью табличного процессора MS Excel.
курсовая работа [1,6 M], добавлен 14.02.2021Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений.
курсовая работа [581,0 K], добавлен 15.06.2013Сущность матричного метода. Разработка программы решения системы уравнений линейных алгебраических уравнений методом решения через обратную матрицу на языке программирования Delphi. Представление блок-схемы и графического интерфейса программного продукта.
курсовая работа [1,0 M], добавлен 27.09.2014Метод Гаусса-Зейделя как модификация метода Якоби, его сущность и применение. Разработка программы решения системы линейных алгебраических уравнений на языке VB, проверка правильности работы программы в MS Excel и математических пакетах MathCad и MatLab.
курсовая работа [325,5 K], добавлен 27.10.2013Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.
дипломная работа [144,8 K], добавлен 25.04.2012Приведение системы линейных алгебраических уравнений к треугольному виду прямым ходом метода Гаусса. Применение обратного хода метода вращений. Создание алгоритма, блок-схемы и кода программы. Тестовый пример решения уравнения и его проверка в MathCad.
лабораторная работа [164,3 K], добавлен 02.10.2013Алгоритм решения систем линейных уравнений методом Гаусса, его этапы. Система уравнений для определения коэффициентов сплайна, представляющая собой частный случай систем линейных алгебраических уравнений. Программная реализация, тестовый пример.
курсовая работа [431,8 K], добавлен 15.06.2013Изучение основных этапов проектирования программных систем, создание прикладной программы, которая выполняет решение систем линейных алгебраических уравнений методом Гаусса. Вычисление определителя и обращение матриц. Листинг разработанной программы.
курсовая работа [563,3 K], добавлен 12.07.2012