Вторник, 26.11.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 65
Гостей: 65
Пользователей: 0
Главная » 2017 » Октябрь » 29 » Метод наименьших квадратов (приближение параболой)
20:58
Метод наименьших квадратов (приближение параболой)

Метод наименьших квадратов (приближение параболой)

Про метод наименьших квадратов, позволяющий приблизить экспериментальные данные прямой было тут:
http://akostina76.ucoz.ru/blog/2017-09-07-4399

Проблема в том, что данные по теплоотдаче тут:
http://akostina76.ucoz.ru/blog/2017-10-27-4518

… явно не прямая. Теплоотдача сильно растёт с ростом разности температур.
Работать с информаций в виде экспериментальных точек неудобно. Можно конечно, руками нарисовать, что реально это как-то так:

… но математический расчёт явно сделает это точнее.
Прямая задаются функцией y=a*x+b, где константы a и b задают наклон и смещение по оси y/
Следующая по сложности кривая содержит квадрат X (добавляющий искривление функции) и задаётся таким уравнением y = a*x*x+b*x+c.
Как и в случае приближения прямой надо найти те a,b,c при которых кривая (в данном случае парабола) минимально отклоняется от экспериментальных точек:

 Отклоняться она может и в плюс  ив минус. Чтобы не думать над этим вопросом можно взять квадрат разности. Он-то точно будет положительным, а минимум суммы этих квадратов менее минимальным не станет. Надо только довольно утомительно возвести в квадрат эту разность (временно убрав индекс i для краткости записи):

Полученное выражение это функция F от a,b,c. Все X и Y тут известны. Это экспериментальные данные. А вот минимум этой функции сразу по a,b и с надо найти. Минимум в  данном случае это те точки в которых равна нулю первая производная.
Получается система уравнений:

Двойки можно посокращать а слагаемые расставить так  чтобы получилась система уравнений в привычном виде:

Осталось засунуть эту систему в Malpe чтобы он её решил. Функция приближения параболой и пример использования (на данных по теплоотдаче):
MNK_x2:=proc(X,Y,x1,x2,n) local N,a11,a12,a13,a21,a22,a23,a31,a32,a33,b1,b2,b3,f1,f2,f3,sys_ur,v,a_r1,b_r1,c_r1,ret;
N:=nops(X):
a11:=sum(X[k]*X[k]*X[k]*X[k],k=1..N):
a12:=sum(X[k]*X[k]*X[k],k=1..N):
a13:=sum(X[k]*X[k],k=1..N):
a21:=a12:
a22:=a13:
a23:=sum(X[k],k=1..N):
a31:=a13:
a32:=a23:
a33:=1:
b1:=sum(X[k]*X[k]*Y[k],k=1..N):
b2:=sum(X[k]*Y[k],k=1..N):
b3:=sum(Y[k],k=1..N):
f1:=a11*a+a12*b+a13*c=b1:
f2:=a21*a+a22*b+a23*c=b2:
f3:=a31*a+a32*b+a33*c=b3:
sys_ur:={f1,f2,f3}:
v:=solve(sys_ur):
subs( v, sys_ur ):
a_r1:=subs(v,a):
b_r1:=subs(v,b):
c_r1:=subs(v,c):
ret:=[a_r1,b_r1,c_r1];
end:
X:=[11.2,11,10.5,10.4,10.1,9.4,9.2,9.1,9,8.9,8.7,8.4,8.3,7.9,7.8,7.7,6.9,6.5,6.1,5.7,5.3,4.4,3.6,3.5]:
Y:=[1.2,1.6,2.4,1.6,1.2,1.2,0.8,1.2,0.8,0.933,1,0.8,0.8,0.8,0.8,0.8,0.4,0.4,0.2,0.3428,0.3,0.4,0.2,0.2]:
abc:=MNK_x2(X,Y):
with(plots):
s_XY:=[seq( [X[i],Y[i]], i=1..nops(X) )]:
g1:=pointplot(s_XY,symbol=CIRCLE,color=BLUE):
g2:=plot(abc[1]*t*t+abc[2]*t+abc[3],t=0..15,color=BLUE,thickness=2):
X2:=[10.4,10.1,9.1,8.7,8.3,7.9,7.8,7.7,6.9,6.5,5.7]:
Y2:=[3,4,2,2.4,1.8,1.2,1.2,1.2,1.2,0.4,0.4]:
s_XY2:=[seq( [X2[i],Y2[i]], i=1..nops(X2) )]:
g3:=pointplot(s_XY2,symbol=BOX,color=RED):
abc2:=MNK_x2(X2,Y2):
g4:=plot(abc2[1]*t*t+abc2[2]*t+abc2[3],t=0..15,color=red):
display(g1,g2,g3,g4);

Получилась вот такая картинка:

Выхода в отрицательные значения конечно быть не может. Но метод выдал то что он мог выдать по засунутым в него данным. Не было в него засунуто данных по малым отклонениям температуры, потому он и «нафантазировал» в этом диапазоне то чего не бывает.
Более менее реальной выглядит первая зависимость (синяя). Это предположительно обычный случай полностью прогретого помещения. А построенный по экспериментальным данным график (точнее параметры параболы a,b,c) позволяет хоть как-то прикинуть что будет происходить при больших отклонениях.
Если при разнице температур в 10 градусов остывание со скоростью 1.31 градус в час:

то при разнице в 20 градусов 5.9 градусов в час:

Как изменится картины при отоплении помещения человеком или курями (т.е при какой наружной температуре можно протопить вечером и не топить всю ночь) вопрос пока отрытый.
 

Просмотров: 416 | Добавил: akostina76 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Календарь
«  Октябрь 2017  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz