99019

Разработка приложения, осуществляющее решение уравнения вида exp(x)-exp(-x)-2=0 в среде Delphi

Курсовая

Информатика, кибернетика и программирование

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

Русский

2016-07-22

3.78 MB

0 чел.

Разработка программы в среде Delphi.

Содержание

Введение 3

1 Теоретическая часть. 4

1.1 Методы решения нелинейного уравнения. 4

1.2 Описание среды программирования  Delphi. 7

1.2.1 Создание  многооконного приложения. 8

1.2.2 Построение графиков. 8

1.2.3 Работа с текстовыми файлами. 9

2 Практическая часть. 10

2.1 Реализация поиска экстремума. 10

2.2 Использование нескольких форм. 12

2.3 Графическое представление решения. 15

2.4 Сохранение результатов в файл. 16

2.5 Смена графического фона. 16

2.6 Проверка программы. 17

Заключение 24

Список литературы 25

Приложение 26


    Введение

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

 Метод Хорд.

 Метод Ньютона.

Целью данной курсовой работы является разработка приложения, осуществляющее решение уравнения вида exp(x)-exp(-x)-2=0 . Для достижения поставленной цели требуется решить следующие задачи:

  1. Предоставить пользователю выбирать метод решения.
  2. Представить решение графически.
  3. Возможность выгрузки представленных данных в файл.
  4. Возможность задания всех исходных данных задачи.

Разработка приложения будет производится в среде Delphi.

1   Теоретическая часть 

         1.1 Методы решения нелинейного уравнения

        

           Метод Ньютона

Рассмотрение предыдущего метода позволяет предположить, что итерации станут приближаться к корню ещё быстрее, если мы будем выбирать касательную вместо деления отрезка пополам, причем не только на первом, а на каждом шаге. Ясно, что тогда формула итераций будет иметь вид:

.

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

Геометрический смысл метода Ньютона состоит в том, что на каждом шаге мы строим касательную к графику y=f(x) в точке очередного последовательного приближения xi , а за следующее приближение xi+1 берём точку пересечения этой касательной с осью Ox. Тем самым наклон прямой подстраивается на каждом шаге наилучшим образом (ведь кривизну графика, связанную с второй производной, мы не учитываем, и поэтому неизвестно, в какую сторону от касательной отклонится график).

Рис. 1

            Метод Хорд

Идея метода состоит в том, что по двум точкам   и  построить прямую  (то есть хорду, соединяющую две точки графика ) и взять в качестве следующего приближения  абсциссу точки пересечения этой прямой с осью . Иными словами, приближённо заменить на этом шаге функцию  её линейной интерполяцией, найденной по двум значениям  и . (Линейной интерполяцией функции  назовём такую линейную функцию , значения которой совпадают со значениями  в двух фиксированных точках, в данном случае -- в точках  и .)

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

Рис.2. Построение последовательного приближения по методу хорд: два случая



Итак, очередное последовательное приближение будет зависеть от двух предыдущих: . Найдём выражение для функции .

Интерполяционную линейную функцию  будем искать как функцию с угловым коэффициентом, равным разностному отношению

построенному для отрезка между  и , график которой проходит через точку :

Решая уравнение , находим

то есть

(2)


Заметим, что величина  может рассматриваться как разностное приближение для производной  в точке . Тем самым полученная формула (2)  - это разностный аналог итерационной формулы метода Ньютона.

Вычисление по формуле (2) гораздо предпочтительнее вычисления по другой полученной нами формуле

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

Имеются две разновидности применения формулы (2).

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

1.2  Описание среды программирования  Delphi

