- •Лабораторная работа № 1
- •Порядок выполнения работы
- •Листинг программы
- •Тестирование пограммы
- •Лабораторная работа №2
- •Порядок выполнения работы
- •Варианты заданий
- •Листинг программы
- •Тестирование программы
- •Лабораторная работа № 4
- •Методические указания
- •Порядок выполнения работы
- •Листинг программы
- •Тестирование программы
Порядок выполнения работы
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.