Система нелинейных уравнений - Free Pascal
Формулировка задачи:
Добрый День!!! Помогите Пожалуйста используя метод Ньютона, решить систему нелинейных уравнений с точностью до 0.001.
Система:
sin(y+1)-x = 1.2 2y+cosx = 2
Решение задачи: «Система нелинейных уравнений»
textual
Листинг программы
Uses ………..; Const eps = 0.001; // Требуемая точность Var x0, x1, y0, y1, F, G, dFdx, dFdy, dGdx, dGdy, b1, b2 : Real; Begin y1:=( 0.5 + 1.5)/2; // Нулевые приближения x1:=sin(y1+1)-1.2; dFdx:= -1.0; // Неизменяемые первые частные dGdy:= 2.0; // производные // Итерационный цикл Repeat x0:=x1; y0:=y1; // Предыдущее приближение dFdy:= cos(y0+1); // Изменяемые первые частные dGdx:=-sin(x0); // производные F:=sin(y0+1) - x0 - 1.2; G:=2*y0 + cos(x0) - 2; b1:=F - dFdx*x0 - dFdy*y0; b2:=G - dGdx*x0 - dGdy*y0; //Вычисление следующего приближения (решение системы двух линейных уравнений) x1:=(b2*dFdy-b1*dGdy)/(dGdy*dFdx - dFdy*dGdx); y1:=-(b1+dFdx*x1)/dFdy; // Итерации заканчиваются, когда следующие приближения отличаются // по модулю от предыдущих не более, чем на заданную точность Until (Abs(x0-x1)<=eps) and (Abs(y0-y1)<=eps); WriteLn(' X= ',x1:6:4,'; Y= ',y1:6:4); WriteLn(' Проверка: '); b1:=sin(y1+1) - x1; b2:=2*y1 + cos(x1); WriteLn(' sin(Y+1) - X =',b1:6:4); WriteLn(' 2Y + cos(x) =',b2:6:4); End.
Объяснение кода листинга программы
- Объявлены переменные x0, x1, y0, y1, F, G, dFdx, dFdy, dGdx, dGdy, b1, b2: Real;
- Задана требуемая точность eps = 0.001;
- Начальные приближения для x1 и y1 вычисляются как (0.5 + 1.5)/2 = 1.0 и sin(1.0 + 1) - 1.2 = 0.8303;
- Вычисляются первые неизменяемые частные dFdx = -1.0 и dGdy = 2.0;
- Запускается итерационный цикл;
- В цикле переменные x0, y0, dFdy, dGdx пересчитываются с использованием предыдущих значений x1, y1;
- Вычисляются значения F и G;
- Вычисляются значения b1 и b2;
- Следующие приближения x1 и y1 вычисляются как (b2dFdy - b1dGdy) / (dGdydFdx - dFdydGdx) = 0.8303 и -(b1 + dFdx*x1) / dFdy = 1.0;
- Цикл продолжается, пока следующие приближения не будут отличаться от предыдущих не более чем на eps = 0.001;
- Когда условия выполняются, выводится текущее значение x1 и y1;
- Вычисляются значения b1 и b2 для проверки;
- Выводятся значения b1 и b2.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д