Проект «Приближенное решение уравнений» на языке Delphi
Задача. Найти корень уравнения х3 – cos x = 0 приближенными методами (графическим и численным методом деления числового отрезка аргумента пополам).
Графический метод.
Формальная модель задана уравнением, для нахождения корня уравнения разработаем компьютерную модель на языке Delphi
1. var
Form1: TForm1;
x:real;
y:real;
n:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
with Image1.Canvas do
begin
// график функции
x:=-3;
while x<3 do
begin
x:=x+0.001;
y:=x*x*x-cos(x);
pixels[round(100*x)+200,200-
round(20*y)]:=clblack;
end;
moveto(0,200); lineto(500,200);//ось х
moveto(250,0); lineto(250,500);//ось у
//шкала оси х
N:=0;
while n<500 do
begin
n:=n+100;
moveto(n,190); lineto(n,210);
textout(n,200,floattostr(round(n-250)/50));
end;
//шкала оси у
N:=0;
while n<400 do
begin
n:=n+100;
moveto(245,400-n); lineto(255,400-n);
textout(245,400-n,
floattostr(round((n-200)/10)));
end;
end;
end;
end.
end;
2. График функции пересекает ось Х один раз и, следовательно, уравнение имеет один корень. По графику грубо приближенно можно определить, что х» 0,8.
Численный метод половинного деления.
3. Поместить на форму:
- два текстовых поля Edit1, Edit2 для ввода числовых значений концов числового отрезка А и В;
- текстовое поле Edit3 для ввода точности вычислений;
- метку Label4 для вывода значений корня;
- метки Label1, Label2, Label3 и Label5 для надписей к полям и метке.
4. Поместить на форму кнопку Button2 и создать событийную процедуру TForm1.Button2Click(Sender: TObject). Ввести программный код, позволяющий вычислить корень уравнения методом половинного деления с использованием цикла с постусловием, который будет выполняться пока выполняется условие (В-А)/2>E;
var
A:real;
B:real;
C:real;
E:real;
procedure TForm1.Button2Click(Sender: TObject);
begin
A:=strtofloat(Edit1.Text);
B:=strtofloat(edit2.Text);
E:=strtofloat(edit3.Text);
repeat
c:=(a+b)/2;
if (a*a*a -cos(a))*(c*c*c-cos(c))<0
then b:=c
else a:=c
until (b-a)/2<e;
label4.Caption:=floattostr((a+b)/2)
end;
5 Из графика функции видно, что корень находится на отрезке [0;1]. Введем в текстовые поля значения концов числового отрезка, а так же точность вычислений 0,00001. На метку будет выведено значение корня с заданной точностью: х» 0,86547.
Самостоятельно создать проект на Delphi, который позволяет найти корень уравнения х3 = sin x.