Дисциплина:
Раздел:
Выполнил:

Вычислительная математика

Метод наименьших квадратов. Тренды.

матфак, Осипов.П.

                                             www.domath.ru

>    restart;

>    with(Statistics):
with(plots):
#пакет графики

>    #объявим данные (X,Y) отдельно друг от друга

>    X := Vector([1, 2, 3, 4, 5, 6], datatype=float);
Y := Vector([2, 3, 2, 2, 6, 9], datatype=float);
#в данном случае X,Y объявлены как векторы

X := Vector(%id = 149579684)

Y := Vector(%id = 149553012)

>    #функция Fit() строит тренд, в данном случае это полином второй степени
#также это могут быть и другие тренды: линейный a+b*t, экспоненциальный и пр.
#Здесь X и Y - данные, для которых необходимо построить модель,
#t - параметр тренда

>    r:=Fit(a+b*t+c*t^2, X, Y, t);

r := 4.60000000000000408-2.49285714285714600*t+.535714285714286142*t^2

>    #для отображения фактических данных (X,Y) на одном рисунке c трендом
#необходимо объявить следующую вспомогательную функцию

>    fr:=[seq([X[k],Y[k]],k=1..6)]:

>    #прогноз по тренду на 7 момент времени

>    t1:=subs(t=7,r);#функция subs подставляет вместо t значение равное 7

>    #графическое построение точки c координатами [7,t1].
prognoz:=pointplot([7,t1], color=blue,symbol=cross,legend="прогноз"):

>    #функция строит графические объекты: фактические значения (X,Y) и график тренда
sol:=plot([r,fr],t=0.5..8,style=[line,point],
title="Параболическая тенденция",
legend=["тренд","факт.значения"]):

#функция display выводит на экран все графические обьекты, созданные ранее
display([prognoz,sol]);

t1 := 13.40000000

параболический тренд