Delphi интегрированная среда разработки ПО для Microsoft Windows на языке Delphi, созданная первоначально фирмой Borland и на данный момент принадлежащая и разрабатываемая Embarcadero Technologies. Среда Delphi обеспечивает визуальное проектирование пользовательского интерфейса, имеет развитый объектно-ориентированный язык Object Pascal (позже переименованный в Delphi) и уникальные по своей простоте и мощи средства доступа к базам данных. Язык Delphi по возможностям значительно превзошел язык Basic и даже в чем-то язык C++, но при этом он оказался весьма надежным и легким в изучении (особенно в сравнении с языком C++). В результате, среда Delphi позволяет программистам легко создавать собственные компоненты и строить из них профессиональные программы.

  1.  Создание  многооконного приложения

Чаще всего в программе удобней использовать несколько окон.  В Delphi мы можем с лёгкостью создавать дополнительные формы, предоставляющие возможность, например, вести диалог с пользователем, принимать и выводить любую необходимую информацию.

Для создания новой формы необходимо нажать кнопку «New Form».
Форма создаётся вместе с новым модулем, описывающим её работу.

Для  того чтобы форма открывалась (закрывалась) при какой-либо процедуре необходимо прописать Form(№ формы).visible:= true (false).

  1.  Построение графиков

С помощью компонента Chart, который расположен в additional в Delphi, можно выводить различные графики, диаграммы.

Для этого необходимо расположить Chart на форме, два раз щелкнуть по нему и в открывшемся окне настроек, необходимо создать Series, выбрав вид диаграммы. Дальше в процедуре выполнить цикл от начальной координаты до конечной с заданным шагом: Chart1.Series[0].AddXY(x,f(x),'',cl(цвет)), где f(x) функция, которую требуется построить.

Одновременно в одном Chart можно построить несколько графиков.

Для этого необходимо создать для каждого графика свою Series, с определенными настройками.

  1.  Работа с текстовыми файлами

Технология работы с файлами в системе Delphi требует определённого порядка действий:

Прежде всего файл должен быть открыт. Процедура AssignFile(). Система следит, чтобы другие приложения не мешали работе с файлом.

При этом определяется, в каком режиме открывается файл - для изменения или только считывания информации. Reset() - эта процедура открывает существующий файл на диске, Rewrite() - эта процедура создаёт новый файл а также очищает уже существующий файл. После открытия файла в программу возвращается его идентификатор, который будет использоваться для указания на этот файл во всех процедурах обработки.

Начинается работа с файлом. Это могут быть запись, считывание, поиск и другие операции. Процедуры Writen(переменная, выражения), Read()

В конце файл закрывается. Процедура CloseFile().

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

  1.  Практическая часть
  2.  Реализация поиска экстремума

Метод Ньютона

          Для решения Нелинейного уравнения методом Ньютона выполняется следующий алгоритм (рис 2.1)

Ниже расположен программный код, реализующий Решение нелинейного уравнения методом Ньютона:

     

     while(abs(f(x))>eps) do

       begin

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

       end;

      Метод Хорд

        Для решения Нелинейного уравнения методом хорд выполняется следующий алгоритм (рис 2.2)

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

       while(abs(f(x))>eps) do

      begin

         x:=x-(f(x)*(x-x0))/(f(x)-f(x0));

      end;

  1.  Использование нескольких форм

В данной программе используется 5 форм.

Форма №1 (рис.2.3)  Представляет собой рабочее поле которое включает в себя выбор метода решения, задание отрезка, точности. Включает в себя следующие компоненты: RadioButton1, RadioButton2, Edit1, Edit2, Edit3, Edit4, Edit5, Button1, Button2, Button3, Button4, Button5, Button6, Button7.

рис.2.3 «Form №1»

Форма №2 (рис.2.4) Включает в себя построение графика функции, и включает в себя такие элементы как: Chart1, Button1

рисунок.2.4 «Form №2»

Форма №3 (рис.2.5) Служит для отображения детализации решения , или вывода итераций. включает в себя: Memo1, Button1, Button2

рисунок 2.5 «Form №3»

      Форма №4 (рис.2.6)  Включает в себя титульный лист, содержит элемент Button1

                                  

рисунок 2.6 Form №4.

Форма №5 (рис.2.7) служит для справочного материала.

                  

рисунок 2.7 «Form №5»

  1.  Графическое представление решения

Графическое представление решения осуществляется с помощью компонента Chart.

Располагаем Chart на форуме и создаем Series1.

В настройках Series выбираем цвет графика  и включаем изображение точек.

Ниже расположены коды для построения графика заданной функции:

begin

 a:=strtofloat(Edit1.Text);

 b:=strtofloat(Edit2.Text);

 x:=a;

while x<=b do

begin

 y:=f(x);

 Form2.Chart1.Series[0].AddXY(x,y,'',clRed);

 x:=x+0.1;

end;

 Form2.Show;

  1.  Сохранение результатов в файл

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

Ниже расположены программные коды, осуществляющие сохранение:

begin

Assignfile(f,'input.txt');

Rewrite(f);

write(f,Memo1.text);

closeFile(f);

end;

  1. Смена графического фона

Для улучшения интерфейса программы была реализована функция смены фона:Form№1,

Ниже расположен код реализации смены фона:

begin

Image1.visible:=true;

Image2.visible:=false;

Image3.visible:=false;

end;

begin

Image1.visible:=false;

Image2.visible:=true;

Image3.visible:=false;

end;

begin

Image1.visible:=false;

Image2.visible:=false;

Image3.visible:=true;

end;

  1.  Проверка программы

1) Запускаем программу. Открывается окно «Титульный лист» (рис.2.8). Выбираем метод перебора и нажимаем кнопку «Выполнить».

       

рисунок 2.8 «Титульный лист»

После нажатия кнопки «Начать» происходит следующие:

2)Открывается окно «Рабочее поле».(рис.2.9).

      

рисунок 2.9 «Рабочее поле»

3) Нажимаем кнопку «Решить уравнение».  И в поле «Ответ» получаем значение (рис.2.10).

рисунок 2.10 «Рабочее поле с методом ньютона»

4) Нажимаем кнопку «Детализация решения». (рис.2.11).

                            Рисунок 2.11 «Детализация решения»

5) Нажимаем кнопку «Сохранить в файл». После чего заходим в директорию программного продукта и находим файл с названием «input.txt» В нём отображены все итерации.

6) Выбираем метод хорд и нажимаем кнопку «Решить уравнение»

рисунок 2.11 «Рабочее поле с методом хорд»

Проделываем пункты 4-5 с методом хорд. Возвращаемся к окну «Рабочее поле».

7) В случае если пользователь случайно забудет заполнить одно из 3 полей в «рабочем поле» то программа выведет сообщение (рис 2.12)

8) Нажимаем кнопку «Показать график». Появляется окошко с графиком функции .(рис.2.12).

рисунок 2.12 «График»

9)Реализацию смены фона смотреть в пункте «2.5»

10По выбору меню «справка», появляется подпункт «о программе».

После открытия подпункта «о программе» (рис 2.13).

  

рисунок 2.13 «О программе»

9) Нажимаем на пункт меню «файл», в нём выбираем подпункт «выход». Программа закрывается.

Заключение

Приложение для решения нелинейного уравнения вида exp(x)-exp(-x)-2=0. В нём пользователю предоставляется на выбор два метода  решения: метод Ньютона и метод хорд. Программа предоставляет графическое решение и дает возможность просмотра итераций для каждого метода.

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

Приложение разработано в среде Delphi 7.

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

Список литературы

  1.  Разработка приложений в среде Delphi. Часть 1. Общие примеры программ. Соколова Ю.С.,  Жилева С.Ю. – 2011, – 144 с.
  2.  Delphi. Готовые алгоритмы. Стивенс. Р. – 2007, – 384 с.
  3.  Интерактивный практикум по компьютерной схемотехнике на Delphi. Авдеев В.А. – 2011, – 360 с.
  4.  Программирование графики в Delphi. Тюкачев Н., Илларионов И., Хлебостроев В. – 2008, – 784 с.
  5.  Delphi. Теория и практика. Осипов Д.Л. – 2011, – 578 с.

