Интерпретация и анализ результатов решения
КУРСОВАЯ РАБОТА
По предмету: «Технология разработки программных продуктов»
На тему: «Численное решение алгебраических уравнений методом касательных»
Автор:
Студент 4 курса, гр.ПМ-4-1 (10) Н.К. Гараев
Руководитель: С.Г. Смирнов
Миасс
Содержание
Аннотация Введение 1. Общая часть 1.1 Постановка задачи 1.2 Описание математической модели 1.3 Обоснование и описание метода реализации 2. Специальная часть 2.1 Описание алгоритма 2.2 Описание программы 2.3 Руководство системного программиста 2.4 Руководство программиста 2.5 Руководство оператора 2.6 Интерпретация и анализ результатов Заключение Список используемой литературы Приложения 1. Листинг программы 2. Результаты решения программы 3. Контрольный пример |
Аннотация
В данной курсовой работе рассмотрен принцип численное решение алгебраических уравнений, комбинированным методом хорд и касательных, а также в среде Delphi 7 была разработана программа, реализующая алгоритм решение уравнения комбинирование методом хорда и касательных. В пояснительной записке приводится описание как самого метода решения, выдача ответа пользователю, так и самой программы.
Введение
Метод Ньютона, алгоритм Ньютона (также известный как метод касательных) — это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Улучшением метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить нуль первой производной либо градиента в случае многомерного пространства.
Общая часть
Постановка задачи
Написать программу выполняющую численное решение алгебраических уравнений, комбинированным методом хорд и касательных. Результат работы программы должен выводиться на экран.
В программе реализовать следующее меню:
1) Ввести данные с клавиатуры.
2) Осуществить проверку на введённые данные в уравнение.
3) Вывести ответ на экран.
4) Выход.
Описание математической модели
Обоснование и описание метода реализации
В курсовом проекте реализована программа решение уравнений в соответствии с заданием к курсовому проекту.
При решении поставленной задачи оптимально использовать язык Delphi, который является языком высокого уровня и позволяет быстро и эффективно создавать приложения, обладающие удобным графическим пользовательским интерфейсом, предоставляет наиболее широкие возможности для программирования приложений ОС Windows.
Специальная часть
Описание алгоритма
|
При запуске программа появляется форма выбора метода решение уравнения. Уравнение заноситься вручную, если какое-то значение лишнее просто поставьте ноль перед ним, так же вручную заноситься интервал и точность. Если забыли вести значение вылезет предупреждение. Так же существует кнопка очистить, очищает веденые значение и таблицу.
Руководство системного программиста
Для работы программы необходим файл Project.exe. Вывод результата будет производиться непосредственно в самой программе.
Минимальные системные требования для работы данной программы:
1. Процессор с частотой 800 Мгц;
2. Оперативная память – 64 мб;
3. 640 кб свободного места на жестком диске;
4. Операционная система Windows.
Руководство программиста
Программа предназначена для численного решение алгебраических уравнений, комбинированным методом хорд и касательных.
В программе содержится поля для ввода данных, поля для вывода данных, таблица и две кнопки решение, очистить.
Если не заполнить хоть одно значение, вылезет предупреждение.
После запуска программы будет происходить:
1) Выбор пункта меню.
2) Переход к основной части программы.
3) Ввод данных запроса
4) Обработка запроса
5) Выдача результатов решения на экран
6) Выход
Руководство оператора
Программа «Численное решение алгебраических уравнений. Комбинирование метод хорд и касательных» предназначена для автоматизированного решения комбинированным методом хорд и касательных, и выдача ответа пользователю.
При запуске программы выводится форма, в которой осуществляется выбор метода численного решение алгебраических уравнений, имеющая следующий вид:
При выборе метода выводится форма имеющая следующий вид:
Форма содержит семь полей для ввода данных выделено оваломи, и одно поле для вывода ответа выдилено прямоугольником
Если не вести хоть одно поля для ввода данных и нажать на решение появиться предупреждение, имеющий следующий вид:
При нажатии на кнопку “ОК” программа автоматически переходит обратно.
Когда ведены все значение нужна нажать кнопку решить.
Расчеты сводиться в таблицу и выводиться ответ:
Так же есть кнопка очистить поля для набора значений.
Интерпретация и анализ результатов решения
Все результаты работы программы выводятся в той же форме в которой заводились значения, на которой расположено три панели, в которых выводятся введённые пользователем вводимые данные, ответ,и таблица, содержащие расчеты по запросу пользователя.
Заключение
Программа предназначена для оперативного решение комбинированным методом хорд и касательных по запросам конечных пользователей системы.
Применять этот программный продукт можно в целях упрощения процесса решение комбинированным методом хорд и касательных.
Достоинство заключается в том, что программа имеет удобный и простой пользовательский интерфейс, принципы работы с которым может освоить любой пользователь, не имеющий опыта и навыков работы с ПК, знаний и умений в области программирования, а так же в вышей математике .
Недостатки: не находит сама интервал.
Список используемой литературы
Лекции по предметам «Базы Данных» и «ТРПП», «Численные методы»
Приложения
Приложение 1
Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls,mmsystem;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
procedure Image1Click(Sender: TObject);
procedure Image5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Image1Click(Sender: TObject);
begin
PlaySound('D:\learning\prog\Image\1.wav',0,SND_ASYNC);
end;
procedure TForm1.Image5Click(Sender: TObject);
begin
horcas.show;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, jpeg, ExtCtrls, ToolWin, ComCtrls;
type
Thorcas = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Button1: TButton;
Button2: TButton;
StringGrid1: TStringGrid;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit7: TEdit;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit8: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
horcas: Thorcas;
x4,x5,x6,x7:real;
implementation
uses Unit1;
{$R *.dfm}
function f(var x:real):real;
begin
f:= x4*x*x*x+x5*x*x+x6*x+x7;
end;
function f1(var x:real):real;
begin
f1:= 3*x*x-x5*x+x6; {первая производная}
end;
function f2(var x:real):real;{вторая производная}
begin
f2:=6*x-x6;
end;
procedure Thorcas.FormCreate(Sender: TObject);
begin
with Stringgrid1 do
begin
RowCount:=2;
ColCount:=6;
DefaultColWidth:=100;
Width:=630;
Cells[0,0]:='Номер шага';
Cells[1,0]:='Xi левое';
Cells[2,0]:='Xi правое';
Cells[3,0]:='Xiп - Xiл';
Cells[4,0]:='F(Xiл)';
Cells[5,0]:='F(Xiп)';
end;
end;
procedure Thorcas.Button1Click(Sender: TObject);
var a,b:real;
e:real;
x1,x2:real;
k:integer;
begin
if (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') or (Edit5.Text='') or (Edit6.Text='') or (Edit7.Text='') or (Edit8.Text='') then
begin
Application.MessageBox('Для решение уравнения должно быть заполнено все значения','Предупреждение',mb_OK);
Exit;
end;
x4:=StrToFloat(Edit4.Text);
x5:=StrToFloat(Edit5.Text);
x6:=StrToFloat(Edit6.Text);
x7:=StrToFloat(Edit7.Text);
a:=StrToFloat(Edit2.Text);
b:=StrToFloat(Edit3.Text);
e:=StrToFloat(Edit8.Text);
k:=0;
StringGrid1.Cells[0,k+1]:=IntToStr(k);
StringGrid1.Cells[1,k+1]:=FloatToStrF(a,ffFixed,4,1);
StringGrid1.Cells[2,k+1]:=FloatToStrF(b,ffFixed,4,1);
StringGrid1.Cells[3,k+1]:=FloatToStrF(b-a,ffFixed,4,1);
StringGrid1.Cells[4,k+1]:=FloatToStrF(F(a),ffFixed,4,1);
StringGrid1.Cells[5,k+1]:=FloatToStrF(F(b),ffFixed,4,1);
repeat
k:=k+1;
if f1(a)*f2(a)>0 then
begin
x1:=a-(f(a)*(b-a))/(f(b)-f(a));
x2:=x1-(f(x1)*(b-x1)/(f(B)-f(x1)));
a:=x2;
end
else
begin
x1:=b-(f(b)*(b-a))/(f(b)-f(a));
x2:=x1-f(x1)*(x1-a)/(f(x1)-f(a));
b:=x2;
end;
StringGrid1.RowCount:=StringGrid1.RowCount+1;
StringGrid1.Cells[0,k]:=IntToStr(k-1);
StringGrid1.Cells[1,k]:=FloatToStrF(x1,ffFixed,7,4);
StringGrid1.Cells[2,k]:=FloatToStrF(x2,ffFixed,7,4);
StringGrid1.Cells[3,k]:=FloatToStrF(x2-x1,ffFixed,7,4);
StringGrid1.Cells[4,k]:=FloatToStrF(F(x1),ffFixed,7,4);
StringGrid1.Cells[5,k]:=FloatToStrF(F(x2),ffFixed,7,4);
until abs(x2-x1)<=e;
Edit1.Text:='Корень = '+FloatToStrF(x2,ffFixed,7,3);
end;
procedure Thorcas.Button2Click(Sender: TObject);
var
i:integer;
begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Edit6.Text:='';
Edit7.Text:='';
Edit8.Text:='';
for i:=1 to StringGrid1.RowCount do
StringGrid1.Rows[i].Clear;
end;
end.
Приложение 2