Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
02.05.2014
Размер:
2.8 Кб
Скачать
program vtoroj;
uses crt, graph;
var r,o,k,n,m,i,dr,md:integer;
ef1,ef2,ef,g1,g2,g,p_1,p_2,q,y,a,b,a1,a2,yk,ymin,xmin,d,e,x1,x2:real;
function realst(r:real; dig,deg:integer):string;
var Buf:string[20];
begin str(r:dig:deg,buf); realst:=Buf; end;
function f(var x1,x2:real):real;
begin f:=x1-1.2*x2+exp(0.01*x1*x1+1.1*x2*x2); end;
function p1(var x1,x2:real):real;
begin p1:=1+0.02*x1*exp(0.01*x1*x1+1.1*x2*x2); end;
function p2(var x1,x2:real):real;
begin p2:=-1.2+2.2*x2*exp(0.01*x1*x1+1.1*x2*x2); end;
function pp1(var x1,x2:real):real;
begin pp1:=0.02*exp(0.01*x1*x1+1.1*x2*x2)*(0.02*x1*x1+1); end;
function pp2(var x1,x2:real):real;
begin pp2:=2.2*exp(0.01*x1*x1+1.1*x2*x2)*(2.2*x2*x2+1); end;
function fa1(var x1,p_1,a1:real):real;
begin fa1:=x1-a1*p_1; end;
function fa2(var x2,p_2,a2:real):real;
begin fa2:=x2-a2*p_2; end;
begin
clrscr;
write('vvedite nachalnoe priblisenie Xo1 '); readln(x1);
write('vvedite nachalnoe priblisenie Xo2 '); readln(x2);
write('vvedite uslovie ostanova e '); readln(e);
a:=1; k:=0; r:=1; o:=8; a1:=0; a2:=0;
dr:=detect; initgraph(dr,md,''); setGraphmode(md);
line(399,0,399,470); line(0,200,640,200);
outtextxy(620,210,'x1'); outtextxy(410,455,'x2');
setcolor(black); lineto(410,250);
lineto(round(x1*20+399),round(x2*50+200));
setcolor(white);
g1:=p1(x1,x2); g2:=p2(x1,x2); g:=sqrt(g1*g1+g2*g2);
ef1:=pp1(x1,x2); ef2:=pp2(x1,x2); ef:=sqrt(ef1*ef1+ef2*ef2);
repeat
k:=k+1;
if (o mod k)=0 then
begin
ef1:=pp1(x1,x2); ef2:=pp2(x1,x2); ef:=sqrt(ef1*ef1+ef2*ef2);
r:=r+1;
end;
p_1:=g1/ef1; p_2:=g2/ef2;
a:=0; b:=1; n:=75; m:=1;
a1:=(a+b)/2; yk:=fa1(x1,p_1,a1); ymin:=999999;
repeat
m:=m-1;
for i:=1 to n do
begin
a1:=a+i*(b-a)/(n+1);
if fa1(x1,p_1,a1)<ymin then
begin ymin:=fa1(x1,p_1,a1); xmin:=a1; end;
end;
a1:=xmin; yk:=ymin; d:=b-a;
a:=a1-d/(n+1); b:=a1+d/(n+1);
until m=0;
a:=0; b:=1; n:=75; m:=1;
a2:=(a+b)/2; yk:=fa2(x2,p_2,a2); ymin:=999999;
repeat
m:=m-1;
for i:=1 to n do
begin
a2:=a+i*(b-a)/(n+1);
if fa2(x2,p_2,a2)<ymin then
begin ymin:=fa2(x2,p_2,a2); xmin:=a2; end;
end;
a2:=xmin; yk:=ymin; d:=b-a;
a:=a2-d/(n+1); b:=a2+d/(n+1);
until m=0;
x1:=x1-a1*p_1; x2:=x2-a2*p_2;
lineto(round(x1*20+399),round(x2*50)+200);
g1:=p1(x1,x2); g2:=p2(x1,x2); g:=sqrt(g1*g1+g2*g2);
until (abs(g)<e)or(abs(g)=e); y:=f(x1,x2);
outtextxy(20,20,'tochka minimuma imeet koordinati: ');
outtextxy(20,30,'x1= ' + realst(x1,10,8));
outtextxy(20,40,'x2= ' + realst(x2,10,10));
outtextxy(20,50,' y= ' + realst(f(x1,x2),11,9));
outtextxy(20,60,'chislo vichislenij koordinat x1,x2 ravno '+realst(k,5,0));
outtextxy(20,70,'chislo vichislenij vtorix proisvodnix ravno '+realst(r,2,0));
readkey; closegraph;
end.
Соседние файлы в папке №3