Курсовая работа "разработать программу решения нелинейных уравнений методом половинного деления" | |
Автор: student | Категория: Технические науки / Информатика и программирование | Просмотров: 2909 | Комментирии: 0 | 01-01-2014 23:48 |
СКАЧАТЬ:
Введение
В наше время компьютеры являются неотъемлемой частью жизни человека. Их применяют во всех сферах деятельности: дома, на производстве, в бизнесе, в образовательных учреждениях, и т.д.
Невозможно представить отделы управления современного предприятия или учебного заведения без технического и программного обеспечения.
Программы начинают широко использоваться в качестве средства, ускоряющего процесс решение задачи, трудоемкости решений.
Цель данного курсового проекта состоит в том, чтобы разработать программу решения нелинейных уравнений методом половинного деления. Созданное приложение будет выполнять поиск решения на заданном пользователем отрезке для выбранного уравнения и графически отображать график функции и найденное решение на отрезке.
Курсовая работа содержит: техническое задание, в котором описывается функциональное назначение программы и ее характеристики; проектирование информационных потоков, которое включает в себя анализ входных и выходных потоков данных; полная документация проекта.
1 Разработка системного проекта
1.1 Назначение разработки
Для автоматизированного поиска решения нелинейного уравнения было разработано приложение «Метод половинного деления».
Данная программа демонстрирует один из численных методов решения нелинейных уравнений, а именно метод половинного деления и позволяет существенно повысить скорость численного поиска решения уравнений.
Программа «Метод половинного деление» может применяться во всех сферах деятельности: при решении уравнении дома, на производстве, в бизнесе, на уроках в образовательных учреждениях, и т.д.
1.2 Требования к функциональным характеристикам
Руководствуясь принципом разумности и достаточности, определяем поведение программы в процессе обработки информации.
Программа «Метод половинного деления» выполняет следующие функции:
- предлагает выбор функции f(x), для решения уравнения вида f(x)=0;
- запрашивает концы отрезка, на котором организован поиск решения уравнения;
- запрашивает точность вычисления;
- выводит найденный корень уравнения на заданном отрезке;
- в отдельном окне по требованию демонстрирует график функции f(x) на указанном отрезке и точку найденного решения.
1.3 Требования к надежности и безопасности
Надежное функционирование программы должно быть обеспечено выполнением совокупности организационно-технических мероприятий, перечень которых приведен ниже:
- организацией бесперебойного питания технических средств;
- выполнением рекомендаций Министерства труда и социального развития РФ, изложенных в Постановлении от 23 июля 1998 г. «Об утверждении межотраслевых типовых норм времени на работы по сервисному обслуживанию ПЭВМ и оргтехники и сопровождению программных средств»;
- выполнением требований ГОСТ 51188-98. Защита информации. Испытания программных средств на наличие компьютерных вирусов;
- необходимым уровнем квалификации сотрудников профильных подразделений.
Все данные, которые находятся в программе «Метод половинного деления» являются достоверными, так как они поступают с учебников, достоверность которых заверена руководителем этой базы печатью и подписью.
Отказы программы возможны вследствие некорректных действий пользователя при взаимодействии с операционной системой. Во избежание возникновения отказов программы по указанной выше причине следует обеспечить работу конечного пользователя без предоставления ему административных привилегий.
В программе «Метод половинного деление» есть обработчик ошибок, такие как: различная ошибка, проблема в Delphi, ошибка ввода- вывода.
1.4 Требования к составу и параметрам технических средств
Для стабильной работы программы необходима следующая минимальная конфигурация системы:
- ПК с процессором не ниже Pentium 2;
- оперативная память – 32 Мб и выше;
- видеокарта – 2Мб;
- монитор 800*600;
- мышь, клавиатура;
1.5 Требования к информационной и программной совместимости
Для функционирования программы «Метод половинного деления» необходима операционная система Windows любой модификации.
Стадии и этапы разработки:
- Постановка задачи;
- Создание приложения в среде программирования Borland Delphi 7;
- Оформление документации в соответствии с ГОСТ 19.201.78.
Разработанный интерфейс соответствует требованием входной и выходной информации
2 Разработка технического проекта
2.1 Разработка алгоритма
На рисунке 1 представлена процедура выбора функции f(x) для поиска решения уравнения f(x)=0
Рисунок 1- блок-схема задании функции
Рисунок 2 отражает суть метода половинного деления для решения уравнения вида f(x)=0
На рисунке 3 представлен алгоритм построения графика функции и точки найденного решения
Рисунок 2- Метод половинного деления
Рисунок 3- Построение графика
2.2 Проектирование интерфейса
Главное окно программы «Метод половинного деления» содержит меню файл с командами
- Очистить;
- Вычислить;
- Построить;
- Выход.
Кроме того, на окне расположены два текстовых поля для ввода концов отрезка и раскрывающийся список выбора функции.
Вывод найденного решения организован непосредственно в окно программы, а для отображения построенного графика функции и найденного решения открывается дочернее окно
На рисунке 4 представлено основное окно проекта. Рисунок 5 отражает окно программы вывода графика функции.
Рисунок 4- Основная форма программы
Рисунок 5- График функции
2.3 Детальное проектирование программного обеспечения.
Интерфейс программы разработан в среде Delphi. Проект состоит из двух форм: Form1, Form 2.
Основной формой проекта является Form1, являющаяся классом TForm. На форме располагаются следующие компоненты MainMenu1, Edit1, ComboBox1, Label1. На Form 2 расположен компонент image1.
MainMenu представляет собой список объединенных по функциональному признаку пунктов, каждый из которых обозначает вложенное меню. Щелчок по меню Файл равносилен выполнению соответствующей команды:
- Очистить;
- Вычислить;
- Построить;
- Выход.
На рисунке 1 показано основная форма программы.
Рисунок 6- Основная форма программы
На основной форме программы расположен один компонент управления. Нажатию на меню Файл открывается следующий список, представлен на рисунке 7.
Рисунок 7- Список меню файл
Для выбора какой либо функции использован компонент ComboBox1, представленный на рисунке 8.
Рисунок 8- Выбор функции
На рисунке 9 представлено окно программы вывода графика функции
Рисунок 9- График функции
3 Реализация
3.1 Обоснование выбора средств разработки;
Среда быстрой разработки Delphi - продукт компании Borland, основана на объектно-ориентированном языке программирования Pascal, В среде имеются удобные средства для создания оконных приложений.
3.2 Описание основных программных модулей;
Объявление глобальных переменных:
var
Form1: TForm1;
a, b, c, e, x, y, stepx: real; max, min, i, masshtab_x, masshtab_y: real;
l,x0,y0,xw,yh,t:integer;
Процедура выбора функции:
function f(x: real): real;
begin
t:=Form1.ComboBox1.ItemIndex;
case t of
0:f:=x*x*x-6*sqr(x)+3*x+11;
1:f:=sin(3*x)+4*x*x-3;
2:f:=exp(x-2)+x;
end;
end;
Процедуры поиска решения методом половинного деления:
procedure TForm1.N3Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
e:=strtofloat(edit3.Text);
while abs(b-a) >= e do
begin
c:=(a+b)/2;
if f(a) * f(c) <= 0
then b:=c
else a:=c;
end;
label6.Caption:=' '+floattostrf(c, fffixed,4,6);
end;
Процедуры очистки полей:
procedure TForm1.N2Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
end;
Процедура построения графика функции и точки найденного решения:
procedure TForm1.N6Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
xw:= form2.image1.Width;
yh:= form2.image1.Height;
x0:=xw div 2;
y0:=yh div 2;
Form2.Image1.Picture:=nil;
with form2.image1.Canvas do
begin
pen.Width:=3;
moveto(0,y0);
lineto(xw,y0);
moveto(x0,0);
lineto(x0,yh-0);
moveto(xw,y0);
lineto(xw-5,y0-5);
moveto(xw,y0);
lineto(xw-5,y0+5);
moveto(x0,0);
lineto(x0+5,5);
moveto(x0,0);
lineto(x0-5,5);
min:=f(a);
max:=f(a);
stepx:=0.001;
i:=a+stepx;
while i<=b do
begin
if maxf(i) then min:=f(i);
i:=i+stepx;
end;
masshtab_x:=(xw-20)/abs(b-a);
masshtab_y:=(yh-20)/abs(max-min);
i:=a;
while i= e do
begin
c:=(a+b)/2;
if f(a) * f(c) <= 0
then b:=c
else a:=c;
end;
label6.Caption:=' '+floattostrf(c, fffixed,4,6);
end;
procedure TForm1.N2Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
end;
procedure TForm1.N6Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
xw:= form2.image1.Width;
yh:= form2.image1.Height;
x0:=xw div 2;
y0:=yh div 2;
Form2.Image1.Picture:=nil;
with form2.image1.Canvas do
begin
pen.Width:=3;
moveto(0,y0);
lineto(xw,y0);
moveto(x0,0);
lineto(x0,yh-0);
moveto(xw,y0);
lineto(xw-5,y0-5);
moveto(xw,y0);
lineto(xw-5,y0+5);
moveto(x0,0);
lineto(x0+5,5);
moveto(x0,0);
lineto(x0-5,5);
min:=f(a);
max:=f(a);
stepx:=0.001;
i:=a+stepx;
while i<=b do
begin
if maxf(i) then min:=f(i);
i:=i+stepx;
end;
masshtab_x:=(xw-20)/abs(b-a);
masshtab_y:=(yh-20)/abs(max-min);
i:=a;
while i<=b do
begin
pixels[x0+round(i*masshtab_x),y0-round(f(i)*masshtab_y)]:=clblue;
i:=i+stepx;
end;
pen.Color:=clred;
ellipse(x0+round(c*masshtab_x)-2,y0-round(f(c)*masshtab_y)-2,x0+round(c*masshtab_x)+2,y0-round(f(c)*masshtab_y)+2);
font.Size:=14;
TextOut(5,y0+5,floattostr(a));
TextOut(xw-15,y0+5,floattostr(b));
TextOut(x0+round(c*masshtab_x)-15,y0+5,floattostrf(c,fffixed,3,1));
TextOut(x0+5,5,floattostr(round(max)));
TextOut(x0+5,yh-25,floattostr(round(min)));
end;
form2.Visible:=true;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
close
end;
end.
Введение
В наше время компьютеры являются неотъемлемой частью жизни человека. Их применяют во всех сферах деятельности: дома, на производстве, в бизнесе, в образовательных учреждениях, и т.д.
Невозможно представить отделы управления современного предприятия или учебного заведения без технического и программного обеспечения.
Программы начинают широко использоваться в качестве средства, ускоряющего процесс решение задачи, трудоемкости решений.
Цель данного курсового проекта состоит в том, чтобы разработать программу решения нелинейных уравнений методом половинного деления. Созданное приложение будет выполнять поиск решения на заданном пользователем отрезке для выбранного уравнения и графически отображать график функции и найденное решение на отрезке.
Курсовая работа содержит: техническое задание, в котором описывается функциональное назначение программы и ее характеристики; проектирование информационных потоков, которое включает в себя анализ входных и выходных потоков данных; полная документация проекта.
1 Разработка системного проекта
1.1 Назначение разработки
Для автоматизированного поиска решения нелинейного уравнения было разработано приложение «Метод половинного деления».
Данная программа демонстрирует один из численных методов решения нелинейных уравнений, а именно метод половинного деления и позволяет существенно повысить скорость численного поиска решения уравнений.
Программа «Метод половинного деление» может применяться во всех сферах деятельности: при решении уравнении дома, на производстве, в бизнесе, на уроках в образовательных учреждениях, и т.д.
1.2 Требования к функциональным характеристикам
Руководствуясь принципом разумности и достаточности, определяем поведение программы в процессе обработки информации.
Программа «Метод половинного деления» выполняет следующие функции:
- предлагает выбор функции f(x), для решения уравнения вида f(x)=0;
- запрашивает концы отрезка, на котором организован поиск решения уравнения;
- запрашивает точность вычисления;
- выводит найденный корень уравнения на заданном отрезке;
- в отдельном окне по требованию демонстрирует график функции f(x) на указанном отрезке и точку найденного решения.
1.3 Требования к надежности и безопасности
Надежное функционирование программы должно быть обеспечено выполнением совокупности организационно-технических мероприятий, перечень которых приведен ниже:
- организацией бесперебойного питания технических средств;
- выполнением рекомендаций Министерства труда и социального развития РФ, изложенных в Постановлении от 23 июля 1998 г. «Об утверждении межотраслевых типовых норм времени на работы по сервисному обслуживанию ПЭВМ и оргтехники и сопровождению программных средств»;
- выполнением требований ГОСТ 51188-98. Защита информации. Испытания программных средств на наличие компьютерных вирусов;
- необходимым уровнем квалификации сотрудников профильных подразделений.
Все данные, которые находятся в программе «Метод половинного деления» являются достоверными, так как они поступают с учебников, достоверность которых заверена руководителем этой базы печатью и подписью.
Отказы программы возможны вследствие некорректных действий пользователя при взаимодействии с операционной системой. Во избежание возникновения отказов программы по указанной выше причине следует обеспечить работу конечного пользователя без предоставления ему административных привилегий.
В программе «Метод половинного деление» есть обработчик ошибок, такие как: различная ошибка, проблема в Delphi, ошибка ввода- вывода.
1.4 Требования к составу и параметрам технических средств
Для стабильной работы программы необходима следующая минимальная конфигурация системы:
- ПК с процессором не ниже Pentium 2;
- оперативная память – 32 Мб и выше;
- видеокарта – 2Мб;
- монитор 800*600;
- мышь, клавиатура;
1.5 Требования к информационной и программной совместимости
Для функционирования программы «Метод половинного деления» необходима операционная система Windows любой модификации.
Стадии и этапы разработки:
- Постановка задачи;
- Создание приложения в среде программирования Borland Delphi 7;
- Оформление документации в соответствии с ГОСТ 19.201.78.
Разработанный интерфейс соответствует требованием входной и выходной информации
2 Разработка технического проекта
2.1 Разработка алгоритма
На рисунке 1 представлена процедура выбора функции f(x) для поиска решения уравнения f(x)=0
Рисунок 1- блок-схема задании функции
Рисунок 2 отражает суть метода половинного деления для решения уравнения вида f(x)=0
На рисунке 3 представлен алгоритм построения графика функции и точки найденного решения
Рисунок 2- Метод половинного деления
Рисунок 3- Построение графика
2.2 Проектирование интерфейса
Главное окно программы «Метод половинного деления» содержит меню файл с командами
- Очистить;
- Вычислить;
- Построить;
- Выход.
Кроме того, на окне расположены два текстовых поля для ввода концов отрезка и раскрывающийся список выбора функции.
Вывод найденного решения организован непосредственно в окно программы, а для отображения построенного графика функции и найденного решения открывается дочернее окно
На рисунке 4 представлено основное окно проекта. Рисунок 5 отражает окно программы вывода графика функции.
Рисунок 4- Основная форма программы
Рисунок 5- График функции
2.3 Детальное проектирование программного обеспечения.
Интерфейс программы разработан в среде Delphi. Проект состоит из двух форм: Form1, Form 2.
Основной формой проекта является Form1, являющаяся классом TForm. На форме располагаются следующие компоненты MainMenu1, Edit1, ComboBox1, Label1. На Form 2 расположен компонент image1.
MainMenu представляет собой список объединенных по функциональному признаку пунктов, каждый из которых обозначает вложенное меню. Щелчок по меню Файл равносилен выполнению соответствующей команды:
- Очистить;
- Вычислить;
- Построить;
- Выход.
На рисунке 1 показано основная форма программы.
Рисунок 6- Основная форма программы
На основной форме программы расположен один компонент управления. Нажатию на меню Файл открывается следующий список, представлен на рисунке 7.
Рисунок 7- Список меню файл
Для выбора какой либо функции использован компонент ComboBox1, представленный на рисунке 8.
Рисунок 8- Выбор функции
На рисунке 9 представлено окно программы вывода графика функции
Рисунок 9- График функции
3 Реализация
3.1 Обоснование выбора средств разработки;
Среда быстрой разработки Delphi - продукт компании Borland, основана на объектно-ориентированном языке программирования Pascal, В среде имеются удобные средства для создания оконных приложений.
3.2 Описание основных программных модулей;
Объявление глобальных переменных:
var
Form1: TForm1;
a, b, c, e, x, y, stepx: real; max, min, i, masshtab_x, masshtab_y: real;
l,x0,y0,xw,yh,t:integer;
Процедура выбора функции:
function f(x: real): real;
begin
t:=Form1.ComboBox1.ItemIndex;
case t of
0:f:=x*x*x-6*sqr(x)+3*x+11;
1:f:=sin(3*x)+4*x*x-3;
2:f:=exp(x-2)+x;
end;
end;
Процедуры поиска решения методом половинного деления:
procedure TForm1.N3Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
e:=strtofloat(edit3.Text);
while abs(b-a) >= e do
begin
c:=(a+b)/2;
if f(a) * f(c) <= 0
then b:=c
else a:=c;
end;
label6.Caption:=' '+floattostrf(c, fffixed,4,6);
end;
Процедуры очистки полей:
procedure TForm1.N2Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
end;
Процедура построения графика функции и точки найденного решения:
procedure TForm1.N6Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
xw:= form2.image1.Width;
yh:= form2.image1.Height;
x0:=xw div 2;
y0:=yh div 2;
Form2.Image1.Picture:=nil;
with form2.image1.Canvas do
begin
pen.Width:=3;
moveto(0,y0);
lineto(xw,y0);
moveto(x0,0);
lineto(x0,yh-0);
moveto(xw,y0);
lineto(xw-5,y0-5);
moveto(xw,y0);
lineto(xw-5,y0+5);
moveto(x0,0);
lineto(x0+5,5);
moveto(x0,0);
lineto(x0-5,5);
min:=f(a);
max:=f(a);
stepx:=0.001;
i:=a+stepx;
while i<=b do
begin
if maxf(i) then min:=f(i);
i:=i+stepx;
end;
masshtab_x:=(xw-20)/abs(b-a);
masshtab_y:=(yh-20)/abs(max-min);
i:=a;
while i= e do
begin
c:=(a+b)/2;
if f(a) * f(c) <= 0
then b:=c
else a:=c;
end;
label6.Caption:=' '+floattostrf(c, fffixed,4,6);
end;
procedure TForm1.N2Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
end;
procedure TForm1.N6Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
xw:= form2.image1.Width;
yh:= form2.image1.Height;
x0:=xw div 2;
y0:=yh div 2;
Form2.Image1.Picture:=nil;
with form2.image1.Canvas do
begin
pen.Width:=3;
moveto(0,y0);
lineto(xw,y0);
moveto(x0,0);
lineto(x0,yh-0);
moveto(xw,y0);
lineto(xw-5,y0-5);
moveto(xw,y0);
lineto(xw-5,y0+5);
moveto(x0,0);
lineto(x0+5,5);
moveto(x0,0);
lineto(x0-5,5);
min:=f(a);
max:=f(a);
stepx:=0.001;
i:=a+stepx;
while i<=b do
begin
if maxf(i) then min:=f(i);
i:=i+stepx;
end;
masshtab_x:=(xw-20)/abs(b-a);
masshtab_y:=(yh-20)/abs(max-min);
i:=a;
while i<=b do
begin
pixels[x0+round(i*masshtab_x),y0-round(f(i)*masshtab_y)]:=clblue;
i:=i+stepx;
end;
pen.Color:=clred;
ellipse(x0+round(c*masshtab_x)-2,y0-round(f(c)*masshtab_y)-2,x0+round(c*masshtab_x)+2,y0-round(f(c)*masshtab_y)+2);
font.Size:=14;
TextOut(5,y0+5,floattostr(a));
TextOut(xw-15,y0+5,floattostr(b));
TextOut(x0+round(c*masshtab_x)-15,y0+5,floattostrf(c,fffixed,3,1));
TextOut(x0+5,5,floattostr(round(max)));
TextOut(x0+5,yh-25,floattostr(round(min)));
end;
form2.Visible:=true;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
close
end;
end.