- •Курсовая работа
- •Информатика
- •Пояснительная записка
- •Курсовая работа
- •Информатика
- •Задание
- •4 Рисунка, 2 блок-схемы, 1 таблица
- •30 Ноября 2011 года
- •Аннотация
- •Оглавление
- •Введение
- •Зависимость момента нагрузки м [кг·м] исполнительного органа угольного комбайна от толщины среза h [см].
- •Решение в ms Excel Аппроксимация эмпирических данных линейной зависимостью
- •Аппроксимация эмпирических данных квадратичной зависимостью
- •Элементы теории корреляции
- •Решение задачи в Mathcad Аппроксимация линейной функцей
- •Аппроксимация квадратичной функции
- •Вычисление коэффициента детерминированности.
- •Решение задачи в среде Turbo Pascal
- •Описание программы
- •Решение слау методом Гаусса
- •Библиографический список
- •Приложение 1
- •Приложение 2
- •Приложение 3
- •Приложение 4
- •Приложение 5
Приложение 4
PROGRAM kvadratichnaya;
{подключение модуля, необходимого для процедур очистки экрана и задержки}
USES CRT;
{Задание массива}
TYPE MAT=ARRAY [1..10,1..11] OF REAL;
VEK=ARRAY [1..25] OF REAL;
{Описание переменных}
VAR i,j,n:INTEGER; A:MAT; X,B,X1,Y1:VEK; fr,fm:text;
a1,b1,c1,d1,e1,f1,g1:real;
{Процедура Гаусса}
PROCEDURE GAU(VAR A:MAT; VAR B,X:VEK; m:INTEGER);
VAR k,i,j,t,L:INTEGER; D:REAL; fw :TEXT;
BEGIN
{Задание всех переменных}
L:=m+1; FOR i:=1 TO m DO A[i,L]:=B[i];
{имя файла данных на диске}
ASSIGN(fw,'gaus.txt'); REWRITE(fw); {запись данных в файл}
WRITELN(fw,' CUCTEMA YPABHEHIY: ');
{начальный вывод данных}
FOR i:=1 TO m DO
BEGIN
FOR j:=1 TO m DO WRITE(fw,A[i,j]:14:6,' X[',j,'] ' );
WRITELN(fw,' = ', B[i]:14:6);
END;
{прямой ход решения СЛАУ по методу Гаусса}
{формирование треугольной матрицы коэффициентов}
FOR i:=1 TO m DO
BEGIN
D:=A[i,i]; t:=i; {ищем max в столбце}
FOR j:=i TO m DO
IF abs(A[j,i]) > abs(D) THEN
BEGIN D:=A[j,i]; t:=j;END;
{обмен строк}
IF i<>t THEN
BEGIN
FOR j:=i TO L DO
BEGIN D:=A[i,j]; A[i,j]:=A[t,j]; A[t,j]:=D;END;
END;
{формирование строки}
FOR j:=L DOWNTO i DO A[i,j]:=A[i,j]/A[i,i];
{зануление столбцов и пересчет А}
FOR k:=i+1 TO m DO
FOR j:=L DOWNTO i DO A[k,j]:=A[k,j]-A[i,j]*A[k,i];
END;
{обратный ход}
X[m]:=A[m,L]; FOR i:=m-1 DOWNTO 1 DO
BEGIN
D:=0; FOR j:=m DOWNTO i+1 DO D:=D+A[i,j]*X[j];
X[i]:=A[i,L]-D;
END;
WRITELN(fw,' VEKTOR X: ');
FOR i:=1 TO m DO WRITE(fw, X[i]:10:6);
WRITELN(fw); CLOSE(fw)
END;
{вычисление сумм}
BEGIN clrscr;
{имя файла данных на диске}
assign(fm,'kursovik.txt'); reset(fm); {чтение данных c файла}
FOR i:=1 TO 25 DO read(fm,X1[i]);
FOR i:=1 TO 25 DO read(fm,Y1[i]);
FOR i:=1 TO 25 DO
{формулы вычисления для сумм}
begin
a1:=a1+X1[i]; {для x(i)}
b1:=b1+Y1[i]; {для y(i)}
c1:=c1+sqr(X1[i]); {для x(i)2}
d1:=d1+X1[i]*Y1[i]; {для x(i)y(i)}
e1:=e1+X1[i]*X1[i]*X1[i]; {для x(i)3}
f1:=f1+X1[i]*X1[i]*X1[i]*X1[i]; {для x(i)4}
g1:=g1+X1[i]*X1[i]*Y1[i]; {для x(i)2y(i)}
end;
{имя файла данных на диске}
assign(fr,'dan.txt');REWRITE(fr); {запись данных в файл}
{Формирование матрицы А}
write(fr,25,' ',a1:4:4,' '); writeln(fr,c1:4:4,' ');
write(fr,a1:4:4,' ',c1:4:4,' '); writeln(fr,e1:4:4,' ');
write(fr,c1:4:4,' ',e1:4:4,' '); writeln(fr,f1:4:4,' ');
write(fr,b1:4:4,' ',d1:4:4,' '); writeln(fr,g1:4:4,' ');
close(fr);
WRITELN(' РЕШЕНИЕ СЛАУ МЕТОДОМ ГАУССА. КОЛ-ВО УРАВН. НЕ БОЛЕЕ 10');
WRITELN; WRITE(' ВВОДИ ЧИСЛО УРАВНЕНИЙ: '); READLN(n);
{имя файла данных на диске}
assign(fr,'dan.txt'); reset(fr); {чтение данных с файла}
FOR i:=1 TO n DO
FOR j:=1 TO n DO READ(fr,A[i,j]);
FOR i:=1 TO n DO READ(fr,B[i]);
for i:=1 to n do begin
for j:=1 to n do write(a[i,j]:14:6);
writeln(B[i]:14:1); end;
GAU(A,B,X,n);
{вывод результатов}
WRITELN('VEKTOR X:');
FOR i:=1 TO n DO WRITE(X[i]:12:6,' '); WRITELN; readln;
END.
Результат работы программы
CUCTEMA YPABHEHIY:
25.000000 X[1] 40.400000 X[2] 86.316800 X[3] = 34039.000000
40.400000 X[1] 86.318600 X[2] 207.988022 X[3] = 64484.880000
86.318600 X[1] 207.988022 X[2] 535.163222 X[3] = 146684.350400
VEKTOR X:
412.112901 848.450296 -122.122397