Автор работы: Пользователь скрыл имя, 05 Декабря 2011 в 16:37, курсовая работа
В курсовом проекте рассмотрена автоматизация решений алгебраических уравнений. Автоматизация решений алгебраических уравнений методом половинного деления основана на нахождении абсолютной погрешности приближения и выявлении условий окончания итерационного процесса на каком-либо шаге при вычислении корня с точностью.
Введение                                                                                                                 
1.Общая часть
    1.1 Постановка задачи                                                                                         
    1.2 Описание математической модели                                                              
    1.3 Обоснование и описание метода  реализации                                             
2.Специальная  часть
    2.1 Описание алгоритма                                                                                      
    2.2 Описание программы                                                                                 
    2.3 Руководство системного программиста
    2.4 Руководство программиста                                                                         
    2.5 Руководство оператора                                                                                
    2.6 Интерпретация и анализ результатов                                                         
       Заключение                                                                                                           
       Список  используемой литературы                                                                     
Приложение
1.Листинг программы                                                                                        
2.Результат решения  программы                                                                        3.Контрольный пример
Достоинством данной является простой и наглядный интерфейс, интуитивное управление, и пятная цветовая гамма
 
Список используемой литературы
Приложение 1
Листинг программы
unit Unit1;
interface 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, 
TeEngine, Series, TeeProcs, Chart; 
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Button1: TButton;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Panel1: TPanel;
Panel2: TPanel;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Panel3: TPanel;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
Edit11: TEdit;
Label10: TLabel;
Button8: TButton;
procedure Button1Click(Sender: TObject);
procedure Panel1Click(Sender: TObject);
procedure Panel2Click(Sender: TObject);
procedure Panel3Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Edit5Click(Sender: TObject);
procedure Edit6Click(Sender: TObject);
procedure Edit7Click(Sender: TObject);
procedure Edit8Click(Sender: TObject);
procedure Edit9Click(Sender: TObject);
procedure Edit10Click(Sender: TObject);
procedure Edit5DblClick(Sender: TObject);
procedure Edit6DblClick(Sender: TObject);
procedure Edit7DblClick(Sender: TObject);
procedure Edit8DblClick(Sender: TObject);
procedure Edit9DblClick(Sender: TObject);
procedure Edit10DblClick(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
  end; 
var
Form1: TForm1;
a,b,c,d: real; //значения функции
p,q: real; //Для Кардано
Q1: Extended; //Для Кардано
x1,x2,y1,y2:real; //Проверка корней
ss:string; //Округление
a1,b1,a11,b11: real; //Границы отрезка
kr1,kr2,kx,kx2,ky,kfx,kfx2 :real; //Для графика
p1,p2,p3:real; //Проверка выбран ли отрезок
  bolt,fp11,fp12,fp21,fp22:real;
e: real; //Погрешность
s:integer; //Cчетчик количества шагов
c1,fa,fc: real;//Переменные Метода половинного деления
fb:real;//переменые метода Хорд
x: array [0..99] of real;
fpx2,fpx,fx :real;
x0,fpx0,x11,x12,e1:real;
  krr1, krr2:real; 
implementation 
uses Math; 
{$R *.dfm} 
procedure TForm1.Button1Click(Sender: TObject);
label Exit;
label N;
Label Y;
label YY;
label NN;
Label NNN;
Label YYY; 
begin 
 a:=StrToFloat(Edit1.Text); 
If a=0 then begin
             
Application.MessageBox(PChar('
goto Exit;
end;
b:=StrToInt(Edit2.Text);
c:=StrToFloat(Edit3.Text);
d:=StrToFloat(Edit4.Text);
Button6.Enabled:=true;
panel1.Color:=clWindow;
panel2.Color:=clWindow;
panel3.Color:=clWindow;
Edit5.Color:=clWindow;
Edit6.Color:=clWindow;
Edit7.Color:=clWindow;
Edit8.Color:=clWindow;
Edit9.Color:=clWindow;
Edit10.Color:=clWindow;
Series1.Clear;
Series2.Clear;
Series3.Clear;
kr1:=0;
kr2:=0;
kx:=0;
kx2:=0;
ky:=0;
kfx:=0;
kfx2:=0;
p:=-1*((b*b)/(3*a*a))+(c/a);
 q:=((2*(b*b*b))/(27*(a*a*a)))-
Q1:=Power(p/3,3)+Power(q/2,2);
Q1:=RoundTo(Q1,-3);
label9.Caption:=FloatToStr(Q1)
if Q1<0 then Label7.Caption:='Уравнение имеет три вещественных корня';
if Q1>0 then Label7.Caption:='Уравнение 
имеет один вещественный 
if (Q1=0) and (p<>0) then Label7.Caption:='Уравнение имеет два корня';
if (Q1=0) and (p=0) and (q=0) then Label7.Caption:='Уравнение имеет один корень';
x1:=-500;
y1:=a*Power(x1,3)+b*Power(x1,
x2:=x1;
N:
if y1>0 then begin
x2:=x2+0.1;
              
y2:=a*Power(x2,3)+b*Power(x2,
if y2<=0 then begin
x1:=x2-1;
x1:=RoundTo(x1,-6);
Edit5.Text:=FloatToStr(x1);
x2:=RoundTo(x2,-6);
Edit6.Text:=FloatToStr(x2);
goto Y;
end;
goto N;
end;
if y1<=0 then begin
x2:=x2+0.1;
              
y2:=a*Power(x2,3)+b*Power(x2,
if y2>=0 then begin
x1:=x2-1;
x1:=RoundTo(x1,-6);
Edit5.Text:=FloatToStr(x1);
x2:=RoundTo(x2,-6);
Edit6.Text:=FloatToStr(x2);
goto Y;
end;
goto N;
end;
Y:
kr1:=x1;
kr2:=x2;
Panel1.Visible:=true;
if (Q1<0) or ((Q1=0) and (p<>0))then begin
x1:=x2;
y1:=a*Power(x1,3)+b*Power(x1,
x2:=x1;
NN:
if y1>0 then begin
x2:=x2+0.1;
              
y2:=a*Power(x2,3)+b*Power(x2,
if y2<=0 then begin
x1:=RoundTo(x1,-6);
Edit7.Text:=FloatToStr(x1);
x2:=RoundTo(x2,-6);
Edit8.Text:=FloatToStr(x2);
goto YY;
end;
goto NN;
end;
if y1<=0 then begin
x2:=x2+0.1;
              
y2:=a*Power(x2,3)+b*Power(x2,
if y2>=0 then begin
x1:=RoundTo(x1,-6);
Edit7.Text:=FloatToStr(x1);
x2:=RoundTo(x2,-6);
Edit8.Text:=FloatToStr(x2);
goto YY;
end;
goto NN;
              
end; 
YY:
kr2:=x2;
Panel2.Visible:=true;
End;
if Q1<0 then begin
x1:=x2;
y1:=a*Power(x1,3)+b*Power(x1,
x2:=x1;
NNN:
if y1>0 then begin
x2:=x2+0.1;
              
y2:=a*Power(x2,3)+b*Power(x2,
if y2<=0 then begin
x1:=RoundTo(x1,-6);
Edit9.Text:=FloatToStr(x1);
x2:=RoundTo(x2,-6);
Edit10.Text:=FloatToStr(x2);
goto YYY;
end;
goto NNN;
end;
if y1<=0 then begin
x2:=x2+0.1;
              
y2:=a*Power(x2,3)+b*Power(x2,
if y2>=0 then begin
x1:=RoundTo(x1,-6);
Edit9.Text:=FloatToStr(x1);
x2:=RoundTo(x2,-6);
Edit10.Text:=FloatToStr(x2);
goto YYY;
end;
goto NNN;
end;
YYY:
kr2:=x2;
Информация о работе Автоматизация решения алгебраических уравнений. Метод половинного деления