Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные методы.DOCX
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.47 Mб
Скачать
  • Степенная функция: 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

    1. Показательная функция: y=a emx Прологарифмируем: ln y = ln a + m x

    Замена:

    m = A,

    ln a = B

    ln y = v

    x = u

    Получим функцию

    v = A u + B

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

    1

    y

    ax b

    Откуда

    1

    ax b

    y

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

    1

    v

    x = u

    y

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

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

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

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

    1. Гипербола: yaxb

    Замена:

    a = A,

    b = B

    y = v

    Получим функцию

    v = A u + B

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

    y

    x

    ax b

    Откуда:

    1

    ax b

    ;

    1

    a

    b

    y

    y

    x

    x

    Замена:

    a = B,

    b = A

    1

    v

    y

    Получим функцию

    v = A u + B

    ln x = u

    1x u

    1x u

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

    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,s1,s2,s3,s4: real;

    begin

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

    41

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

    Repeat

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

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

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

    s1:=0; s2:=0; s3:=0; s4:=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;

    s1:=s1+U[i]; s2:=s2+v[i];

    s3:=s3+U[i]*V[i]; s4:=s4+U[i]*U[i]

    end;

    D:=N*s4-sqr(s1);

    A:=(N*s3-s1*s2)/d; B:=(s4*s2-s1*s3)/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('Если хотите использовать другой вид уравнения регрессии,'); Write('введите 1 , иначе 0 - '); Readln(m); Until m=0;

    end.

    { Для нелинейных уравнений вводят линеаризацию следующим образом:

    1) для степенной функции y=axm: ln(y)=ln(a)+m•ln(x);

    ln(y)=Y, m=A, ln(a)=B, ln(x)=X.

    Получаем Y=AX+B.

    2) для показательной функции y=a•emx, a>0: ln(y)=ln(a)+mx;

    ln(y)=Y, ln(a)=B, m=A.

    Получаем Y=Ax+B.

    42

    1. для дробно-линейной функции y=1/(ax+b): перепишем ур.: 1/y=ax+b;

    1/y=Y.

    Получаем Y=ax+b.

    1. для логарифмической функции y=a•ln(x)+b: ln(x)=X.

    Получаем y=aX+b.

    1. для гиперболической функции y=(a/x)+b: 1/x=X.

    Получаем y=aX+b.

    1. для дробно-линейной функции y=x/(ax+b): перепишем ур.: 1/y=a+(b/x);

    1/y=Y, a=B, 1/x=X, b=A.

    Получаем Y=AX+B.

    Для заданного набора данных (xi, yi) рассматривают несколько зависимостей и

    выбирают такую, где функционал F меньше остальных.

    Далее МНК применяем также как и к линейной функции:

    Покажем как найти min F=∑i=1n(φ(xi)–yi)2; для лин. функ.: φ(x)=ax+b – лин. функ.

    Задача, найти a и b так, чтобы F(a, b) достигала min.

    F(a, b) функ. двух переменных, необходимое условие экстремума (в данном случае min) равенство 0 частных производных.

    Составим: F(a, b)=

    i=1n(yi–(axi+b))2;

    Условие минимума: ∂F/∂a=0 и ∂F/∂b=0;

    Сист. двух ур. с двумя неизвестными a и b (такая система наз. нормальной) (метод наименьших квадратов МНК).

    F/∂a=–2∑i=1n(yi–(axi+b))xi;

    F/∂b=–2∑i=1n(yi–(axi+b));

    таким образом сист. норм. ур. запишется в виде:

    {∑i=1n(yi–axi–b)xi=0;

    |∑i=1n(yi–axi–b)=0;

    {∑i=1nyixi–a∑i=1nxi2–b∑i=1nxi=0;

    |∑i=1nyi–a∑i=1nxi–nb=0;

    Введём обозначение:

    Mx=(1/n)∑i=1nxi;

    My=(1/n)∑i=1nyi;

    Mxy=(1/n)∑i=1nyixi;

    Mx2=(1/n)∑i=1nxi2;

    Система запишется:

    {aMx2+bMx=Mxy;

    |aMx+b=My;

    a=(Mxy–MxMy)/(Mx2–(Mx)2);

    b=(Mx2My–MxMxy)/(Mx2–(Mx)2);}

    43

    1. Аппроксимация производных. Погрешность численного дифференцирования.

    44

    Пусть функ. задана таблично:

    x x1 xn

    y y1 yn

    y=f(x);

    Из определения y’=f’(x)=lim∆x→0(∆y/∆x)=lim∆x→0( (f(x+∆x)–f(x))/∆x );

    y’(x)≈(f(x+∆x)–f(x))/∆x=(y2–y1)/∆x;

    (y2–y1)/(x2–x1)=tg(α);

    y’(x1)≈tg(α), где α угол наклона касательной в точке x1.

    Частный случай.

    Будем считать, что таблица есть результат табулирования некоторой заданной функции y=f(x) т.е. yi=f(xi), i=0, 1, 2, …, n.

    Будем считать xi–xi-1=const=h. В зависимости от способа вычисления рассматривают различные приближения производных.

    Если: ∆y1=y1–y0, где y1=f(x0+h), то y’1≈(y1–y0)/h; (1) – левая разность.

    Если: ∆y1=y2–y1, то y’1≈(y2–y1)/h; (2) – правая разность.

    Если: ∆y1=y2–y0, то ∆x=2h и y’1≈(y2–y0)/(2h); (3) – центральная разность.

    Всё это аналоги производной в точке x1.

    Для старших производных имеем:

    45

    y’’1=(y’1)’≈(y’2–y’1)/h=( ((y2–y1)/h)–((y1–y0)/h) )/h=(y2–2y1+y0)/h2; (4)

    Аналогично находятся производные любого порядка.

    Погрешность численного дифференцирования (формулы (1)...(4)).

    Пусть функ. f(x) аппроксимируется (приближается к некоторой функции φ(x)) т.е. f(x)=φ(x)+R(x); (5)

    где R(x) – погрешность аппроксимации.

    из (5) имеем: f’(x)=φ’(x)+R’(x), f’’(x)=φ’’(x)+R’’(x) и т.д.

    т.е. формула (5) может быть использована и для вычисления погрешности

    производных.

    Вел. R(k)(x)=f(k)(x)–φ(k)(x) наз. погрешностью аппроксимации. Она зависит от шага h. Запишем её в виде O(hk)(~Ch k). Показатель k наз. порядком погрешности аппроксимации производной. Для оценки порядка погрешности используем формулу Тейлора:

    f(x+∆x)=f(x)+(f’(x)/1!)∆x+(f’’(x)/2!)(∆x)2+…; (6)

    x=h;

    Пусть функ. задана таблично yi=f(xi), i=0, 1, …, n. В формуле (6) будем учитывать слагаемое до порядка h2.

    Пусть x=x1; ∆x=–h.

    Запишем (6):

    f(x1–h)=f(x1)+(f’(x1)/1!)h+O(h2); (7)

    Получим:

    f’(x1)h=f(x1)–f(x0)+O(h2);

    делим на h:

    y’1=((y1–y0)/h)+O(h), сравнивая с (1) получаем, что погрешность аппроксимации левой производной имеет первый порядок. Аналогично можно показать, что формула

    1. так же имеет первый порядок.

    Теперь положим в (6) ∆x=–h и ∆x=h и будем учитывать слагаемое до h4. y0=y1–y’1h+(y’’1/2!)h2–(y’’’1/3!)h3+O(h4); y2=y1+y’1h+(y’’1/2!)h2+(y’’’1/3!)h3+O(h4);

    Вычтем из второго выражения первое:

    y2–y0=2y’1h+(1/3)y’’’1h3;

    делим на 2h:

    (y2–y0)/(2h)=y’1+O(h2);

    т.о. центральная разность (3) имеет порядок аппроксимации второй.

    Из двух предыдущих разложений, складывая, получим:

    y’’1h2=y0–2y1+y2+O(h4);

    делим на h2 получили:

    y’’1=((y0–2y1+y2)/h2)+O(h2);

    Порядок аппроксимации для формулы второй производной равен двум.

    46

    26.Использование интерполяционных формул.

    Предположим, что функ. задана с помощью таблицы, где x меняется с постоянным шагом h. Используем интерполяционный многочлен Ньютона, для приближения функции.

    y≈P(x0+ht)=y0+t∆y0+(t(t–1)/2!)∆2y0+...+(t(t–1)...(t–n+1)/n!)∆ny0; t=(x–x0)/h;

    Имеем:

    dP/dx=(dP/dt)(dt/dx)=

    (1/h)(dP/dt);

    y’≈(1/h)(∆y0+((2t–1)/2!)∆2y0+

    ((3t2–6t+2)/3!)∆3y0+…);

    • учётом быстрого убывания ky0/k! можно ограничится несколькими первыми слагаемыми.

    y’’≈(1/h2)(∆2y0+(t–1)∆3y0+…);

    Внашем случае приходится использовать конечные разности и чаще используют интерполяционный многочлен Лагранжа, где нужны только значения функ. в узлах.

    Пусть задана таблица, причём шаг h может быть непостоянным. Запишем многочлен Лагранжа для трёх узлов (n=2):

    Ln(x)=∑i=0nyi( (x–x0)...(x–xi-1)(x–xi+1)...(x–xn) )/( (xi–x0)...(xi–xi-1)(xi–xi+1)...(xi–xn) ); Для трёх узлов (шаг h постоянный):

    L2(x)=(1/(2h2))( (x–x1)(x–x2)y0–2(x–x0)(x–x2)y1+(x–x1)(x–x0)y2 ); Погрешность:

    R(x)=(y’’’(ξ)/3!)(x–x0)(x–x1)(x–x2);

    Найдём:

    y’≈L’2(x)=(1/(2h2))( (2x–x1–x2)y0–2(2x–x0–x2)y1+(2x–x1–x0)y2 ); R’(x)=(y’’’(ξ)/3!)[(x–x1)(x–x2)+(x–x0)(x–x2)+(x–x1)(x–x0)];

    Найдём y’0 при x=x0;

    2x0–x1–x2=x0–x1+x0–x2;

    y’≈(1/(2h2))(–3hy0+4hy1–hy2)=(1/(2h))(–3y0+4y1–y2);

    Найдём R’(x) в точке x0:

    R’(x0)=(y’’’(ξ)/3!)(–3h2)=–(y’’’(ξ)/2)h2;

    т.е. ошибка O(h2).

    Аналогично получаем:

    y’1=y’(x1)=(1/(2h))(y2–y0)–(h2/6)y’’’(ξ);

    y’2=y’(x2)=(1/(2h))(y0–4y1–3y2)+(h2/3)y’’’(ξ);

    Для вторых производных:

    y’’0=y’’2=(1/h2)(y0–2y1+y2)+O(h);

    y’’1=(1/h2)(y0–2y1+y2)+O(h2);

    47

    1. Аппроксимация частных производных

    48

    49

    50

    51

    28.Уравнения в частных производных. Построение разностных схем. ТУРЧАК Если функ. содержит более одной переменной и рассматривается диф. ур., то

    возникает частная производная, и такие уравнения наз. ур. в частных производных или ур. мат. физ.

    Наиболее известные уравнения:

    1. Ур. тепло-массо переноса: Ut = a2 Uxx.

    2. Ур. колебаний струны: Utt = a2 Uxx.

    1. Распределение температуры в плоской пластине при заданной температуре на

    границе: Uxx + Uyy = 0; U|г = φ(x, y).

    Среди численных методов наиболее распространёнными явл. разностные методы, они

    основаны на том, что производные заменяются разностными аналогами

    (аппроксимируются конечными разностями) и получаем вместо исходного ур. систему

    лин. алг. ур. За начальное значение производных, начальное и граничное условие

    выражаются через значения функ. в узлах сетки, в рез. чего и получается система лин.

    алг. ур. наз. разностной схемой.

    Рассмотрим простейшую схему на плоскости, т.е. пусть область G – прямоугольник с границами: a x b; c y d.

    Разделим область на элементарные отрезки:

    xi = a + ih; 0 ≤ i ≤ I;

    yj = a + jh; 0 ≤ j ≤ J;

    Через эти точки проведём прямые: x = const; y = const.

    Узлы сетки лежащие на границе Г области G, наз. граничными, не лежащими на границе – вн. узлами.т.к. кроме самого ур. задаются граничные начальные условия, то значения функ. в граничных узлах можно считать заданными. Производные в ур. мы заменяем их разностными аналогами, пользуясь тем или иным шаблоном.

    Построение разностных схем.

    Рассмотрим ур. теплопроводности и разностную схему:

    (∂U/∂t) = a2 (∂2U/∂x2); (1) 0 ≤ x ≤ 1;

    U(x; 0) = φ(x); (2)

    U(0; t) = ψ1(t); (3)

    U(l; t) = ψ2(t); (4)

    φ(x) начальное распределение температуры.

    ψ1(t), ψ2(t) распределение температуры на концах стержня в любой момент времени.

    Должно выполняться условие согласования: φ(0) = ψ1(0); φ(1) = ψ2(0).

    Введём сетку:xi = ih;

    tj = jτ;

    h, τ шаги сетки.

    Обозначим значения функции Uji = U(xi, tj).

    Из аппроксимации в частных производных имеем:

    1. => (Uij+1 – Uji)/τ = a2 (Uji+1 – 2Uji + Uji-1)/h2;

    i = 1,…, I – 1;

    j = 0,…, J;