Студопедия

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

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

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






Метод Ньютона решения систем уравнений






Метод Ньютона для решения нелинейных уравнений можно использовать при решении систем нелинейных уравнений вида:

Для решения систем уравнений такого вида необходимо выполнить следующий алгоритм:

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. Применение метода Ньютона к решению системы нелинейных уравнений.







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