|
|
|
|
|
|
|
|
страницы:
1
Текущая страница: 1
|
|
{кофф линейноного уавнения}
a:=y2-y1 b:=x1-x2 c:=-x1*(y2-y1)+y1*(x2-x1) {лежит ли точка на прямой} p:=false; if (x3-x1)*(y2-y1)-(y3-y1)*(x2-x1)=0 then p:=true; {расположение точек} l:='1'; z1:=(x3-x1)*(y2-y1)-(y3-y1)*(x2-x1); z2:=(x4-x1)*(y2-y1)-(y4-y1)*(x2-x1); if z1*z2<0; then l:='2'; {расположение отрезков} p:=true; z1:=(x3-x1)*(y2-y1)-(y3-y1)*(x2-x1) z2:=(x4-x1)*(y2-y1)-(y4-y1)*(x2-x1) if z1*z2>0 then p:=false; z3:=(x1-x3)*(y4-y3)-(y1-y3)*(x4-x3) z4:=(x2-x3)*(y4-y3)-(y2-y3)*(x4-x3) if z3*z4>0 then p:=false; {Точка пересечения отрезков} y=(a1c2-a2c1)/(a2b1-a1b2) x=(b1c2-b2c1)/(b2a1-b1a2) {Расстояние между точками} d:=sqrt((x1-x2)^2+(y1-y2)^2) {Расстояние от точки до прямой} a:=y2-y1 b:=x1-x2 c:=-x1*(y2-y1)+y1(x2-x1) t:=sqrt(a*a+b*b) d:=abs((a*x3+b*y3+c)/t) {Выпуклость много угольников} L:='выпуклый' for i:=1 to n do begin j:=i+1 k:=j+1 if i=n then k:=1 m:=i-1 if i=1 then m:=n; z1:=(x[m]-x[i])*(y[j]-y[i])-(y[m]-y[i])*(x[j]-x[i]); z2:=(x[k]-x[i])*(y[j]-y[i])-(y[k]-y[i])*(x[j]-x[i]); if z1*z2<0 then l:='Невыпулый' end; {площадь многоугольника} ymin:=y[1]; for k:= 2 to n do if ymin >y[k] then ymin:=y[k]; for k:=1 to n+1 do y1[k]:=y[k]-ymin; s:=0; for k:=1 to n do s:=s+(x[i+1]-x[i])*(y1[i+1]+y1[i]); s:=abs(s)/2; {Cортировка выбором} for i:=1 to n-1 do begin k:=i; max:=a[i]; for j:=i+1 to n do if a[j]>max then begin max:=a[j]; k:=j; end; A[k]:=a[i]; a[i]:=maxl; end; {Cортировка обменом} for i:=1 to n-1 do for j:=1 to n-1 do if a[j]>a[j+1] then begin x:=a[j]; a[j+1]:=a[j]; a[j]:=x; end; {Двоичный поиск} l:=1; r:=n+1; a[n+1]:=x; while (l begin m:=(r+l) div 2; if aa[m]>x then l:=m+1; else r:=m; end; {Сортировка бинарными вставками} for i:=2 to n do begin r:=i; l:=i; while (l Begin k:=(l+r) div 2; if a[k]>a[i] then l:=k+1; else r:=k; end; k:=r; x:=a[i]; for m:=i downto k+1 do a[m]:=a[m-1]; a[k]:=x; end;
{Метод Гауса} uses crt; const n=2; var m : array[0..n,0..n+1] of real; x : array[0..n] of real; i,j,k:integer; a,s:real; begin for j:=0 to n do for i:=0 to n do m[j,i]:=random(4)+1;
For k:=0 to n do begin a:=m[k,k]; for i:=0 to n+1 do m[k,i]:=m[k,i]/a; for j:=k to n-1 do begin a:=m[j+1,k]; for i:= 0 to n+1 do m[j+1,i]:=m[j+1,i]-m[k,i]*a; end; end;
for k:=n downto 0 do begin x[k]:=m[k,n+1]; for j:=n-1 downto k do x[k]:=x[k]-m[k,j+1]*x[j+1]; end;
end.
{Дифференцирование} const d=0.0001; x=2; {y=x*x+2} var f,dx:real; begin dx:=x+d; f:=((dx*dx+2)-(x*x+2))/d; writeln(f); end.
{Хорда} var x,xk,xk1,a,b:real;
function f(x:real):real; begin f:=x*x+x-2; end;
begin a:=-3; b:=0; xk1:=a; xk := a - (f(a)*(b-a)) / (f(b)-f(a));
while abs(xk-xk1)>=0.00001 do begin x:=xk1; if f(xk)*f(a)<0 then xk1:=xk-f(xk)*(xk-a)/(f(xk)-f(a)) else xk1:=xk-f(xk)*(b-xk)/(f(b)-f(xk)); xk:=x; end;
end. {ИНТЕГРИРОВАНИЕ} {left rect} const x1=1; x2=3; n=1000; {y=x*x+2} var s,y,h,x:real; i:integer; begin h:=(x2-x1)/n; s:=0; x:=x1; for i:=1 to n-1 do begin y:=x*x+2; s:=s+y*h; {!} x:=x+h; end; writeln(s); end. {right rect} const x1=1; x2=3; n=1000; {y=x*x+2} var s,y,h,x:real; i:integer; begin h:=(x2-x1)/n; s:=0; x:=x1; for i:=1 to n-1 do begin {!} x:=x+h; y:=x*x+2; s:=s+y*h; end; writeln(s); end. {middle rect} const x1=1; x2=3; n=1000; {y=x*x+2} var s,y,h,x:real; i:integer; begin h:=(x2-x1)/n; s:=0; x:=x1; for i:=1 to n-1 do begin {!} y:=(x+h/2)*(x+h/2)+2; s:=s+y*h; {!} x:=x+h; end; writeln(s); end. {middle rect} const x1=1; x2=3; n=1000; {y=x*x+2} var s,y1,y2,h,x:real; i:integer; begin h:=(x2-x1)/n; s:=0; x:=x1; for i:=1 to n-1 do begin {!} y1:=x*x+2; y2:=(x+h)*(x+h)+2; s:=s+(y1+y2)*h/2; {!} x:=x+h; end; writeln(s); end. {Простые Итерации} uses crt; var x,f,x0:real;
begin clrscr; x:=2; x0:=0; while abs(x-x0)>0.000001 do begin x0:=sqrt(x+2); x:=x0; end; writeln(x0); end. {Касательные} var d,x,xk,xk1,a,b:real;
function f(x:real):real; begin f:=x*x+x-2; end;
function f1(x:real):real; begin f1:=2*x-1; end;
begin a:=-3; b:=0; d:=0.0001; xk:=a; xk1:=b; while abs(xk-xk1)>=d do begin x:=xk1; xk1:=xk-f(xk)/f1(xk); xk:=x; end;
end.
Текущая страница: 1
|
|
|
|
|
|
|
|
|
|