Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Решение систем нелинейных уравнений
Система нелинейных уравнений (СНУ). В общем случае систему нелинейных уравнений можно записать как: или Решением СНУ является такой вектор при подстановке которого в систему последняя обращается в тождество. Методы простых итераций. Прямой подход получения эквивалентной системы нелинейных уравнений. Преобразуем систему нелинейных уравнений к эквивалентному виду Выберем некоторое начальное приближение Последующие приближения найдем по формулам Произвольное приближение (итерационную формулу) запишем как: На каждой итерации вычисляем вектор и проверяем условие окончания итерационного процесса где e заданная точность. Общий подход получения эквивалентной системы нелинейных уравнений Если не удаётся преобразовать исходную СНУ к эквивалентному виду, который будет сходится, то можно воспользоваться общим приемом. Итерационную формулу запишем где матрицу можно представить диагональной, а подбором значений элементов, можно добиться сходимость итерационного процесса. Программа. Система нелинейных уравнений. Простые итерации function DATA global x0 eps; x0=[0.5;0.5]; eps=0.01; end
function [ fx ] = f(x) fx=[sqrt((x(2)+2)/3);sqrt(2*x(1)-1)]; end
function [ fx ] = fp(x) fx=[2*x(1)-x(2)^2-1;3*x(1)^2-x(2)-2]; end
function [ x,fx ] = fun_Syst_NelUr_Prost_Iter(x0,eps) x=x0; for i=1:100 xnew=f(x); dx=xnew-x; if norm(dx)<=eps i break; else x=xnew; end %if end %for i fx=fp(x); end % function
function GLAV_Syst_NelUr_Prost_Iter global x0 eps x fx; DATA; [ x,fx ] = fun_Syst_NelUr_Prost_Iter(x0,eps); REPORT; end
function REPORT global x0 eps x fx; disp('System of Non-Linear Equiations Simply Iterations'); disp(' '); disp(['eps = ' num2str(eps,'%10.5f') ]); disp('Results'); disp(' '); disp(' x0 x fx '); disp(' ______________________________') i=0; for i=1:length(x) x00=x0(i); xx=x(i); ffx=fx(i); disp(sprintf('%10.3f\t%10.3f\t %10.3f',x00,xx,ffx)); end %for end Метод Ньютона-Рафсона. Пусть известно некоторое приближение к решению Запишем исходную систему в виде где Разложим функцию в ряд Тейлора и ограничимся линейными членами. Это система линейных уравнений относительно Матрица Якоби Тогда а новое приближение к решению СНУ будет иметь вид: или Условием окончания итерационного процесса является выполнения неравенства Оператор МАТЛАБа [x,fun]=fsolve(@f,[x1 x2]); Программа система нелинейных уравнений Ньютон-Рафсон function DATA global x0 eps; x0=[0.5;0.5]; eps=0.01; end
function [ fx ] = f(x) fx=[2*x(1)-x(2)^2-1;3*x(1)^2-x(2)-2]; end
function [ J ] = Jac(x) J=[2, -2*x(2);6*x(1),-1]; end
function [ x,fx ] = fun_Syst_NelUr_Newt_Rafs(x0,eps) x=x0; for i=1:100 fx=f(x); J=Jac(x); Jobr=J^(-1); h=Jobr*fx; if norm(h)<=eps i break; else x=x-h; end %if end %for i end % function
function GLAV_Syst_NelUr_Newt_Rafs global x0 eps x fx; DATA; [ x,fx ] = fun_Syst_NelUr_Newt_Rafs(x0,eps); REPORT; end
function REPORT global x0 eps x fx; disp('System of Non-Linear Equiations Newton Rafson'); disp(' '); disp(['eps = ' num2str(eps,'%10.5f') ]); disp('Results'); disp(' '); disp(' x0 x fx '); disp(' ______________________________') i=0; for i=1:length(x) x00=x0(i); xx=x(i); ffx=fx(i); disp(sprintf('%10.3f\t%10.3f\t %10.3f',x00,xx,ffx)); end %for end
|