50356 (Программирование системы уравнений), страница 2
Описание файла
Документ из архива "Программирование системы уравнений", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "50356"
Текст 2 страницы из документа "50356"
Для простоты рассмотрим метод Гаусса для системы трех линейных уравнений с тремя неизвестными в случае, когда существует единственное решение:
Дана система:
( 1 )
1-ый шаг метода Гаусса.
На первом шаге исключим неизвестное х1 из всех уравнений системы (1), кроме первого. Пусть коэффициент . Назовем его ведущим элементом. Разделим первое уравнение системы (1) на а11. Получим уравнение:
( 2 )
где
Исключим х1 из второго и третьего уравнений системы (1). Для этого вычтем из них уравнение (2), умноженное на коэффициент при х1 (соответственно а21 и а31).
Система примет вид:
( 3 )
Верхний индекс (1) указывает, что речь идет о коэффициентах первой преобразованной системы.
2-ой шаг метода Гаусса.
На втором шаге исключим неизвестное х2 из третьего уравнения системы (3). Пусть коэффициент . Выберем его за ведущий элемент и разделим на него второе уравнение системы (3), получим уравнение:
( 4 )
где
Из третьего уравнения системы (3) вычтем уравнение (4), умноженное на Получим уравнение:
Предполагая, что находим
В результате преобразований система приняла вид:
(5)
Система вида (5) называется треугольной.
Процесс приведения системы (1) к треугольному виду (5) (шаги 1 и 2) называют прямым ходом метода Гаусса.
Нахождение неизвестных из треугольной системы называют обратным ходом метода Гаусса.
Для этого найденное значение х3 подставляют во второе уравнение системы (5) и находят х2. Затем х2 и х3 подставляют в первое уравнение и находят х1.
В общем случае для системы т линейных уравнений с п неизвестными проводятся аналогичные преобразования. На каждом шаге исключается одно из неизвестных из всех уравнений, расположенных ниже ведущего уравнения.
Отсюда другое называние метода Гаусса – метод последовательного исключения неизвестных.
Если в ходе преобразований системы получается противоречивое уравнение вида 0 = b, где b 0, то это означает, что система несовместна и решений не имеет.
В случае совместной системы после преобразований по методу Гаусса, составляющих прямой ход метода, система т линейных уравнений с п неизвестными будет приведена или к треугольному или к ступенчатому виду.
Треугольная система имеет вид:
Такая система имеет единственное решение, которое находится в результате проведения обратного хода метода гаусса.
Ступенчатая система имеет вид:
Такая система имеет бесчисленное множество решений. Чтобы найти эти решения, во всех уравнениях системы члены с неизвестными хk+1, … , xk переносят в правую часть. Эти неизвестные называются свободными и придают им произвольные значения. Из полученной треугольной системы находим х1, … , xk, которые будут выражаться через свободные неизвестные. Подробнее об этом можно узнать в рекомендуемой литературе.
Рассмотренный метод Гаусса легко программируется на ЭВМ и является более экономичным (по числу действий), чем другие методы.
3 Решение уравнения методами Ньютона, Хорд
Метод хорд (способ пропорциональных частей) — численный метод уточнения корня трансцендентного уравнения.
Точный корень уравнения находится на отрезке . Производная на этом промежутке непрерывна и сохраняет постоянный знак. Приближенный корень , при котором , можно найти используя метод хорд. Для этого нужно взять начальное приближение корня и применить к нему итерационную формулу:
линейный уравнение хорда гаусс ньютон
, , если
, , если
Погрешность вычислений:
, ,
В отличие от метода дихотомии, обращающего внимание лишь на знаки значений функции, но не на сами значения, метод хорд использует пропорциональное деление интервала (рисунок 1).
Рис. 1. Метод хорд | Рис.2. Метод касательных |
Здесь вычисляются значения функции на концах отрезка и строится “хорда”, соединяющая точки (a, f(a)) и (b, f(b)). Точка пересечения ее с осью абсцисс
принимается за очередное приближение к корню. Анализируя знак f(z) в сопоставлении со знаком f(x) на концах отрезка, сужаем интервал до [a,z] или [z,b] и продолжаем процесс построения хорд до тех пор, пока разница между очередными приближениями не окажется достаточно малой (в пределах допустимой погрешности) |Zn-Zn-1|< .
Можно доказать, что истинная погрешность найденного приближения:
,
где X* - корень уравнения, Zn и Zn+1 - очередные приближения, m и M – наименьшее.
Метод Ньютона
Пусть корень уравнения отделен на отрезке [a, b], причем и непрерывны и сохраняют определенные знаки при . Если на некотором произвольном шаге n найдено приближенное значение корня , то можно уточнить это значение по методу Ньютона. Положим
| (1) |
где считаем малой величиной. Применяя формулу Тейлора, получим:
Следовательно,
Внеся эту поправку в формулу (1), найдем следующее (по порядку) приближение корня
| (2) |
Геометрически метод Ньютона эквивалентен замене дуги кривой касательной, проведенной в некоторой точке кривой. В самом деле, положим для определенности, что при и (см. рис.).
Выберем, например, , для которого . Проведем касательную к кривой в точке B0 с координатами .
В качестве первого приближения корня возьмем абсциссу точки пересечения касательной с осью Ox. Через точку снова проведем касательную, абсцисса точки пересечения которой даст второе приближение корня и т.д.
Формулу для уточнения корня можно получить из прямоугольного треугольника , образованного касательной, проведенной в точке , осью абсцисс и перпендикуляром, восстановленным из точки .
Имеем
Так как угол образован касательной и осью абсцисс, его тангенс численно равен величине производной, вычисленной в точке, соответствующей абсциссе точки касания, т.е.
Тогда
или для любого шага n
.
В качестве начальной точки можно принять либо один из концов отрезка [a, b], либо точку внутри этого интервала. В первом случае рекомендуется выбирать ту границу, где выполняется условие
т.е. функция и ее вторая производная в точке должны быть одного знака.
В качестве простейших условий окончания процедуры уточнения корня рекомендуется выполнение условия
Как следует из последнего неравенства, требуется при расчете запоминать три значения аргумента . В практических инженерных расчетах часто применяют сравнение аргументов на текущей и предыдущей итерациях:
При составлении программы решения уравнения методом Ньютона следует организовать многократный расчет приближений для корня. Если удается получить аналитическое выражение для производной, то ее вычисление, а также вычисление можно оформить в виде функций.
4 Разработка блок схемы решения системы уравнения методом Гаусса
5 Разработка блок схемы решения уравнения методом Ньютона
6 Разработка блок схемы решения уравнения методом Хорд
7 Язык программирования Turbo Pascal
Turbo Pascal является реализацией Pascal'я. Самая первая версия Pascal быля разработана на кафедре информатики Стэндфордского университета швейцарским ученым Николаусом Виртом в 1968 году.
С момента появления Pascal на рынке продуктов прошло много времени прежде чем он получил всеобщее признание. В середине 80-х годов американской фирмой Borland International, Inc была создана реализация языка Pascal, известная и по сей день под именем Turbo Pascal. Эта фирма объединила очень быстрый компилятор с редактором текста и добавила к стандартному Паскалю мощное расширение, что способствовало успеху первой версии этого языка.
В 1985 году на рынке ПЭВМ появился язык программирования Турбо Паскаль (версия 3.0) с компилятором стандартного Паскаля. С тех пор Паскаль стал применяться в общеобразовательных, профессионально-технических школах и в сфере высшего образования в качестве «первого» языка программирования. Благодаря простоте использования язык Турбо Паскаль получил широкое распространение и в любительских кругах. Повышению популярности Турбо Паскаля способствовал набор небольших сопутствующих программ (Toos), позволяющих получать чрезвычайно компактную, быструю и легко читаемую программу. Эти качества Турбо Паскаля были высоко оценены и в среде профессиональных программистов. Встроенный редактор текста использует достаточно широко распространенную систему команд, берущую начало от пакета WordStar и хорошо знакомую каждому, кто интенсивно использует ПЭВМ.
В появившемся со временем пакете Турбо Паскаль 4.0 было устранено большинство подвергавшихся критике ограничений компилятора и была повышена производительность системы. Кроме того, новый компилятор версии 4.0 имел существенные отличия от предыдущей версии. Наиболее важным нововведением была ИNIТ-концепция, заимствованная из языка Модула-2. Это дало возможность реализовать в рамках ТП разработку крупных программных продуктов.
С выходом в свет версии 5.0 ТП получил еще большие шансы на благосклонную реакцию со стороны профессиональных пользователей благодаря встроенному в среду программирования интегрированному отладчику, который позволил повысить производительность труда.
Существенно улучшила технические характеристики ТП реализация аппарата перекрытий (overlays), позволяющего строить мощные программные комплексы, рассчитанные на эксплуатацию в малых по объему областях памяти. Суть механизма перекрытий сводится к делению программы на части, поочередно загружаемые по мере необходимости с дискеты или жесткого диска в одну и ту же область памяти, заменяя при этом находившуюся там часть программы.
Кроме того, в ТП 5.0 были расширены возможности отладки программ и обеспечена возможность поддержки расширенной памяти в стандарте Lotus-Intel-Microsoft (SLIMS/EMS 4.0). Сокращение EMS обозначает Expanded Memory Specification (спецификация расширенной памяти). Нельзя путать этот вид дополнительной памяти с другим — Extended Memory. EMS имеется на обычных ПЭВМ класса XT, в то время как Extended Memory — только на машинах АТ-класса (с процессором 286, 386 и выше) при объеме памяти свыше 1 Мбайта.
В этой версии были также исправлены и улучшены библиотеки графических процедур, поставляемые вместе с пакетом ТП и обеспечивающие полную совместимость с графическими адаптерами класса VGA (Video Graphics Array).
В рамках версии ТП 5.5 были осуществлены дальнейшие преобразования в направлении улучшения технических характеристик пакета. Наряду с внутренними улучшениями и новыми возможностями встроенной справочной системы Help, а также большим набором учебных примеров, важным нововведением явилась реализация в языке концепции объектно-ориентированного программирования (ООП).
Через некоторое время на рынке появился ТП 6.0, в котором теоретическая концепция объектно-ориентированного программирования была реализована практически с полным набором объектов, которые могли использоваться для решения прикладных задач. Кроме того, реализация системы меню приведена в соответствие со стандартом SAA (Turbo Vision). В качестве практического примера использования новых возможностей был реализован текстовый редактор, встроенный в IDE ~ Integrated Development Environment — интегрированную инструментальную оболочку. При этом сторонники программирования на ТП 6.0 получили возможность не только работать со встроенным многооконным текстовым редактором, но и использовать мышь, которая значительно облегчает работу пользователя.
В 1992 году фирма Borland International представила пользователям очередную версию языка Паскаль — Турбо Паскаль 7.0. Наряду со всеми преимуществами, которые унаследованы от предыдущей версии (многооконный режим работы, возможность использования мыши, возможность использования языка программирования низкого уровня Ассемблер, возможность создавать объектно-ориентированные программы), в ТП 7.0 были произведены изменения и улучшения. Во-первых: появилась возможность выделять определенным цветом различные элементы исходного текста (зарезервированные слова, идентификаторы, числа и т. д.), позволяющая даже неопытным пользователям устранять ошибки на этапе ввода исходного текста. Во-вторых: язык программирования ТП 7.0 был расширен (появилась возможность использовать типизированный адресный оператор, открытые массивы и строки и т. д.), что предоставило пользователю дополнительные возможности при решении повседневных задач. В-третьих: был улучшен компилятор, вследствие чего «коды программ» стали более эффективными. В-четвертых: был улучшен интерфейс пользователя. Кроме того, в ТП 7.0 расширены возможности объектно-ориентированного программирования (в частности, расширены и улучшены возможности Turbo Vision).
8 Разработка программы решения системы уравнения методом Гаусса при помощи Turbo Pascal
program Gauss;
const
N=3;
A:array[1..N,1..N] of real = ((9.1, 5.6, 7.8),
(3.8, 5.1, 2.8),
(4.1, 5.7, 1.2));
B:array[1..N] of real = (9.8,
6.7,
5.8);
type
matrtype=array[1..N,1..N+1] of real;
var
i,j:byte;
matr:matrtype;
procedure Gausse(var matr:matrtype; N:byte);
var i,j,k:byte;
begin
for i:=1 to N-1 do
for j:=i+1 to N do
for k:=N+1 downto i do
matr[j,k]:=matr[j,k]-matr[i,k]/matr[i,i]*matr[j,i];
for i:=N downto 1 do
begin
for j:=i+1 to N do
Matr[i,N+1]:=Matr[i,N+1]-Matr[i,j]*Matr[j,N+1];
Matr[i,N+1]:=Matr[i,N+1]/Matr[i,i];
end;
end;
begin
clrscr;
writeln('reshenie sistemi iz ',N,' linear yravnenii');
for i:=1 to N do
begin
writeln('vvodim yravnenie',i,':');
for j:=1 to N do
begin
write('A[',i
,',',j,']=');
read(A[i,j]);
end;
write('B[',i,']=');
readln(B[i]);
end;
writeln('Sistema linear yravnenii');
for i:=1 to N do
begin
for j:=1 to N do
write(A[i,j]:5:2);
writeln(B[i]:5:2);
end;
for i:=1 to N do
begin
for j:=1 to N do
matr[i,j]:=A[i,j];
matr[i,N+1]:=B[i];
end;
Gausse(matr,N);
writeln('reshenie sistemi yravnenii:');
for i:=1 to N do
writeln('X',i,'=',matr[i,N+1]:5:2);
readkey;
end.
9 Разработка программы решения уравнения методом Ньютона при помощи Turbo Pascal
uses crt;
var
a,b,Exp,s : real;
i : integer;
function Func(x : real) : real;
begin
Func:=2*x*x*x-3*x*x-12*x+10;
end;
function PFunc(x : real) : real;
begin
PFunc:=6*x*x-6*x-12;
end;
Begin
clrscr;
Writeln('Vvedite verhnij predel:');
readln(b);
Writeln('Vvedite to4nost'':');
readln(Exp);
i:=0;
repeat
a:=b-Func(b)/PFunc(b);
s:=b;
b:=a;
i:=i+1;
Writeln('Shag ',s:5:2,' X-',a:5:2,' f(x)=',Func(b));
until(abs(a-s)>Exp);
Writeln('Otvet: ',b:5:2);
readln;
end.
10 Разработка программы решения уравнения методом Хорд при помощи Turbo Pascal
program hord;
var x,a,b,eps,s:real;
function f(x:real):real;
begin
f:=2*x*x*x-3*x*x-12*x+10;
end;
begin
write('vvedite levuiu granicu');
readln(a);
write('vvedite pravuiu granicu');
readln(b);
write('vvedite epsilon');
readln(eps);
while f(b)-f(a)>=eps do
begin
s:=b-f(b)/(f(b)-f(a))/(b-a);
a:=b; b:=s;
end;
writeln(s:5:2);
readln;
end.
Заключение
В соответствии с заданием курсовой работы была осуществлена программная реализация задачи. В ходе выполнения работы были получены навыки программирования системы уравнений.
Размещено на http://www.allbest.ru/
Список используемых источников
1) Блашкин И.И., Буров А.А. Новые возможности Turbo-Pascal 7.1. — Спб.: Изд-во “Макет”, 2005.
2) Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. Пособие/ Ю.С. Бородич, А.Н. Вальвачев, А.И.Кузьмич. — Мн.: Выш. Шк.: БФ ГИТМП “НИКА”, 2001.
3)Васильев П.П. Турбо Паскаль — мой друг: М.: Компьютер, ЮНИТИ, 2006.
4) Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT, AT: Пер. с англ./ Предисл. Н.В. Гайского. — М.: Финансы и статистика, 2001.
5) Зуев Е.А. Язык программирования Turbo Pascal 7.1. — М.: Унитех, 2005.
Размещено на http://www.allbest.ru/
32