- •Этапы решения прикладных задач. Машинное представление числа. Числа с плавающей точкой.
- •Неустойчивость алгоритмов.
- •Методы, используемые для отделения корней уравнения с одной переменной
- •I. Графический способ отделения корней
- •II. Отделения корней программным способом.
- •Уточнение корней методом половинного деления. Алгоритм, блок-схема.
- •Уточнение корней методом простой итерации. Теорема, алгоритм геометрическая иллюстрация. Оценка погрешности метода.
- •Метод касательных(Ньютона). Сходимость метода, оценка погрешности, геометрическая интерпретация.
- •Метод хорд. Сходимость метода, оценка погрешности, геометрическая интерпретация.
- •Решение систем линейных алгебраических уравнений. Прямые и итерационные методы решения. Метод Гаусса, алгоритм, блок схема.
- •Решение систем линейных алгебраических уравнений. Требования к сходимости итерационного процесса.
- •Метод Зейделя
- •Постановка задачи интерполирования. Параболическая интерполяция. Единственность задачи интерполирования многочленами.
- •Интерполяционный многочлен Лагранжа.
- •Первая интерполяционная формула Ньютона
- •Вторая интерполяционная формула Ньютона
- •Численное интегрирование. Квадратурные формулы Ньютона-Котеса.
- •17.Формула трапеций. Геометрическая иллюстрация. Оценка погрешности Формула трапеций
- •Формула Симпсона. Алгоритм, блок-схема. Геометрическая иллюстрация. Оценка погрешности.
- •Решение обыкновенных дифференциальных уравнений. Численное интегрирование уравнений порядка выше, чем первый. Решение систем дифференциальных уравнений.
- •Дифференциального уравнения
- •Метод Эйлера численного интегрирования дифференциального уравнения. Алгоритм, блок-схема. Недостатки метода.
- •Методы Рунге-Кутта. Расчетные формулы, алгоритм, блок-схема, погрешность метода.
- •Методы обработки данных. Метод наименьших квадратов. Общий случай. Постановка задачи
- •23.Линейная и квадратичная регрессия.
- •24.Метод наименьших квадратов для степенной, показательной, дробно-линейной, логарифмической, гиперболической и дробно-рациональной приближающщих функций.
- •Аппроксимация производных. Погрешность численного дифференцирования.
- •26.Использование интерполяционных формул.
- •Аппроксимация частных производных
Степенная функция: 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
Показательная функция: 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
Логарифмическая функция: y=a ln x + b
Замена: a = A, b = B y = v
Получим функцию v = A u + B
Гипербола: y ax b
-
Замена:
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
begin U[i]:=X[i]; V[i]:=Y[i] end;
begin U[i]:=ln(X[i]); V[i]:=ln(Y[i]) end;
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
Writeln('y = ',A:10:6,' * x + ',B:10:6);
Writeln('y = ', exp(B):10:6,'* x^',A:10:6);
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
для дробно-линейной функции y=1/(ax+b): перепишем ур.: 1/y=ax+b;
1/y=Y.
Получаем Y=ax+b.
для логарифмической функции y=a•ln(x)+b: ln(x)=X.
Получаем y=aX+b.
для гиперболической функции y=(a/x)+b: 1/x=X.
Получаем y=aX+b.
для дробно-линейной функции 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
Аппроксимация производных. Погрешность численного дифференцирования.
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) получаем, что погрешность аппроксимации левой производной имеет первый порядок. Аналогично можно показать, что формула
так же имеет первый порядок.
Теперь положим в (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
Аппроксимация частных производных
48
49
50
51
28.Уравнения в частных производных. Построение разностных схем. ТУРЧАК Если функ. содержит более одной переменной и рассматривается диф. ур., то
возникает частная производная, и такие уравнения наз. ур. в частных производных или ур. мат. физ.
Наиболее известные уравнения:
Ур. тепло-массо переноса: Ut = a2 Uxx.
Ур. колебаний струны: Utt = a2 Uxx.
Распределение температуры в плоской пластине при заданной температуре на
границе: 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).
Из аппроксимации в частных производных имеем:
=> (Uij+1 – Uji)/τ = a2 (Uji+1 – 2Uji + Uji-1)/h2;
i = 1,…, I – 1;
j = 0,…, J;
