Программирование линейных алгоритмов

Автор: Пользователь скрыл имя, 28 Января 2011 в 11:06, лабораторная работа

Описание работы

Цель: Уметь использовать оператор присваивания процедуры ввода и вывода данных

Работа содержит 1 файл

Лабораторная работа.doc

— 113.50 Кб (Скачать)
Лабораторная  работа №1
Программирование  линейных алгоритмов

Цель: Уметь  использовать оператор присваивания процедуры  ввода и вывода данных 
 

Program LR1V63;

const b=0.87;

Var x,y,a:Real;

begin

a:=exp(-b)+b;

x:=SQR(sin(a)+cos(a));

y:=SQRT(x+ln(x+a));

writeln('x=',x:8:3,' y=',y:8:3,' a=',a:8:3);

end.

 

Program LR1V92;

const a=0.35;b=12;z=-1000;

Var x,y:Real;

begin

x:=ln(abs((a+exp((1/3)*ln(b*a))+z)));

y:=(exp(0.6*ln(x))+sin(x))/SQRT(SQR(a)+x+1);

writeln('x=', x:8:3,' y=',y:8:3);

end.

 

Лабораторная  работа №2 

Программирование  разветвляющихся  алгоритмов

Цель: уметь  использовать условный оператор IF для создания ветвлений 

Program LR2V63;

Const a=1.87;

Var b,x,y:Real;

begin write('b=');Readln(b);

x:=5*sin(a) + cos(b*a);

writeln('x=',x:12:6);

If x<=0then y:=sqr(a+x) else if (0<x)and(x<2.2) then y:=sqrt(sqr(a)+sqr(b)) else y:=(a+x)/(sin(x)+(a*x));

writeln('y=',y:12:6);

end.

 

Program LR2V92;

Var n,u,p,y:Real;

begin

p:=exp(1.163*ln(0.171))*ln(5)/ln(2)+2.525*ln(7)/ln(3);

write('n=');Readln(n);

If p<n+1 then y:=ln(abs(p)+abs(n)) else if p=n+1 then y:=exp(p-n) else y:=ln(abs(p-n));

writeln ('y=',y:12:6);

End.

 
 

Лабораторная  работа №3 

Программирование  циклических алгоритмов

Цель: уметь  использовать оператор повтора с  пред и пост условиями 

Program LR3V63;

Var x,y,xn,xk,dx:Real;

Begin xn:=2;xk:=5;dx:=1;x:=xn;

Repeat

y:=exp(0.95*ln(x+3))*x/SQRT(4.3*x+1/x);

writeln('x= ' , x:6:3, 'y= ' , y:12:6);x:=x+dx;

Until x>xk;

End.

 

Program LR3V92;

Var y,x,xn,xk,dx:Real;

Begin

xn:=5;xk:=10;dx:=1;x:=xn;

While x<=xk do begin

y:=abs((sqr(x)-2*x+2)/sqrt(2*exp(3*ln(x))-ln(x)));

Writeln('x=', x:6:3,'y=',y:12:6);

x:=x+dx;

End;

End.

 

Лабораторная  работа №4

Программирование  алгоритмов накопления суммы и произведения.

Цель: научиться  программировать вычисление суммы  ряда с помощью рекуррентной формулы  R(i)с использованием операторов повтора repeat, while, for. 
 
 

Лабораторная  работа №5 

Программирование  обработки одномерных массивов, векторов

Цель: уметь  вычислять статистические показатели: средние и вариационные с помощью  алгоритмов накопления сумм и произведения, выполнять сортировку элементов  векторов по убыванию или по возрастанию, находить максимум и минимум массива. 
 

Лабораторная  работа №6

Программирование  матричных операций

Цель: уметь  ввод вычислять, выводить и преобразовывать  элементы 2-х мерных массивов. Вычислять  статистические показатели, сортировать  по убыванию и возрастанию элементы строк, столбцов и диагоналей. 

Program LR6V92;

Var i,j,k,n,F:word;

a:array[1..20,1..20] of real;

x:array[1..20] of real;

S,P,max,y,Buf:Real;

begin

write('n=');Readln(n);

writeln('matrix a');

For i:=1 to n do begin

F:=1;

For k:=1 to i do

F:=F*k;

For j:=1 to n do begin

a[i,j]:=(2*i*j+4*i)/F;

write(a[i,j]:6:3,'');

end; writeln; end; writeln; 

writeln('vector x');

For i:=1 to n do begin

S:=0;

For j:=1 to n do begin

S:=S+a[2,j]*a[j,i];

end;

x[i]:=S;

write(x[i]:6:3,' ');

end;

writeln; 

Writeln('sortirovka');

For j:=1 to N-1 do begin

For k:=j+1 to n do begin

If a[j,j]<a[k,k] then begin

Buf:=a[j,j];a[j,j]:=a[k,k];

a[k,k]:=buf;

end;end;end;

For i:=1 to n do begin

For j:=1 to n do begin

write (a[i,j]:8:4, ' ');   end;writeln; end;   writeln; 

P:=1;

For i:=1 to n do

P:=P*x[i];

y:=SQRT(p);

writeln('y=',y:6:3)

end. 

 
 
 
 
 
 
 

