h1

Лабораторные работы по вычислительной математике: Решение систем линейных уравнений, Умножение и обращение матриц, Линейная интерполяция кривой намагничивания, Решение нелинейных уравнений, Вычисление определенных интегралов

Май 4, 2010

Здесь предствлены пять лабораторных работ по дисциплине «Вычислительная математика», работы были выполнены на 2 курсе, в 1 семестре. Примеры выполнения составленных программ в данном файле.

РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ

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

Задание: Составить алгоритм и программу решения системы уравнений:

(46,471+0,1×N)×x1 + 5,283×x2 + 6,342×x3 = 6,267

3,33×x1 + (34,745+0,1×N)×x2 + 5,862×x3 = 15,154

4,637×x1 + 6,318×x2 + (26,173+0,1×N)×x3 = 25,255

где N – номер варианта (мой вариант- 8).

Исходный код составленной программы:

uses Crt;

const

n=8;

aa: array [1..3,1..3] of real=

((46.471+0.1*n, 5.283, 6.342),

(3.33, 34.745+0.1*n, 5.862),

(4.637, 6.318, 26.173+0.1*n));

bb: array [1..3] of real=

((6.267), (15.154), (25.255));

Var

i,j,k,m,l:1..3;

A:Array [1..3,1..3] of real;

X:Array [1..3] of real;

B:Array [1..3] of real;

c,s,d:real;

begin

ClrScr;

for i:=1 to 3 do for j:=1 to 3 do begin

A[i,j]:=aa[i,j];

end;

for i:=1 to 3 do begin

B[i]:=bb[i];

end;

Writeln(‘Matrica koefficentov:’);

for i:=1 to 3 do

begin

for j:=1 to 3 do

write(A[i,j]:10:4);

writeln;

end;

Writeln(‘Svobodnie koefficenti:’);

for i:=1 to 3 do

Begin

Write(B[i]:10:4);

writeln;

end;

for k:=1 to 3-1 do

begin

if A[k,k]=0 then

begin

l:=k;

for m:=k+1 to 3 do

begin

if abs(a[m,k])> abs(a[l,k]) then

l:=m;

end;

repeat

for j:=k to 3 do

begin

d:=a[k,j];

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

a[l,j]:=d; end;

d:=b[k]; b[k]:=b[l]; b[l]:=d;

until l=k;

end;

for i:=k+1 to 3 do

begin

c:=A[i,k]/A[k,k];

for j:=k to 3 do

begin

a[i,j]:=a[i,j]-c*a[k,j];

end;

b[i]:=b[i]-c*b[k];

end;

x[3]:=b[3]/a[3,3];

i:=3-1;

repeat

s:=0;

for j:=i+1 to 3 do

begin

s:=s+a[i,j]*x[j];

end;

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

i:=i-1;

until i=0;

Writeln(‘Vektor neizvestnih:’);

for I:=1 to 3 do

Write(x[i]:10:4);

writeln;

readkey;

end;

end.


УМНОЖЕНИЕ И ОБРАЩЕНИЕ МАТРИЦ

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

Задание: составить алгоритм и программу обращения матрицы, умножения прямой и обратной матриц. Предусмотреть ввод исходной матрицы, вывод прямой, расширенной и обратной матриц и их произведения A×A-1. Обращение матрицы выполняется методом Гаусса.

Исходный код составленной программы:

Программа была реализована на Delphi, поэтому код приведен в сокращении.

Обращение матрицы:

for i:=1 to 3 do

for j:=1 to 3 do

obr[i,j]:=a[i,j];

//определитель

D:=A[1,1]*A[2,2]*A[3,3]+A[1,2]*A[2,3]*A[3,1]+A[2,1]*A[3,2]*A[1,3]-A[1,3]*A[2,2]*A[3,1]-A[1,2]*A[2,1]*A[3,3]-A[2,3]*A[3,2]*A[1,1];

//транспонирование

for i:=1 to 3 do

for j:=i+1 to 3 do

begin

l:=A[i,j];

Obr[i,j]:=Obr[j,i];

Obr[j,i]:=k;

end;

for i:=1 to 3 do begin

for j:=1 to 3 do

Obr[i,j]:=d*Obr[i,j];

end;

Расширение матрицы:

m:=6;

