скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыКурсовая работа: Программа для решения квадратных уравнений второго порядка

P(x) = a_0 + x(a_1 + x(a_2 + \cdots x(a_{n-1} + a_n x) \dots)).

Определим следующую последовательность:

b_n = a_n\,\!

b_{n-1} = a_{n-1} + b_n x\,\!

b_i = a_i + b_{i+1} x\,\!

b_0 = a_0 + b_1 x\,\!

Искомое значение P(x0) = b0. Покажем, что это так.

В полученную форму записи P(x) подставим x = x0 и будем вычислять значение выражения, начиная со внутренних скобок. Для этого будем заменять подвыражения через bi:

\begin{align}P(x_0) & = a_0 + x_0(a_1 + x_0(a_2 + \cdots x_0(a_{n-1} + a_n x_0)\dots)) \\& = a_0 + x_0(a_1 + x_0(a_2 + \cdots x_0(b_{n-1})\dots)) \\& {} \ \  \vdots \\& = a_0 + x_0(b_1) \\& = b_0\end{align}

Использование схемы Горнера для деления многочлена на бином

При делении многочлена a_0 x^n + a_1 x^{n-1} + \cdots + a_{n-1} x + a_n на x − c получается многочлен b_0 x^{n-1} + b_1 x^{n-2} + \cdots + b_{n-2} x + b_{n-1} с остатком bn.


3. Проектирование

программа интерфейс нелинейное уравнение

3.1 Требования к аппаратному обеспечению

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

Экран желательно иметь плоский, антибликовый, с антистатическим покрытием (типа AS- Anti Static), с низким уровнем излучения (тип- LR- Low Radiation). При выборе принтера нужно учесть: цветность, тип принтера (матричный, струйный, лазерный), количество игл или сопел, ширину печати, разрешающую способность, скорость печати, русификацию, емкость памяти, интерфейс, расходные материалы.

Для работы программы необходимо следующее минимальное аппаратное и программное обеспечение:

- Процессор Pentium III 400 Мгц или аналогичный:

- 128 Мб оперативной памяти;

- 24 Мб свободного места на диске ;

- клавиатура;

- ручной манипулятор «мышь»;

- видео карта 32 Мб;

- 48-скоростной дисковод CD-ROM;

- операционная система MS Windows версий от Windows 98;

- пакет программ Microsoft Office.

- среда программирования Borland Delphi 6

Эти требования являются минимальными, что означает, что при повышении класса компьютера и увеличении его производительности, эффективность использования программы также повысится.

Cостав ПК, на котором тестировалась программа

- Процессор AMD Athlon 1300, 1.30 Ггц

- 512 Мб оперативной памяти;

- 100 Гб свободного места на диске ;

- клавиатура;

- ручной манипулятор «мышь»;

- видео карта GeForce 4, 64 Мб;

- 52-скоростной дисковод CD-ROM;

- операционная система MS Windows XP;

- среда программирования Borland Delphi 7

3.2 Инструкция пользователя

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

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

- решение уравнения теоремой Виетта;

- решение квадратного уравнения с помощью таблицы Горнера;

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

Выполнение программы.

Для начала работы с программой следует загрузить на диск С: файлы программы в одну папку с CD, содержащим программу.

Для запуска программы следует запустить файл Project1.exe.

Появится главное окно программы в соответствии с рисунком 3.1


Рисунок 3.1 – Главное окно программы

В правой части окна расположено поле вывода данных. В левой же части вводятся данные и находятся кнопки управления программой.

Кнопки управления следующие:

- «Решить с помощью дискриминанта» - решение квадратного уравнения стандартным методом (с помощью нахождения дискриминанта);

- «Решить с помощью теоремы Виетта» - нахождение решения с применением теоремы Виетта;

- «Решить с помощью схемы Горнера» - решение квадратного уравнения только с корнями 2, 8 и 6;

- «Выход» - завершение работы программы.

Распишем командные кнопки более подробно

После ввода значений a, b и c следует выбрать метод решения.

При выборе кнопки «Решение с помощью дискриминанта» программа сначала найдет дискриминант по формуле

 (3.1)

Далее программа проверяет, чему равен дискриминант. Если он больше нуля, то он выводит ответ в соответствии с рисунком 3.2


Рисунок 3.2 – Корни, найденные по дискриминанту

Если же дискриминант меньше нуля, то программа покажет следующее окно в соответствии с рисунком 3.3

Рисунок 3.3 – Дискриминант меньше нуля

При дискриминанте равном нулю, программа найдет только один корень и покажет его в соответствии с рисунком 3.4

Рисунок 3.4 – Дискриминант равен нулю


При решении уравнения методом теоремы Виетта программа должна показать сумму и произведение корней уравнения. Результат решения в соответствии с рисунком 3.5

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

Корни для данного метода решения следует искать методом подбора. Данная программа их найти не может

Решение с помощью схемы Горнера подходит только если а=2, b=8, a c=6, так как программирование нахождения делителей с очень трудоемкий и сложный процесс, требующий много времени. Результат работы схемы Горнера в соответствии с рисунком 3.6

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


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

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

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

Для того чтобы открыть и просмотреть код программы необходимо установить у себя среду объектно-ориентированного программирования Delphi 2007. окно 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.


Страницы: 1, 2, 3


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.