Приложение

Unit 1

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, jpeg, ExtCtrls, Menus;

type

 TForm1 = class(TForm)

   RadioButton1: TRadioButton;

   RadioButton2: TRadioButton;

   Edit1: TEdit;

   Edit2: TEdit;

   Edit3: TEdit;

   Button1: TButton;

   Edit4: TEdit;

   Button2: TButton;

   Button3: TButton;

   Label2: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   Label5: TLabel;

   Label7: TLabel;

   Button4: TButton;

   Image1: TImage;

   Image2: TImage;

   Image3: TImage;

   Button5: TButton;

   Button6: TButton;

   Button7: TButton;

   Label8: TLabel;

   Label1: TLabel;

   Label9: TLabel;

   Label10: TLabel;

   Label11: TLabel;

   Label12: TLabel;

   Label13: TLabel;

   Edit5: TEdit;

   MainMenu1: TMainMenu;

   N1: TMenuItem;

   N2: TMenuItem;

   N3: TMenuItem;

   N4: TMenuItem;

   N5: TMenuItem;

   N6: TMenuItem;

   N7: TMenuItem;

   Label6: TLabel;

   Label14: TLabel;

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure Button4Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure Button5Click(Sender: TObject);

   procedure Button6Click(Sender: TObject);

   procedure Button7Click(Sender: TObject);

   procedure N3Click(Sender: TObject);

   procedure N4Click(Sender: TObject);

   procedure N5Click(Sender: TObject);

   procedure N6Click(Sender: TObject);

   procedure N7Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

  uses Unit2,Unit3,Unit5;

{$R *.dfm}

function f(x:real):real;

begin

 f:=exp(x)-exp(-x)-2;

end;

function df(x:real):real;

begin

  df:=exp(x)+exp(-x);

end;

procedure TForm1.Button1Click(Sender: TObject);

 var a,b,eps,x,x0:real;

     t1,t2:Cardinal;

begin

 if (Edit1.Text='') or  (Edit2.Text='') or (Edit3.text='') then

   begin

    ShowMessage('Введите исходные данные');

    Exit;

   end;

 Button4.Enabled:=true;

 a:=strtofloat(Edit1.Text);

 b:=strtofloat(Edit2.Text);

 eps:=strtofloat(Edit3.Text);

 if RadioButton1.Checked then

   begin

     //метод Ньютона

    t1:=GetTickCount;

     x:=a;

     Form3.Memo1.Text := FloatToStr(x)+#13#10;

     while(abs(f(x))>eps) do

       begin

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

         Form3.Memo1.Text:=Form3.Memo1.Text+FloatToStr(x)+#13#10;

       end;

    t2:=GetTickCount;

   end;

if RadioButton2.Checked then

  begin

  //метод Хорд

   t1:=GetTickCount;

    x0:=a;

    x:=b;

    Form3.Memo1.Text := FloatToStr(x)+#13#10;

    while(abs(f(x))>eps) do

      begin

         x:=x-(f(x)*(x-x0))/(f(x)-f(x0));

         Form3.Memo1.Text:=Form3.Memo1.Text+FloatToStr(x)+#13#10;

      end;

    t2:=GetTickCount;

  end;

 edit4.text:=floattostr(x);

 edit5.text:=inttostr(t2-t1);

end;

procedure TForm1.Button2Click(Sender: TObject);

var a,b,x,y:Real;

begin

 a:=strtofloat(Edit1.Text);

 b:=strtofloat(Edit2.Text);

 x:=a;

while x<=b do

begin

 y:=f(x);

 Form2.Chart1.Series[0].AddXY(x,y,'',clRed);

 x:=x+0.1;

end;

 Form2.Show;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

 Form3.Show;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Form2.close;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

 Application.Terminate;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

Image1.visible:=true;

