![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Метод Ньютона решения систем уравнений
Метод Ньютона для решения нелинейных уравнений можно использовать при решении систем нелинейных уравнений вида: Для решения систем уравнений такого вида необходимо выполнить следующий алгоритм: 1. Задать или рассчитать первое приближение вектора X[0]. 2. Найти частные производные функций fi по всем переменным вектора X в точке X[0]. 3. Составить и решить следующую систему линейных уравнений относительно вектора X[1]: где Данная запись равносильна матричной форме записи системы уравнений, относительно неизвестных – составляющих вектора X [1]: Или, если упростить процедуру: 1. На основании исходного нелинейного уравнения электрической цепи f(x)=0, где x -искомая переменная, записывается итерационная формула
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. Применение метода Ньютона к решению системы нелинейных уравнений.
|