for i:=1 to 3 do

begin

for j:=1 to m do

begin

if j>3 then

begin

if j=3+i then Ras[i,j]:=1 else Ras[i,j]:=0;

end

else Ras[i,j]:=a[i,j];

end;

end;

Умножение прямой и обратной матриц:

for i:= 1 to 3 do

for k:= 1 to 3 do

begin

for j:= 1 to 3 do

Ypo[i,k]:= Ypo[i,k] + a[i,j]*Obr[j,k];

end;

Умножение расширенной и обратной матриц:

for i:= 1 to 3 do

for k:= 1 to 5 do

begin

for j:= 1 to 3 do

Yro[i,k]:= Yro[i,k] + Ras[i,j]*Obr[j,k];

end;


ЛИНЕЙНАЯ ИНТЕРПОЛЯЦИЯ КРИВОЙ НАМАГНИЧИВАНИЯ

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

Задание: составить алгоритм и программу линейной интерполяции кривой намагничивания магнитного материала.

Исходный код составленной программы:

uses crt;

var h,b: array[1..15] of real;

x, y, k, m: real;

i, kr: integer;

flag: boolean;

begin clrscr;

flag:=false;

h[1]:=0.4; h[2]:=0.9;  h[3]:=1.5;  h[4]:=2;  h[5]:=4;

h[6]:=7;   h[7]:=16; h[8]:=38; h[9]:=79; h[10]:=144;

h[11]:=189; h[12]:=201; h[13]:=267; h[14]:=364; h[15]:=400;

b[1]:=0.02;  b[2]:=0.2; b[3]:=0.62; b[4]:=0.98; b[5]:=1.28;

b[6]:=1.38;  b[7]:=1.6; b[8]:=1.75; b[9]:=1.85; b[10]:=2;

b[11]:=3.8;  b[12]:=4.5; b[13]:=4.9; b[14]:=5.6; b[15]:=7.11;

write(‘  [0.4 400] x= ‘);

readln(x);

for i:=1 to 15 do begin

if flag=false then begin

if x<h[i] then begin

flag:=true;

kr:=i;

end;

end;

end;

k:=(b[kr]-b[kr-1])/(h[kr]-h[kr-1]);

m:=b[kr]-k*h[kr-1];

y:=k*x+m;

writeln(‘ y= ‘,y:2:3);

readkey;

end.


РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ

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

Задание: составить алгоритм и программу решения уравнения  на отрезке .

Исходный код составленной программы:

Программа была реализована на Delphi, поэтому код приведен в сокращении.

n:=0;x0:=-1;c:=-0.1;x:=x0;eps:=0.001;d:=0.01;

repeat

y:=x+c*(exp(x)+x);z:=x;

n:=n+1;

memo1.Lines.Add(FloatToStrf(n,fffixed,2,0)+’   ‘+FloatToStrf(x,fffixed,2,4)+’   ‘+FloatToStrf(y,fffixed,2,4)+’   ‘+

FloatToStrf(abs(y-x),fffixed,2,4)+’   ‘+FloatToStrf((exp(y)+y),fffixed,2,4));

x:=y;

until (abs(z-x)<=eps) and (abs(exp(x)+x)<=d);


ВЫЧИСЛЕНИЕ ОПРЕДЕЛЕННЫХ ИНТЕГРАЛОВ

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

Задание: составить алгоритм и программу вычисления определенного интеграла. Функция f(x) , первообразная F(x), интервал . Метод трапеций.

Исходный код составленной программы:

uses crt;

var d,y,i,x,h,a,b:real;

n,j:integer;

function F(x:real):real;

begin

f:=1/sqrt(9+x*x)

end;

begin

clrscr;

writeln(‘Vvedite chislo razbienii: ‘);

readln(n);

a:=0; b:=2;

h:=(a+b)/n;

y:=0; x:=a-n;

for j:=1 to n-1 do

begin

x:=x+h;

y:=y+F(x);

end;

y:=y+(f(a)+f(b))/2;

i:=y*h;

d:=ln(x+sqrt(x*x+9))-ln(3);

writeln(‘Integral, reshennii metodom trapecii: ‘,i:3:5);

writeln(‘Integral, reshennii metodom pervoobraznoi :’,d:3:5);

readkey;

end.


Advertisements

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: