
- •Раздел 1. Численные методы в электротехнике Введение
- •Раздел 1. Численные методы в электротехнике
- •Лабораторная работа 1
- •Линейные оптимизационные задачи
- •Симплекс-метод. Excel
- •Лабораторная работа 2 Транспортная задача электроэнергетики с транзитом мощности. Excel
- •Лабораторная работа 3 Решение слау. MathCad.
- •Лабораторная работа 4 Интерполяция вольт-амперных характеристик нелинейных элементов электрических цепей
- •5.2. Расчет линейной электрической цепи постоянного тока методом узловых потенциалов
- •Лабораторная работа 6 Расчет нелинейной электрической цепи методом Ньютона-Рафсона Теоретическое введение
- •Лабораторная работа 7 Численное решение системы дифференциальных уравнений обобщенной электрической машины Теоретическое введение
- •Лабораторная работа 8 Расчет ресурса ячейки памяти микроконтроллера Теоретическое введение
- •Корпус fram и основные характеристики:
- •Раздел 2. Базы данных в электротехнике Введение
- •Лабораторная работа 1 Создание табличной базы данных Теоретическое введение
- •Контрольные вопросы
- •Лабораторная работа 3 Организация поиска и запросов в созданной базе данных Теоретическое введение
- •Ход выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
Лабораторная работа 6 Расчет нелинейной электрической цепи методом Ньютона-Рафсона Теоретическое введение
Математическая модель любой электротехнической системы описывается системой дифференциальных уравнений, что будет рассматриваться более подробно в лабораторной работе 7. В данной лабораторной работе мы рассмотрим численной решение дифференциального уравнения методом Ньютона-Рафсона.
Метод Ньютона-Рафсона решения уравнений
Метод Ньютона позволяет решать линейные и нелинейные уравнения вида f(x) = 0. Поиск решений осуществляется последовательным приближением и основан на методе простой итерации.
Для реализации метода Ньютона, необходимо последовательно:
1. Получить первое приближение к искомой переменной x0;
2. Найти значение производной функции f’(x) в точке x0;
3. Найти следующее приближение к искомой переменной по формуле
xi+1 = xi –f(xi)/f’(xi);
4. Проверить относительную точность полученного решения
δi = |xi+1 - xi|/|xi+1|: если δi <δz (заданная относительная точность), то выйти из программы, так как корень уравнения найден, иначе перейти к шагу 2.
Метод Ньютона решения систем уравнений
Метод Ньютона для решения нелинейных уравнений можно использовать при решении систем нелинейных уравнений вида:
Для решения систем уравнений такого вида необходимо выполнить следующий алгоритм:
1. Задать или рассчитать первое приближение вектора X[0].
2. Найти частные производные функций fi по всем переменным вектора X в точке X[0].
3. Составить и решить следующую систему линейных уравнений относительно вектора X[1]:
где
Данная запись равносильна матричной форме записи системы уравнений, относительно неизвестных – составляющих вектора X[1]:
Или, если упростить процедуру:
1. На основании исходного нелинейного уравнения электрической цепи f(x)=0, где x-искомая переменная, записывается итерационная формула
,
где - m=0;1;2;…
- шаг итерации.
2.По полученной формуле проводится итерационный расчет
Задание на лабораторную работу:
По следующему ниже алгоритму написать программу расчета нелинейной цепи методом Ньютона-Рафсона, в соответствии с вариантами из лабораторной работы 4.
Алгоритм программы:
1). создать функцию, реализующую какой-либо алгоритм интерполяции (на основе лабораторной работы № 4). Для этого добавить в программу, разработанную в лабораторной работе 4, еще один столбец «Li(x)», куда выводить промежуточные значения многочлена Лагранжа и добавить в описании перменную.
double lagLx[1000];
StringGrid1->Cells[0][2]="L(x)";
Код изменить соответственно:
for (int j=0; j<n ;j++)
{
if (i!=j) s0=s0*(x-lagx[j])/(lagx[i]-lagx[j]);
//формирование l(x)
}
lagLx[i]=s0;
StringGrid1->Cells[i+1][2]=FloatToStr(lagLx[i]);
s=s+lagfx[i]*s0;//вычисление значения функции
2). Получившиеся значения из строк перенести в Excel, построить точечную диаграмму зависимости L(x) от x, по ней линию тренда и получить уравнение кривой.
3). Находим производную данной функции:
y = 0,9583x4 - 13,454x3 + 59,681x2 - 88,336x + 57,333
y’=3,8332х3-40,35х2+119,362х-88,336
4). Возвращаемся в программу Borland C++ Bielder. В лабораторно работе 4 построена зависимость тока от напряжения, то есть ВАХ, а в данной лабораторной мы исследуем производную от полученной функции. Электротехнический смысл dU/dI это динамическое сопротивление, следовательно, в результате мы получаем дискретные значения дифференциального сопротивления, вычисленные методом Ньютона-Рафсона.
5). Добавляем в таблицу StringGrid1 еще одну строку – R.
StringGrid1->Cells[0][3]="R";
6). Добавляем описание переменной double lagRx[1000];
7). В результате получаем следующий код программы:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x,s,s0,x0;
n=StrToInt(Edit1->Text);
x=StrToFloat(Edit2->Text);
//y = 0,9583x4 - 13,454x3 + 59,681x2 - 88,336x + 57,333
//y'=3,8332õ3-40,35õ2+119,362õ-88,336
//x_(m+1)=x_m-f(x_m)/f'(x_m),
s=0;
//считывание значения из таблицы в массив "х" и "f(x)"
for (int i=0;i<n;i++)
{
lagx[i]=StrToFloat(StringGrid1->Cells[i+1][0]);
lagfx[i]=StrToFloat(StringGrid1->Cells[i+1][1]);
}
x0=lagfx[0]/lagx[0]; //первое приближение рассчитывемого значения
for (int i=0; i<n ;i++)
{
s0=1;
for (int j=0; j<n ;j++)
{
if (i!=j) s0=s0*(x-lagx[j])/(lagx[i]-lagx[j]);
//формирование l(x)
}
lagLx[i]=s0;
StringGrid1->Cells[i+1][2]=FloatToStr(lagLx[i]);
s=s+lagfx[i]*s0;//вычисление значения функции
lagRx[i]=abs(x0-(0.9583*x0*x0*x0*x0 - 13.454*x0*x0*x0 + 59.681*x0*x0 - 88.336*x0 + 57.333)/(3.8332*x0*x0*x0-40.35*x0*x0+119.362*x0-88.336));
StringGrid1->Cells[i+1][3]=FloatToStr(lagRx[i]);
x0=lagRx[i];
}
}
Контрольные вопросы:
1. Какие методы решения нелинейных уравнений вы знаете?
2. Расскажите о методе Ньютона.
3. Какие ограничения к применению метода Ньютона вы знаете?
4. К какому классу электротехнических задач применяется метод Ньютона?
5. Применение метода Ньютона к решению системы нелинейных уравнений.