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

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

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.


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