Контрольная работа по " Численные методы"
Автор: svin17 • Март 17, 2018 • Контрольная работа • 592 Слов (3 Страниц) • 712 Просмотры
КОНТРОЛЬНАЯ РАБОТА
По дисциплине: Численные методы.
ВАРИАНТ 3
Работу выполнила:
студент
Проверил преподаватель:
«__»___________2008г.
Результат____________
2008г.
1. Решение Системы линейных уравнений.
Задание: Найти решение системы линейных уравнений. Для решения системы линейных уравнений использовать метод Гаусса.
-1.5X1+6.3X2 -1.8X3+12.4X4 = -62.9
9.4X1-2.4X2+2.9X3 -4.3X5 = 115.5
-3.4X2+10.9X3-3.7X4 +4.2X5 = 40.2
3.7X1-1.4X2+0.1X3+2.9X4-9.7X5 = 76.9
2.3X1+11.2X2 -4.3X4 +2X5 = -28.6
Листинг программы:
program P1;
uses crt;
const n=5; {максимальная размерность матрицы}
var
a:array [1..n,1..n] of real;
x,b:array [1..n] of real;
i,j,k:integer;
d:real;
begin
writeln('Vvedite posledovatelno elementi matr. (A):');
for i:=1 to n do begin
for j:=1 to n do read(a[i,j]);
end;
writeln('Vvedite svobodnie chleni (B):');
for i:=1 to n do read (b[i]);
{ Прямой ход }
for i:=1 to n-1 do begin
for k:=i+1 to n do begin
d:=a[k,i]/a[i,i];
for j:=i+1 to n do a[k,j]:=a[k,j]-a[i,j]*d;
b[k]:=b[k]-b[i]*d;
end;
end;
{Обратный ход}
for i:=n downto 1 do begin
for j:=i+1 to n do b[i]:=b[i]-a[i,j]*x[j];
x[i]:=b[i]/a[i,i];
end;
writeln('Вектоор неизвестных (Х): ');
for i:=1 to n do writeln('X[',i:2,']=',x[i]:1:5);
readln;
readln;
end.
Результат:
[pic 1]
2. Решение СНАУ.
Решить систему:
1.893*x1 – 0.581*ln(1.039*x2)=2.768
1.452*x2 – 1.578*e-0.976x1 =0.652
методом Ньютона.
Пределы изменения значений Х1 и Х2
Х1є [0.5,3.5]; X2 є [0.5,3.5]
Листинг программы:
program newton2;
const
n_max = 2;
a1=0.5;
b1=3.5;
a2=0.5;
b2=3.5;
type
TVec = array[1..n_max] of comp;
TMat = array[1..n_max,1..n_max] of comp;
procedure F(n: integer; x: TVec; var y: TVec);
begin
y[1]:=1.893*x[1]-0.581*ln(1.039*x[2])-2.768;
y[2]:=1.452*x[2]-1.578*exp(-0.976*x[1])-0.652;
end;
procedure G(n: integer; x: TVec; var a: TMat);
var
det: comp;
i,j: integer;
begin
a[1,1]:=1.893; a[1,2]:=-0.581/x[2];
a[2,1]:=0.976*1.578*exp(-0.976*x[1]); a[2,2]:=1.452;
det:=1.893*1.452-(-0.581/x[2]*0.976*1.578*exp(-0.976*x[1]));
for i:=1 to n do
for j:=1 to n do
a[i,j]:=a[i,j]/det;
end;
procedure Newts(n: integer; var x: TVec; eps:comp);
var
i,j: integer;
x0,y: TVec;
a: TMat;
cod: boolean;
begin
repeat
for i:=1 to n do x0[i]:=x[i];
F(n,x,y); G(n,x,a);
for i:=1 to n do
for j:=1 to n do
x[i]:=x[i]-a[i,j]*y[j];
cod:=true;
for i:=1 to n do
if abs(x[i]-x0[i]) > eps then cod:=false;
until cod;
for i:=1 to n do
writeln('x[i]=',x[i]:4:6);
end;
var
x: TVec;
n: integer;
eps: comp;
begin
n:=n_max;
eps:=0.0001;
...