Лабораторная  работа №7 

Решение нелинейных уравнений численными методами

Цель: уметь  решать трансцендентные (нелинейные) уравнения  различными методами

Метод бисекции:

program LR7V9R1;

Label M;

const e=1e-06;

pi=3.142;

var a,b,c,x:real;

function f(x:real):real;

begin

f:=3/4*SQR(x)*SQR(x)*x-2/3*SQR(SQR(x))+4/9*x-1;

end;

begin

writeln('a,b'); readln(a,b);

M:c:=(a+b)/2;

if abs(f(c))<e then writeln ('c=', c:12:6,'  f(c)=',f(c):12:10) else

if f(a)*f(c)<0 then begin b:=c; goto M;

end else begin a:=c; goto M; end; end.

Метод Ньютона:

Program LR7V9R2;

label M;

const e=1e-03; pi=3.142;

var a,b,c,c0:real;

function f(x:real):real;

begin

f:=3/4*SQR(x)*SQR(x)*x-2/3*SQR(SQR(x))+4/9*x-1;

end;

function f1(x:real):real;

begin

f1:=15/4*SQR(SQR(x))-8/3*SQR(x)*x+4/9;

end;

begin

Writeln('c0='); readln(c0);

M:c:=c0-f(c0)/f1(c0);

If abs(f(c))<e then writeln('f(c)=',f(c):12:10,'c=',c:12:6)

else begin c0:=c;goto M; end; end. 

Метод простой  итерации:

program lr7v9sp3;

label M;

const eps=1e-06;

var a,b,c,c0,x:real;

function f(x:real):real;

begin

f:=3/4*SQR(SQR(x))*x-2/3*SQR(SQR(x))+4/9*x-1;

end;

function f2(x:real):real;

begin

f2:=15/4*SQR(SQR(x))-8/3*SQR(x)*x+4/9;

end;

begin

writeln('c');readln(c);

M:x:=f2(c);

if abs(x-c)<eps then

writeln('x= ',x:12:6) else

begin c:=x;goto M;

end;

end. 

Лабораторная работа №8 

Решение систем линейных уравнений.

program LR8V9R1;

const n=3;

var i,j:integer;

at,a:array[1..n,1..n] of real;

x,b:array[1..n] of real;

d:array[0..n] of real;

y:array[1..n] of real;

s:real;

begin

writeln('matrix A');

for i:=1 to n do begin

for j:=1 to n do begin

read (a[i,j]);

end;

writeln;

end;

writeln;

d[0]:=a[1,1]*a[2,2]*a[3,3]+a[1,2]*a[2,3]*a[3,1]+a[1,3]*a[2,1]*a[3,2];

d[0]:=d[0]-a[1,1]*a[3,2]*a[2,3]-a[1,2]*a[3,3]*a[2,1]-a[1,3]*a[3,1]*a[2,2];

    writeln('   B   ');

for i:=1 to n do read(b[i]);

writeln;

for i:=1 to n do

for j:=1 to n do  at[i,j]:=a[i,j]; 

for i:=1 to n do   begin

for j:=1 to n do at[j,i]:=b[j];

d[i]:=at[1,1]*at[2,2]*at[3,3]+at[1,2]*at[2,3]*at[3,1]+at[1,3]*at[2,1]*at[3,2];

d[i]:=d[i]-at[1,1]*at[3,2]*at[2,3]-at[1,2]*at[3,3]*at[2,1]-at[1,3]*at[3,1]*at[2,2];

    x[i]:=d[i]/d[0];

  writeln('x',i:2,'=',x[i]:12:9);

for j:=1 to n do at[j,i]:=a[j,i];

  end; 

  for i:=1 to n do begin

  s:=0;

  for j:=1 to n do    s:=s+a[i,j]*x[j];

  y[i]:=s;

  writeln('y',i:2,'=',y[i]:12:9);

  end;

  end. 

 

Program LR8V9R2;

const n=3; eps=1e-03;

var i,j,k:integer;

a:array[1..n, 1..n] of real;

x,b:array [1..n] of real;

y:array [1..n] of real;

s:real;

begin

writeln('matrix a');

for i:=1 to n do begin

for j:=1 to n do read(a[i,j]);

writeln;

end; writeln;

    writeln('  B   ');

for i:=1 to n do

read(b[i]); writeln;

for i:=1 to n do  x[i]:=0.1;

k:=0;

repeat

for i:=1 to n do begin

s:=0;

for j:=1 to n do

if i<>j then s:=s+a[i,j]*x[j];

x[i]:=1/a[i,i]*(b[i]-s);

end;

for i:=1 to n do begin

s:=0;

for j:=1 to n do s:=s+a[i,j]*x[j];

y[i]:=s; end;

K:=k+1;

until ((abs(b[1]-y[1])<eps) or (abs(b[2]-y[2])<eps)) or (abs(b[3]-y[3])<eps); 

for i:=1 to n do writeln (x[i]:9:5,'  ', y[j]:9:5);

end. 

 

Лабораторная  работа №9 

Численное интегрирование.

Цель: Уметь программировать приближённые методы треугольников и трапеций для вычислений определённых интегралов.  

Информация о работе Программирование линейных алгоритмов