Численное решение алгебраических уравнений методом половинного деления
Описание математической модели. Обоснование метода реализации. Вид алгоритма и программы. Руководство системного программиста, оператора. Комбинирование метод хорд и касательных. Интерпретация и анализ результатов. Листинг программы, контрольный пример.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 12.01.2014 |
Размер файла | 3,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
[Введите текст]
МИНИСТЕРСТВО НАУКИ И ОБРАЗОВАНИЯ ЧЕЛЯБИНСКОЙ ОБЛОСТИ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«МИАССКИЙ ГЕОЛОГОРАЗВЕДОЧНЫЙ КОЛЛЕДЖ»
Курсовая работа
По предмету: «Технология разработки программных продуктов»
На тему: «Численное решение алгебраических уравнений методом половинного деления»
Миасс
2013
Аннотация
В данной курсовой работе рассмотрен принцип численного решения алгебраических уравнений, методом половинного деления, а также в среде Delphi 7 была разработана программа, реализующая алгоритм решение уравнения методом половинного деления. В пояснительной записке приводится описание как самого метода решения, выдача ответа пользователю, так и самой программы.
Введение
Методом половинного деления, даёт приближения корня с разных сторон. Поэтому их часто применяют в сочетании друг с другом, тогда уточнение корня происходит быстрее.
В рамках этой программы реализован алгоритм решение и выдача ответа по запросам пользователя.
Программа предназначен для автоматизированного решения методом половинного деления.
1. Общая часть
1.1 Постановка задачи
Написать программу, выполняющую численное решение алгебраических уравнений, методом половинного деления. Результат работы программы должен выводиться на экран.
В программе реализовать следующее меню:
1) Ввести данные с клавиатуры.
2) Осуществить проверку на введённые данные в уравнение.
3) Вывести ответ на экран.
4) Выход.
1.2 Описание математической модели
Пусть требуется найти действительный корень уравнения f (x)= 0, изолированный на отрезке [a,b]. Предполагается, что f (a) и f (b) имеют равные знаки, а каждая из производных сохраняет определенный знак на отрезке изоляции. Возьмем на отрезке [a,b] такую точку xo, что f (xo) и f” (xo) (при x, принадлежащем промежутку изоляции) имеют одинаковые знаки.
Воспользуемся формулами методов хорд и касательных:
X11=Xo- f (xo) / f1(xo); X12 = a - (b - a ) f (a) / f (b) - f (a).
Величины X11 и X12 принадлежат промежутку изоляции, причем f (X11) и f (X12) имеют разные знаки.
X21=X11- f (x11) / f1(x11); X22=X11-(X12-X11) f (X11) / f (X12) - f (X11).
Точки X21 и X22 на числовой оси расположены между точками X11 и X12, причем f (X21) и f (X22) имеют разные знаки.
Вычислим теперь значения
X31=X21- f (x21) / f1(x21); X32=X21-(X22-X21) f (X21) / f (X22) - f (X21).
Каждая из последовательностей X11, X21, X31,... Xn1, …; X12, X22, X32, …, Xn2, …стремится к искомому корню, причем одна из последовательностей монотонно возрастает, а другая - монотонно убывает. Пусть, например, Xn1 < X< Xn2, тогда 0 < X- Xn-1 < Xn2- Xn2 - Xn1. Задав заранее достаточно малое мы можем, увеличивая n, добиться выполнения неравенства Xn2 - Xn1 <; следовательно, при этом же значении n будет выполняться неравенство
X - Xn1 < . Таким образом, Xn1 является приближенным значением корня X, вычисленным с погрешностью, не превышающей .
Так, например, для нахождения приближенного значения X с точностью до 0,001 нужно определить n таким образом, чтобы значения Xn1 и Xn2, вычисленные с точностью до 0,001, совпадали.
1.3 Обоснование и описание метода реализации
В курсовом проекте реализована программа решение уравнений в соответствии с заданием к курсовому проекту.
При решении поставленной задачи оптимально использовать язык Delphi, который является языком высокого уровня и позволяет быстро и эффективно создавать приложения, обладающие удобным графическим пользовательским интерфейсом, предоставляет наиболее широкие возможности для программирования приложений ОС Windows.
2. Специальная часть
2.1 Описание алгоритма
Рис. 1
2.2 Описание программы
При запуске программа появляется форма выбора метода решение уравнения. Уравнение заноситься вручную, если какое-то значение лишнее просто поставьте ноль перед ним, так же вручную заноситься интервал и точность. Если забыли вести значение вылезет предупреждение. Так же существует кнопка очистить, очищает веденые значение и таблицу.
2.3 Руководство системного программиста
Для работы программы необходим файлProject.exe. Вывод результата будет производиться непосредственно в самой программе.
Минимальные системные требования для работы данной программы:
1. Процессор с частотой 800 Мгц;
2. Оперативная память - 64мб;
3. 640кб свободного места на жестком диске;
4. Операционная система Windows.
2.4 Руководство программиста
Программа предназначена для численного решение алгебраических уравнений, комбинированным методом хорд и касательных.
В программе содержится поля для ввода данных, поля для вывода данных, таблица и две кнопки решение, очистить.
Если не заполнить хоть одно значение, вылезет предупреждение.
После запуска программы будет происходить:
1)Выбор пункта меню.
2)Переход к основной части программы.
3) Ввод данных запроса
4) Обработка запроса
5) Выдача результатов решения на экран
6) Выход
2.5 Руководство оператора
хорда касательная программа алгоритм
Программа «Численное решение алгебраических уравнений. Комбинирование метод хорд и касательных» предназначена для автоматизированного решения комбинированным методом хорд и касательных, и выдача ответа пользователю.
При запуске программы выводится форма, в которой осуществляется выбор метода численного решение алгебраических уравнений, имеющая следующий вид:
Рис. 2
При выборе метода выводится форма имеющая следующий вид:
Рис. 3
Форма содержит семь полей для ввода данных выделено овалами, и одно поле для вывода ответа выделено прямоугольником
Рис. 4
Если не вести хоть одно поля для ввода данных и нажать на решение появиться предупреждение, имеющий следующий вид:
Рис. 5
При нажатии на кнопку “ОК” программа автоматически переходит обратно.
Когда ведены все значение нужна нажать кнопку решить.
Расчеты сводиться в таблицу и выводиться ответ:
Рис. 6
Так же есть кнопка очистить поля для набора значений.
2.6 Интерпретация и анализ результатов решения
Все результаты работы программы выводятся в той же форме в которой заводились значения, на которой расположено три панели, в которых выводятся введённые пользователем вводимые данные, ответ, и таблица, содержащие расчеты по запросу пользователя.
Заключение
Программа предназначена для оперативного решения комбинированным методом хорд и касательных по запросам конечных пользователей системы.
Применять этот программный продукт можно в целях упрощения процесса решение комбинированным методом хорд и касательных.
Достоинство заключается в том, что программа имеет удобный и простой пользовательский интерфейс, принципы работы с которым может освоить любой пользователь, не имеющий опыта и навыков работы с ПК, знаний и умений в области программирования, а так же в вышей математике.
Недостатки: не находит сама интервал.
Список используемой литературы
1. Лекции по предметам«Базы Данных» и «ТРПП», «Численные методы».
Приложение 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;
procedureFormCreate(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;
procedureThorcas.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);
vara,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
Результат решения программы
Результаты решение программы при уравнение x^3-2x^2-4*x+7при интервале [-2:-3], точность Е=0,001 ответ: Корень = -1,935.
Приложение 3
Контрольный пример
Дано уравнение: x3 - 2х2 - 4х + 7 = 0. Уточнить корень с погрешностью e < 0,001.
Решение
Проведя процедуру отделения корней, получим, что уравнение имеет три действительных корня: х1О[-2, -1]; x2О[1, 2]; хзО[2, 3].
Находим первую производную: f'(х) = 3х2 - 4x - 4.
Находим вторую производную: f"(х) = 6х - 4.
Для примера рассмотрим уточнение корня х1. Учитывая, что f(-2) < 0; f(-1)>0; f"(x)=6х - 4 и при -2 Ј х Ј -1 - f"(x)<0, для расчетов примем следующие формулы:
; (1.1) (1.2)
Где хлi и xпi - соответственно значение корня по недостатку (слева) и избытку (справа); хлi = -2, xпi = -1.
Все промежуточные результаты вычислений сведем в табл. 1.
Таблица 1 - Результаты расчетов по комбинированному методу
i |
xлi |
xпi |
xпi - xлi |
f(xлi) |
F(xпi) |
|
0 |
-2 |
-1 |
1 |
-1 |
8 |
|
1 |
-1,9400 |
-1,8900 |
0,0500 |
-0,0686 |
0,6645 |
|
2 |
-1,9355 |
-1,9353 |
0,0002 |
-0,0011 |
0,0020 |
Ответ: x1= -1,935.
Размещено на Allbest.ru
Подобные документы
Обозначения и термины, характерные для электрических систем при изложении узлового метода. Создание математической модели данного метода в виде системы алгебраических и трансцендентных уравнений. Структура и листинг программы анализа электрических схем.
отчет по практике [1,0 M], добавлен 29.05.2013Разработка программы для нахождения корней нелинейных уравнений несколькими методами: методом хорд, касательных, половинного деления, итераций. Реализации программы с помощью системы программирования Delphi 7. Методика работы пользователя с программой.
курсовая работа [1,3 M], добавлен 11.02.2013Обзор существующих методов по решению нелинейных уравнений. Решение нелинейных уравнений комбинированным методом и методом хорд на конкретных примерах. Разработка программы для решения нелинейных уравнений, блок-схемы алгоритма и листинг программы.
курсовая работа [435,8 K], добавлен 15.06.2013Математический алгоритм вычисления корней нелинейного уравнения и его решение методом касательных. Особенности программной реализации решения таких уравнений. Процедура подготовки и решения задачи на ЭВМ, характеристика алгоритма и структуры программы.
курсовая работа [96,6 K], добавлен 02.06.2012Метод половинного деления при приближенном вычислении алгебраических и трансцендентных выражений. Решение системы уравнений методом Крамера. Блок-схема программы Glav. Описание стандартных и нестандартных процедур и функций, интерфейса. Численные примеры.
курсовая работа [1,5 M], добавлен 29.07.2013Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений.
курсовая работа [581,0 K], добавлен 15.06.2013Разработка с использованием приложения Mathcad алгоритма и программы решения нелинейного уравнения методами касательных, половинного деления и хорд. Решение с помощью ее заданных нелинейных уравнений. Создание графической иллюстрации полученных решений.
курсовая работа [665,7 K], добавлен 22.08.2013Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.
дипломная работа [144,8 K], добавлен 25.04.2012Особенности точных и итерационных методов решения нелинейных уравнений. Последовательность процесса нахождения корня уравнения. Разработка программы для проверки решения нелинейных функций с помощью метода дихотомии (половинного деления) и метода хорд.
курсовая работа [539,2 K], добавлен 15.06.2013Приведение системы линейных алгебраических уравнений к треугольному виду прямым ходом метода Гаусса. Применение обратного хода метода вращений. Создание алгоритма, блок-схемы и кода программы. Тестовый пример решения уравнения и его проверка в MathCad.
лабораторная работа [164,3 K], добавлен 02.10.2013