Автор работы: Пользователь скрыл имя, 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;
Информация о работе Автоматизация решения алгебраических уравнений. Метод половинного деления