Саня и Димон 1ая лаба (изм)
.docxФИЛИАЛ ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО
ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ «МЭИ»
в г. Смоленске.
Лабораторная работа №1 по численным методам
«Аппроксимация характеристики нагнетательной установки по методу наименьших квадратов».
Преподаватель: Новиков Г.Ю.
Выполнили студенты:
Зайцев Д.И.
Демидов А.Ю.
Группа: ЭО-12
Смоленск 2014
Цель работы:
Закрепление и углубление знаний студентов по курсу «Численные методы». При проведении работы студенты подробно знакомятся с одним из методов аппроксимации, методом наименьших квадратов (МНК), составлением блок схем и написанием программ.
Задание:
-
Изучить указания к выполнению данной лабораторной работы.
-
Составить подпрограмму формирования матрицы коэффициентов МНК.
-
Составить головную программу определения функциональной зависимости
между напором насосной установки Н и расходом Q.
В головной программе необходимо:
-предусмотреть ввод из файла таблицы значений (hi,qi);
-с помощью подпрограммы сформировать расширенную матрицу коэффициентов системы МНК;
-составить программу решения системы линейных уравнений методом Гаусса, переслать элементы матрицы в соответствующие массивы для обращения к подпрограмме решения системы линейных уравнений;
-вычислить среднеквадратичное отклонение;
-предусмотреть печать результатов.
4) Подготовить исходные данные, записав их в файл.
5) Провести вычисление на ЭВМ [3,4].
6) Получить графическое изображение характеристики на экране дисплея.
7) Провести анализ полученных результатов расчёта.
8) Оформить отчёт согласно требованиям, предъявляемых к оформлению отчёта.
Получение коэффициентов происходит путем решения системы уравнений методом Гаусса.
Решение заключается в последовательном исключении из каждого уравнения неизвестной переменной. Таким образом из 2 строки исключаем переменную Р0 , из 3 строки исключаем Р0 и Р1
Метод решения системы уравнений.
Обозначим суммы через произвольные буквы для простоты решения.
a=
b=
c=
d=
e=
f=
g=
Первое уравнение системы раздели на k и умножим на а и вычтем из второго уравнения первое. Далее второе уравнение разделим на получившийся коэффициент при Р1 и умножим на коэффициент при Р2 и вычтем из третьего уравнения второе. (Метод прямой прогонки)
После из последнего уравнения находится неизвестный коэффициент Р2 , из второго – Р1 и из первого – Р0
Программа:
Program lab1;
uses crt;
var
P0,P1,P2:real;
a,b,c,d,e,f,g:integer;
i,j:integer;
X:array [1..15] of integer;
Y:array [1..15] of integer;
begin
X[1]:=5;
X[2]:=10;
X[3]:=15
X[4]:=20;
X[5]:=25;
X[6]:=30;
X[7]:=35;
X[8]:=40;
X[9]:=45;
X[10]:=50;
X[11]:=55;
X[12]:=60;
Y[1]:=34;
Y[2]:=34,5;
Y[3]:=35;
Y[4]:=35;
Y[5]:=34,5;
Y[6]:=34;
Y[7]:=32,5;
Y[8]:=31;
Y[9]:=29;
Y[10]:=27,5;
Y[11]:=26,5;
Y[12]:=23;
a:=0;
b:=0;
c:=0;
d:=0;
e:=0;
f:=0;
g:=0;
For i:=1 to 15 do
begin
a:=a+X[i];
b:=b+sqr(X[i]);
c:=c+Y[i];
d:=d+sqr(X[i])*X[i];
e:=e+X[i]*Y[i];
f:=f+sqr(X[i])*sqr(X[i]);
g:=g+sqr(X[i])*Y[i];
end;
writeln('####Summi###');
writeln;
writeln('a=',a);
writeln('b=',b);
writeln('c=',c);
writeln('d=',d);
writeln('e=',e);
writeln('f=',f);
writeln('g=',g);
writeln;
writeln('!!!koefficienty!!!');
writeln;
P2:=(((12*g-c*b)-((d*12-a*b)/(b*12-a*a))*(12*e-c*a)))/(f-(b*b/12)-((12*d-a*b)*(12*d-a*b))/(b*12-a*a));
P1:=((12*e-c*a)-P2*(12*d-b*a))/(12*b-a*a);
P0:=(c-b*P2-a*P1)/12;
writeln('P0=',P0:4:4);
writeln('P1=',P1:4:4);
writeln('P2=',P2:4:4);
readln;
end.
Полученные коэффициенты:
Р2= 0,0004
Р1= –0,2243
Р0= 38,1809
Блок-схема к программе
начало
X[1]:=5;X[2]:=10;X[3]:=15X[4]:=20;X[5]:=25;X[6]:=30;X[7]:=35;X[8]:=40;X[9]:=45;X[10]:=50;X[11]:=55;X[12]:=60;Y[1]:=34;Y[2]:=34,5;Y[3]:=35;Y[4]:=35;Y[5]:=34,5;Y[6]:=34;Y[7]:=32,5;Y[8]:=31;Y[9]:=29;Y[10]:=27,5;Y[11]:=26,5;Y[12]:=23;
a:=0;
b:=0;
c:=0;
d:=0;
e:=0;
f:=0;
g:=0;
I:12
a:=a+X[i];
b:=b+sqr(X[i]);
c:=c+Y[i];
d:=d+sqr(X[i])*X[i];
e:=e+X[i]*Y[i];
f:=f+sqr(X[i])*sqr(X[i]);
g:=g+sqr(X[i])*Y[i];
P2:=(((12*g-c*b)-((d*12-a*b)/(b*12-a*a))*(12*e-c*a)))/(f-(b*b/12)-((12*d-a*b)*(12*d-a*b))/(b*12-a*a));
P1:=((12*e-c*a)-P2*(12*d-b*a))/(12*b-a*a);
P0:=(c-b*P2-a*P1)/12;
writeln('P0=',P0:4:4);
writeln('P1=',P1:4:4);
writeln('P2=',P2:4:4);
конец
Построение графика и оценка среднеквадратичного отклонения.
Так необходимо построить график, с учетом найденных коэффициентов, оценить среднеквадратичное отклонение и необходимо аппроксимировать табличную функцию многочленом второй степени:
Для наглядности составим таблицу:
X |
Y |
P2(X) |
Среднее квадратичное отклонение. |
5 |
34 |
34,1909 |
0,4746 |
10 |
34,5 |
34,6655 |
0,1785 |
15 |
35 |
34,8440 |
0,1174 |
20 |
35 |
34,7266 |
0,4133 |
25 |
34,5 |
34,3133 |
0,7093 |
30 |
34 |
33,6040 |
1,0052 |
35 |
32,5 |
32,5988 |
1,3012 |
40 |
31 |
31,2976 |
1,5972 |
45 |
29 |
29,7004 |
1,8931 |
50 |
27,5 |
27,8073 |
2,189 |
55 |
26,5 |
25,6183 |
2,4851 |
60 |
23 |
23,1332 |
2,7812 |
|
|
|
|
|
|
|
|
|
|
|
|
Вывод:
Подробно познакомились с одним из методов аппроксимации, методом наименьших квадратов (МНК), составили блок-схему и написали программу, подготовили исходные данные и провели вычисления на ЭВМ, получили графическое отображение характеристики, провели анализ полученных результатов .