Шпаргалка по численным методам

Определение точки пересечения отрезков, расстояния между точками, сортировка выбором, сортировка обменом, двоичный поиск, сортировка бинарными вставками.

ВНИМАНИЕ! Работа на этой странице представлена для Вашего ознакомления в текстовом (сокращенном) виде. Для того, чтобы получить полностью оформленную работу в формате Word, со всеми сносками, таблицами, рисунками (вместо pic), графиками, приложениями, списком литературы и т.д., необходимо скачать работу.

Шпаргалка по численным методам

{кофф линейноного уавнения}

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<r) do


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<r);


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
Просмотров: 0
Скачать реферат Заказать реферат