Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТЧЕТ ПО ЧИСЛОВЫМ МЕТОДА.doc
Скачиваний:
3
Добавлен:
20.04.2019
Размер:
1.09 Mб
Скачать

Порядок выполнения работы

1. Изучить метод решения систем линейных уравнений, соответствующий Вашему варианту.

2. Разработать программы для решения системы линейных уравнений по методу, соответствующему Вашему варианту.

3. Решить заданную систему линейных уравнений с точностью =0,0001.

Варианты заданий

1) Метод простых итераций, k=1,

Листинг программы

Program LUF;

uses crt;

Type Mas=array [1..3,1..3] of real;

MasMer=array [1..3] of real;

Var A,A1,AI: Mas;

B,B1,x,x0,x1,BI: MasMer;

i,j,k,sc,ind:integer;

max,e,chis,xn,pr:real;

Procedure Wiwod(AW:Mas; YW:masMer);

Var wi,wj: integer;

Begin

For wi:=1 to 3 do begin

For wj:=1 to 3 do

if wj<> 3 then write (aw[wi,wj]:3:2,' + ') else write (aw[wi,wj]:3:2);

writeln ('=',Yw[wi]);

end;

End;

Begin

clrscr;

e:=0.0001;

K:=1;

For i:=1 to 3 do

For j:=1 to 3 do

Begin

a[1,1]:=1.2; a[1,2]:=-1.8; a[1,3]:=(2-0.1*k);

a[2,1]:=3.9; a[2,2]:=(2+0.2*k); a[2,3]:=-5.2;

a[3,1]:=(1+0.1*k); a[3,2]:=-2.2; a[3,3]:=7.3;

end;

For i:=1 to 3 do

Begin

b[1]:=7.5;

b[2]:=8.1;

b[3]:=8.7;

end;

Writeln ('___________________________');

Writeln ('Исходная система уравнений |');

Writeln ('___________________________');

Wiwod(A,b);

Writeln ('__________________________________________________________________');

Writeln ('Сходимость метода гарантируется, если значения диагональных эле - |');

Writeln ('ментов массива превосходят остальные - диагональное преобладание. |');

Writeln ('Проверка диагональных элементов массива на максимальное значение. |');

Writeln ('__________________________________________________________________');

sc:=0;

Writeln ('__________________________________________________________________');

Writeln (' ВЫПОЛНЕНИЕ ПРОВЕРКИ НА ДИАГОНАЛЬНОЕ ПРЕОБЛАДАНИЕ. |');

Writeln ('__________________________________________________________________');

For i:=1 to 3 do

begin

max:=a[i,i];

For j:=1 to 3 do

if max<a[i,j] then sc:=sc+1;

end;

if sc<>0 then begin

writeln ('Нужна перестановка');

Writeln ('__________________________________________________________________');

Writeln ('Заменяем исходные уравнения системы на равнозначные по формулам: |');

Writeln ('A"= A+B |');

Writeln ('B"= B+C-3A |');

Writeln ('C"= C |');

Writeln ('__________________________________________________________________');

For j:=1 to 3 do begin

a1[1,j]:=a[1,j]+a[2,j]; b1[1]:=b[1]+b[2];

a1[2,j]:=a[2,j]+a[3,j]-3*a[1,j]; b1[2]:=b[2]+b[3]-3*b[1];

a1[3,j]:=a[3,j]; b1[3]:=b[3];

end;

end;

Wiwod(a1,b1);

writeln ('Press ENTER');

readln;

clrscr;

writeln ('__________________________________________________________________');

Writeln ('Приведение функции к итерационному виду: |');

Writeln ('__________________________________________________________________');

for i:=1 to 3 do begin

for j:=1 to 3 do begin

ai[i,j]:=-a1[i,j]/a1[i,i];

if i=j then ai[i,j]:=0;

end;

bi[i]:=b1[i]/a1[i,i];

end;

for i:=1 to 3 do begin

write ('x',i,'=',ai[i,1]:4:3,'*x1 +',ai[i,2]:4:3,'*x2 +',ai[i,3]:4:3,'*x3 +',bi[i]:4:3);

writeln;

end;

for i:=1 to 3 do

x0[i]:=bi[i];

sc:=0;

writeln ('Press ENTER!'); readln; clrscr;

repeat

sc:=sc+1;

writeln ('Итерация № ',sc,' приближение = ',pr:5:4);

for i:=1 to 3 do

begin

x1[i]:=0;

for j:=1 to 3 do

x1[i]:= x1[i]+ai[i,j]*x0[j];

x1[i]:=x1[i]+bi[i];

writeln ('x',i,' - ',x1[i]:4:3,' ');

end;

if (sc mod 5) =0 then begin writeln ('Press ENTER!'); readln; clrscr; end;

ind:=0;

for i:=1 to 3 do begin

pr:=abs(x0[i]-x1[i]);

if pr>e then ind:=ind+1;

end;

for i:=1 to 3 do

x0[i]:=x1[i];

until ind =0;

Writeln ('_________');

Writeln ('Проверка |');

Writeln ('_________');

for i:=1 to 3 do begin

writeln (a[i,1]:3:2,'*',x0[1]:3:2,'+',a[i,2]:3:2,'*',x0[2]:3:2,'+',a[i,3]:3:2,'*',x0[3]:3:2,'=',a[i,1]*x0[1]+a[i,2]*x0[2]+a[i,3]*x0[3]:4:2);

end;

End.

Тестирование программы

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

Методы интерполяции функций.

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

Методические указания

Интерполяционный полином Лагранжа третьей степени имеет вид

Полином может испол3ьзоваться при интерполировании с произвольным расположением узлов интерполяции.

Порядок выполнения работы

1. Изучить метод интерполирования функций, соответствующий Вашему варианту.

2. Разработать программу интерполирования функции по данному методу.

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

Варианты заданий

1) Использовать полином Лагранжа.

xi

2

3

4

5

yi

5,4

7,6

1,3

9,2

Листинг программы

program interpol;

uses crt;

var x,y: array [1..4] of real;

i,j: integer;

rez,pr,x0,del,sum:real;

Begin

clrscr;

Writeln ('*****************************************************');

Writeln (' Интерполяция функции полиномом Лангранжа ');

Writeln ('*****************************************************');

Writeln ('----------------');

writeln ('Исходные данные:');

Writeln ('----------------');

Writeln (' № | x | y ');

writeln ('----------------');

X[1]:=2; Y[1]:=5.4;

X[2]:=3; Y[2]:=7.6;

X[3]:=4; Y[3]:=1.3;

X[4]:=5; Y[4]:=9.2;

for i:=1 to 4 do

writeln (' ',i-1,' | ', X[i],' | ', Y[i]);

sum:=0;

writeln ('----------------');

write ('Ввод значения точки для проведения интерполяции Х:');

readln (x0);

writeln ('----------------');

for i:=1 to 4 do begin

pr:=1;

del:=1;

for j:=1 to 4 do

if j<>i then begin

pr:=(x0-x[j])*pr;

del:=del*(x[i]-x[j]);

end;

rez:=(pr/del)*y[i];

sum:=sum+rez;

end;

writeln ('------------------------');

write ('Результат вычисления:');

writeln (sum:4:2);

writeln ('------------------------');

end.