Смекни!
smekni.com

Программа для решения квадратных уравнений второго порядка (стр. 4 из 4)

Рисунок 3.6 – Решение уравнения схемой Горнера


3.3 Инструкция программиста

Установка программы.

Программа не требует инсталляции и запускается с любого носителя, так как выполнена в виде одного исполняемого файла – Project1.exe.

Для того чтобы открыть и просмотреть код программы необходимо установить у себя среду объектно-ориентированного программирования Delphi2007. окно Delphiв соответствии с рисунком 3.6

Рисунок 3.6 – Окно среды программирования Delphi

Далее в окне проекта нужно выбрать пункт «File» (Файл) , затем пункт «Open Project» в открывшемся окне в соответствии с рисунком 4.6 найти файл проекта приложения Project1.dprи нажать кнопку «Открыть». Далее можно менять текст и внешний вид программы в соответствии со своими вкусовыми качествами.

После внесения изменений в код программы нужно ее откомпилировать, нажав комбинацию клавиш Ctrl+F9.

4. Реализация и тестирование

Рассмотрим контрольный пример выполнения программы. Запустим программу и зададим а=7, b=3 и с=4ю появится окно, повествующее о том, что корней в данном примере нет. Окно выполнения в соответствии с рисунком 4.1

Рисунок 4.1 – Окно отрицательного дискриминанта

Чтобы задать положительный дискриминант можно задать следующие параметры: а=2, b=10, c=8. Результат выполнения в соответствиис рисунком 4.2

Рисунок 4.2 – Положительный дискриминант

Зададим те же параметры для теоремы Виетта. Окно результата данного примера в соответствии с рисунком 4.3


Рисунок 4.3 – Уравнение, решенное теоремой Виета

При простом подборе корней, видно, что они действительно одинаковы как и с теми, которые получились в методе с дискриминантом.

Нажимаем «Выход» и завершаем работу с программой.

Заключение

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

- метод с применением дискриминанта;

- решение уравнения с помощью теоремы Виетта;

- нахождение корней с помощью создания схемы Горнера;

Использование мощных средств Delphi 7.0 по созданию приложений работающих в операционной системе Windows позволило создать программный продукт максимально ориентированный на конечного пользователя.

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

Более того, программный интерфейс максимально облегчает работу по обращению с уравнением, предоставляя несколько методов решения.

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

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

Было создано удобное простое в понимании приложение, позволяющее эффективно найти корни квадратного нелинейного уравнения


Список использованных источников

Ананий В. Левитин Глава 6. Метод преобразования: Схема Горнера и возведение в степень

Волков Е. А. § 2. Вычисление значений многочлена. Схема Горнера // Численные методы. — Учебное пособие для вузов. — 2-е изд., испр. — М.: Наука, 1987. — 248 с.

Винберг Э. Б. Алгебра многочленов. — М.: Просвещение, 1980. — 176 с.

Акулич И.Л. Математическое программирование в примерах и задачах: Учебное пособие для студентов эконом. спец. вузов. — М.: Высшая школа, 1986.

Карманов В.Г. Математическое программирование = Математическое программирование. — Изд-во физ.-мат. литературы, 2004

Максимов Ю.А. Алгоритмы линейного и дискретного программирования. — М.: МИФИ, 1980.

Листингпрограммы

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

Unit Unit1;

interface

uses

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

Dialogs, StdCtrls, jpeg, ExtCtrls, XPMan;

type

TForm1 = class(TForm)

Image1: TImage;

Label1: TLabel;

Button1: TButton;

Button2: TButton;

Memo1: TMemo;

Button3: TButton;

Button4: TButton;

XPManifest1: TXPManifest;

Label2: TLabel;

Edit1: TEdit;

Label3: TLabel;

Edit2: TEdit;

Label4: TLabel;

Edit3: TEdit;

Label5: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var a,b,c,d,x1,x2:real;

begin

memo1.Lines.Clear;

a:=strtoint(edit1.text);

b:=strtoint(edit2.text);

c:=strtoint(edit3.text);

d:=sqr(b)-(4*a*c);

if d>0 then begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

memo1.Lines.Add('Входные данные:');

memo1.Lines.Add('a= '+floattostr(a));

memo1.Lines.Add('b= '+floattostr(b));

memo1.Lines.Add('c= '+floattostr(c));

memo1.Lines.Add('');

memo1.Lines.Add('D(Дискриминант)= '+floattostr(d));

memo1.Lines.Add('');

memo1.Lines.Add('Корниуравнения');

memo1.Lines.Add('X1= '+floattostr(x1));

memo1.Lines.Add('X2= '+floattostr(x2));

end;

if d<0 then begin

memo1.Lines.Add('Дискриминантменьше0, корнейнет');

end;

if d=0 then begin

x1:=-b/(2*a);

memo1.Lines.Add('Входные данные:');

memo1.Lines.Add('a= '+floattostr(a));

memo1.Lines.Add('b= '+floattostr(b));

memo1.Lines.Add('c= '+floattostr(c));

memo1.Lines.Add('');

memo1.Lines.Add('D(Дискриминант)= 0');

memo1.Lines.Add('');

memo1.Lines.Add('Кореньуравнения');

memo1.Lines.Add('X= '+floattostr(x1));

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var s,p,a,b,c,d,x1,x2:real;

begin

memo1.Lines.Clear;

a:=strtoint(edit1.text);

b:=strtoint(edit2.text);

c:=strtoint(edit3.text);

s:=-b/a;

p:=c/a;

memo1.Lines.Add('Входныеданные:');

memo1.Lines.Add('a= '+floattostr(a));

memo1.Lines.Add('b= '+floattostr(b));

memo1.Lines.Add('c= '+floattostr(c));

memo1.Lines.Add('');

memo1.Lines.Add('Суммаипроизведениекорней');

memo1.Lines.Add('X1+X2= '+floattostr(s));

memo1.Lines.Add('X2*X2= '+floattostr(p));

memo1.Lines.Add('');

memo1.Lines.Add('Корниследуетискатьподбором');

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

application.Terminate;

end;

procedure TForm1.Button4Click(Sender: TObject);

var sum,del,j:array [1..8] of integer;

i:integer;

a,b,c,k:integer;

begin

memo1.Lines.Clear;

a:=2;

b:=8;

c:=6;

// Выводим делители С

del[1]:=1;

del[2]:=-1;

del[3]:=2;

del[4]:=-2;

del[5]:=3;

del[6]:=-3;

del[7]:=6;

del[8]:=-6;

//Составляемтаблицу

memo1.Lines.Add('ТаблицаГорнера:');

for i:=1 to 8 do begin

sum[i]:=del[i]*((del[i]*a)+b)+c;

// Выводимзначения

memo1.lines.add(inttostr(del[i])+' '+inttostr(a)+' '+inttostr((del[i]*a)+b)+' '+inttostr(sum[i]));

end;

k:=0;

for i:=1 to 8 do begin

if sum[i]=0 then begin

k:=k+1;

j[k]:=del[i];

end;

end;

memo1.Lines.Add('Делители, у которых сумма равна 0:');

for i:=1 to k do

memo1.Lines.Add('x'+inttostr(i)+'='+inttostr(j[i]));

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

edit1.Text:='2';

edit2.Text:='8';

edit3.Text:='6';

end;

end.