Курсовая работа: Исследование метода дифференцирования по параметру для решения нелинейных САУ
1.Необходимость определения матрицы J = F / X .
При этом существует два подхода:
- аналитический способ. Здесь метод Ньютона особенно эффективен. Однако точные формулы могут быть слишком громоздкими, что повышает вероятность ошибки. Кроме того функцииF(X) могут быть заданы таблично;
- конечно-разностная аппроксимация. При этом используется формула:
δ fi /δ xj = ( fi ( x 1 , …, xj + ∆ xj , …, xn ) - fi ( x 1 , …, xj - ∆ xj , …, xn )) / 2δ xj .
В этом случае имеем дискретный метод Ньютона, который уже не обладает квадратичной сходимостью. Скорость сходимости можно увеличить, уменьшая ∆ xj по мере приближения к X * .
2. Вычисление матрицы J -1 на каждом шаге требует значительных вычислительных затрат. Поэтому часто вместо этого решают систему линейных АУ, которая формируется следующим образом. Очевидно, что ∆ Xm = Xm +1 - Xm . Тогда после алгебраических преобразований алгоритм Xm +1 = Xm – J -1 ( Xm ) · F ( Xm ) примет вид:
J ( Xm ) · ∆ Xm = - F ( Xm ).
На каждом m -м шаге матрицыJ ( Xm ) и F ( Xm ) известны. Необходимо найти ∆ Xm , как решение системы линейных АУ J ( Xm ) · ∆ Xm = - F ( Xm ) . Тогда
Xm +1 = Xm + ∆ Xm .
Решение системы J ( Xm ) · ∆ Xm = - F ( Xm ) – наиболее трудоемкий этап, который определяет вычислительную эффективность каждой итерации.
2. ОПИСАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Общие сведения
Наименования файлов, из которых состоит пакет: main.m, rk1.m, rk2, rk4.m, funf.m, dmn.m, dif.m .
Головная программа – файл main.m, остальные – внешние функции данной программы.
Программное обеспечение: ОС класса Windows.
Язык, на котором написана программа: MatLab (Version 5.1).
2.2 Функциональное назначение
Программа разработана для решения нелинейных систем алгебраических уравнений методом дифференцирования по параметру. Решение проводится с использованием трех различных методов Рунге – Кутта первого, второго и четвертого порядка. Решение уточняется с помощью дискретного метода Ньютона.
2.3 Описание логической структуры
Файл описания системы - funf.m. С помощью файла dif.m формируется система ОДУ, затем система интегрируется с помощью явных методов Рунге-Кутта (rk1.m, rk2, rk4.m), и полученное решение уточняется дискретным методом Ньютона (dmn.m). В файле main.m можно изменять шаг интегрирования, начальное решение системы, допустимую ошибку при уточнении, начальный и конечный моменты времени…
Головная программа
В головной программе задаются начальные значения необходимых параметров, а также производится вызов основных функций, необходимых для реализации метода дифференцирования по параметру. В течение одного цикла работы программы вызываются последовательно функции rk1.m, rk2.m, rk4.m, вычисляющие приближенные значения по методам Рунге – Кутта 1-го, 2-го и 4-го порядков. После каждого из них производится вызов функции dmn.m, вычисляющей уточненное значение по дискретному методу Ньютона, строятся графики и выводятся значения полученных решений системы и ошибок интегрирования; значения уточненных решений системы и ошибок интегрирования, полученных в процессе итераций. В конце работы каждого цикла выводится число шагов, за которое было получено приближенное решение и число итераций, за которое было получено уточненное решение.
Текст программы (файл Main.m):
t0=0;
tfinal=1;
y0=[2 0];
h=0.1;
trace=1;
disp('Метод Рунге - Кутта 1го порядка');pause;
[tout,yout,x]=rk1('dif',t0,tfinal,y0,h,trace);
subplot(2,1,1);
plot(tout,yout(:,1));
grid;
title(sprintf('МетодРунге - Кутта 1го порядка'));
ylabel('y(1)'); xlabel('t');
subplot(2,1,2);
plot(tout,yout(:,2));
grid;
ylabel('y(2)'); xlabel('t');
pause;