
- •Министерство образования и науки российской федерации
- •Национальный исследовательский томский политехнический университет
- •1.Общие сведения
- •2. Пример применения мнк
- •2.2 Программа на языке paskal применения мнк для квадратичной функции
- •2.3 Обработка полученных результатов
- •2.4 Самостоятельная работа
- •20 Вариант.
- •3. Пример применения мнк
- •3.2 Обработка полученных результатов
- •3.3 Самостоятельная работа
- •8 Вариант.
2.3 Обработка полученных результатов
Пример расчета для квадратичной зависимости.
Рассчитаем экспериментальное значение уноса кремневой кислоты в зависимости от давления с помощью программы написанной на языке PASKAL(см. пункт 3) и сравним полученные значения с заданными. Построим график зависимости.
Таблица 1.Зависимость уноса кремневой кислоты от давления пар ТП-240
№ эксперимента |
Давление Р МПа |
Унос кремневой кислоты расчет.Ky% |
Унос кремневой кислоты эксперемент.Ky % |
1 |
10 |
1 |
1,19 |
2 |
11 |
1,1 |
1,00 |
3 |
12 |
1,2 |
1,08 |
4 |
13 |
1,5 |
1,41 |
5 |
14 |
2,1 |
2,0 |
6 |
15 |
2,8 |
2,86 |
7 |
16 |
3,8 |
3,97 |
8 |
17 |
5,2 |
5,35 |
9 |
18 |
7 |
6,98 |
10 |
19 |
9 |
8,87 |
1
2
график 1–экспериментальная кривая
график 2 –расчетная кривая
Рисунок 1. Зависимость уноса кремниевой кислоты от давления котла ТП-240
2.4 Самостоятельная работа
20 Вариант.
Полученные данные растворимости Na2PO4 в котловой воде от температуры.
Обобщите
эти данные с помощью МНК для получения
функциональной зависимости вида
и определить значение растворимости
К при Т=15 ОС
и Т= 325 ОС.
Решение:
Введите число экспериментальных точек N: 8
введите координаты экспериментальных точек:
0 8
45 30
100 42
115 49
200 38
210 32
250 10
300 1
c1= 10.54476,c2= 0.49586, c3= -0.00183
введите значение х1 =15
при х=х1 у1= 17.57087
введите значение х2=325
при х=х2 у2= -21.64442
Таблица 2. Зависимость растворимости Na2PO4 в котловой воде от температуры.
N |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
T, 0C |
0 |
45 |
100 |
115 |
200 |
210 |
250 |
300 |
К, г/(м2ч) |
8 |
30 |
42 |
49 |
30 |
32 |
10 |
1 |
Кэкс, г/(м ч) |
10,55 |
29,15 |
41,83 |
43,36 |
36,40 |
33,95 |
20,11 |
-5,4 |
1
2
1– экспериментальная кривая;2 – аппроксимированная кривая
Рисунок 2 Зависимость растворимости Na2PO4 в котловой воде от температуры.
3. Пример применения мнк
Рассмотрим теперь вопрос о том, как при использовании критерия наименьших квадратов получается система уравнений для определения функциональной зависимости f(X).
3.1Степенная зависимость f(X)
На
практике при обработке экспериментальных
данных с целью получения функциональной
зависимости часто используют степенную
функцию вида
(например, зависимость теплофизических
свойств газов от температуры или числа
Нуссельта от критериев Рейнольдса и
Прандтля). Непосредственное использование
МНК приведет к нелинейным уравнениям,
но это затруднение можно обойти, используя
вместо экспериментальных уравнений их
логарифмы
Теперь мы стараемся сделать минимальной сумму квадратов разностей между логарифмами экспериментальных значений Y и логарифмами ординат функции . При этом получаем
Дифференцируя
по a
и по b,
придем к системе двух линейных уравнений
с двумя неизвестными
и
b.
Перепишем данную систему в общепринятом виде:
где
d11
=N,
d12
=d21
=
,
d22
=
,
z1
=
,
z2
=
,
,
w = b
Будем
решать систему по правилу Крамера,
согласно которому
если определитель системы D
не равен 0.
После
определения u
и w
находим
Текст программы для проведения степенной функции как можно ближе к экспериментальным значениям (Xj ,Yj , j=1,2,…,N) с помощью МНК представлен следующим образом.
3.1.2 Программа на языке PASKAL применения МНК для степенной функции
program Mnk;
var
{Координаты эксперементальных точек}
X: array[1..100] of Real;
Y: array[1..100] of Real;
i,N:Integer;
d11,d12,z1,d22,z2,d,u,w,x1,x2:Real;
DataFile: Text;
function Step(arg,s:real):real;
begin if arg=0 then step:=0 else step:=Exp(s*Ln(arg));
end;
begin
{ввод числа точек и их координата}
Assign(DataFile,'Dan.dat');
Reset(DataFile);
Readln(DataFile,N);
For i:=1 to N do
Readln(DataFile,X[i],Y[i]);
Close(DataFile);
{Расчет коэффициентов}
d11:=N;d12:=0;z1:=0;d22:=0;z2:=0;
For i:=1 to N do
begin
d12:=d12+Ln(X[i]);
d22:=d22+Sqr(Ln(X[i]));
z1:=z1+Ln(Y[i]);
z2:=z2+Ln(X[i])*Ln(Y[i]);
end;
d:=d11*d22-Sqr(d12);
if d<>0 then
begin
u:=(z1*d22-z2*d12)/d;
w:=(z2*d11-z1*d12)/d;
end
else begin
writeln('Система не имеет решений');
exit
end;
{выдача на экран полученных значений}
writeln('A=',Exp (u):10:5,'B=',w:10:5);
{вывод данных в файл,'Res.dat'}
Assign(DataFile,'Res.dat');
Rewrite(DataFile);
For i:=1 to N do
writeln(DataFile,X[i]:10:5,Y[i]:10:5,Exp(u)*Step(X[i],w):10:5);
Close(DataFile);
writeln('ввидите значение х1');
Readln(x1);
writeln ('при х=х1 у1=',Exp(u)*Step(X1,w):10:5);
writeln('ввидите значение х2');
Readln(x2);
writeln ('при х=х2 у2=',Exp(u)*Step(X2,w):10:5);
end.