Image2.visible:=false;

Image3.visible:=false;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

Image1.visible:=false;

Image2.visible:=true;

Image3.visible:=false;

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

Image1.visible:=false;

Image2.visible:=false;

Image3.visible:=true;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

 Button1.Click;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

 Button2.Click;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

 Button4.Click;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

 Application.Terminate;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

Form5.show;

end;

end.

Unit 2

Var

 Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.close;

end;

end.

Unit 3

procedure TForm3.Button1Click(Sender: TObject);

var f:textfile;

begin

Assignfile(f,'input.txt');

Rewrite(f);

write(f,Memo1.text);

closeFile(f);

end;

procedure TForm3.Button2Click(Sender: TObject);

begin

Form3.Close;

end;

end.

Unit 4

procedure TForm4.Button1Click(Sender: TObject);

begin

 Form1.Show;

 Form4.Hide;

end;

end.

Unit 5

var

 Form5: TForm5;

implementation

{$R *.dfm}

end.


 

А также другие работы, которые могут Вас заинтересовать

3005. Общественный продукт. ВНП, способы его измерения. Система национальных счетов 84 KB
  Общественный продукт Совокупность различных видов производств в их взаимосвязи и взаимозависимости образуют национальную экономику. Результатом ее функционирования является совокупный продукт для измерения, которого используется система национ...
3006. Двигатели трехфазные асинхронные напряжением свыше 1000 В для механизмов собственных нужд тепловых электростанций 84 KB
  Настоящий стандарт распространяется на двигатели трехфазные асинхронные (далее — двигатели) с короткозамкнутым ротором, мощностью 200 кВт и более, напряжением 1000 В и выше, частотой 50 и 60 Гц, односкоростные и двухскоростные, предназначенные...
3007. Основы объектно-ориентированного проектирования 238.5 KB
  Цель курса – освоение принципов объектно-ориентированного проектирования и методов объектно-ориентированного программирования с использованием языка С++. Если на компьютере установлена ОС Windows – в курсе рассматриваются примеры п...
3008. Суть и процесс реформ Бальцеровича в Польше 114.5 KB
  Как делаются реформы После краха коммунизма перед экономистами большинства стран бывшего Советского Союза встали устрашающе трудные задачи. Им пришлось отказаться от единой системы цен - искаженных цен - которая господствовала при коммунизме, перейдя...
3009. Коммерческая тайна банков 101 KB
  Вопросы правового регулирования общественных отношений по поводу использования и распространения информации в целом и отдельных ее видов в частности в последнее время занимают одно из значительных мест в юридической литературе. Среди них, несомнен...
3010. Моделирование электропотенциального поля в проводящей среде 42.59 KB
  Используя экспериментальные данные, полученные при моделировании электропотенциального поля в проводящей среде, найти пересечения эквипотенциальных поверхностей Ui, соответствующих значениям U1 = 1,500 B, U2 = 0,160 B и U3 = 0.104 В, с осями х, у и ...
3011. Изучение типов потребителей по психографическому признаку 181.5 KB
  Любой рынок с точки зрения маркетинга состоит из покупателей, которые отличаются друг от друга по своим вкусам, желаниям, потребностям и, главное, приобретают товары исходя из разных мотиваций. Поэтому предприниматель должен понимать, что п...
3012. Интегрированные стратегии коммуникаций предприятий различных типов на примере United Airlines 247.5 KB
  В настоящее время в распоряжении маркетолога имеется огромный арсенал различных маркетинговых коммуникационных инструментов: пресса, радио, телевидение (наземное, спутниковое, кабельное и интерактивное с видеотекстом), телефон, почта, е-мейл и Интер...
3013. BIOS и строение программной части компьютера 70.5 KB
  Составные части BIOS. BIOS - Базовая система ввода-вывода (Basic Input Output System) называется так потому, что включает в себя обширный набор программ ввода-вывода, благодаря которым операционная система и прикладные программы мо...