Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Нахождение приближающей функции в виде других функций






1. Степенная функция: y=a xm.

Прологарифмируем: ln y = ln a + m ln x

Замена: m = A, ln a = B ln y = v ln x = u

Получим функцию v = A u + B

2. Показательная функция: y=a emx.

Прологарифмируем: ln y = ln a + m x

Замена: m = A, ln a = B ln y = v x = u

Получим функцию v = A u + B

3. Дробно-линейная функция: .

Откуда

Замена: a = A, b = B x = u

Получим функцию v = A u + B

4. Логарифмическая функция: y=a ln x + b.

Замена: a = A, b = B y = v ln x = u

Получим функцию v = A u + B

5. Гипербола: .

Замена: a = A, b = B y = v

Получим функцию v = A u + B

6. Дробно-рациональная функция: .

Откуда: ;

Замена: a = B, b = A

Получим функцию v = A u + B

Программа нахождения уравнения регрессии методом наименьших квадратов:

 

program lin_regr; { *** Уравнение регрессии *** }

const p=30;

var x, y, u, v: array [1..p] of real;

i, j, n, k, m: byte;

d, a, b, s, Sx, Sy, Sxy, Sxx: real;

begin

Write('Введите N - число пар таблицы - '); Readln(N);

Writeln('Введите попарно координаты точки X Y');

For i: =1 to n do readln(x[i], y[i]);

Repeat

Writeln('Выберите вид уравнения регрессии, параметры к-го хотите рассчитать');

Writeln('1) y = A * x + B 2) y = A * x^M 3) y = A * exp(M * x)');

Write('Введите номер выбранного варианта - '); Readln(k);

Sx: =0; Sy: =0; Sxy: =0; Sxx: =0;

For i: =1 to n do

begin

case k of

1: begin U[i]: =X[i]; V[i]: =Y[i] end;

2: begin U[i]: =ln(X[i]); V[i]: =ln(Y[i]) end;

3: begin U[i]: =X[i]; V[i]: =ln(Y[i]) end;

end;

Sx: =Sx+U[i]; Sy: =Sy+v[i];

Sxy: =Sxy+U[i]*V[i]; Sxx: =Sxx+U[i]*U[i]

end;

D: =N*Sxx-sqr(Sx);

A: =(N*Sxy-Sx*Sy)/D; B: =(Sxx*Sy-Sx*Sxy)/D;

s: =0;

Writeln(' Y[i] V[i] (Y[i]-V[i])^2 S');

For i: =1 to n do

begin V[i]: =A*U[i]+B;

if (k=2) or (k=3) then V[i]: =exp(V[i]);

s: =s+sqr(Y[i]-V[i]);

writeln(y[i]: 10: 6, V[i]: 15: 6, sqr(y[i]-v[i]): 15: 6, ' s=', s: 10: 6)

end;

Writeln('Уравнение линии регрессии');

case k of

1: Writeln('y = ', A: 10: 6, ' * x + ', B: 10: 6);

2: Writeln('y = ', exp(B): 10: 6, '* x^', A: 10: 6);

3: Writeln('y= ', exp(B): 10: 6, '*exp(', A: 10: 6, '*X)');

end;

Writeln('S=', s: 10: 6);

Writeln('Хотите использовать другой вид уравнения, введите 1, иначе 0');

Readln(m);

Until m=0;

end.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.