O sistema abaixo foi gerado em um sistema de duas equações algébricas não lineares.
l 2 x^2+x y=8 5 x+7 y=-3
Considerando a estimativa inicial como: x0=1 e y0=0, pede-se
a) a solução do problema e
b) escreva um programa para a solução em Octave.

Passo 1

Beleza, então o enunciado diz que a gente tem um sistema não-linear
2x^2 + x,y = 8, 5x + 7y = -3,
com chute inicial (x0,y0)=(1,0). O conteúdo aqui é Método de Newton para sistemas de equações não-lineares, e a gente vai precisar:
  1. definir o vetor de funções F(x,y);
  2. montar a matriz Jacobiana J(x,y) (derivadas parciais);
  3. aplicar a iteração de Newton até convergir;
  4. finalmente, escrever o código em Octave.

Passo 2

Teoria rápida do Método de Newton em 2D:
Definimos
$$
F(x,y)=
F(x,y)= f1(x,y) f2(x,y) = 2x^2 + x,y -8 5x +7y +3 ,

J(x,y)= partial f1partial x & partial f1partial y [6pt] partial f2partial x & partial f2partial y = 4x + y & x 5 & 7 ,
xk+1 yk+1 = xk yk - J(xk,yk)^-1,F(xk,yk)
J(x,y)=

.
çãé

  • J(x_k,y_k)^{-1},F(x_k,y_k).
$$

Passo 3

Vamos calcular a primeira iteração, partindo de (x0,y0)=(1,0):
  1. Avalia F(1,0)=(2cdot1^2+1cdot0-8,;5cdot1+7cdot0+3)^T =(-6,;8)^T.
  2. Avalia J(1,0)=4cdot1+0 & 15&7=4&15&7.
  3. Resolve J(1,0),De, ou seja$$ 4&15&7De De= (x1,y1)=(1,0) - (-1.0616,,1.7397) approx (2.0616,,-1.7397). çã\Delta = J^{-1}F\approx .$$
  4. Atualiza

Passo 4

Repetindo esse processo mais algumas vezes (até a norma de De ficar abaixo de uma tolerância, tipo 10^-6), a sequência converge para
(x,y)approxl(2.6666667,,-2.3333333r),
que é exatamente (tfrac83,-tfrac73).

Passo 5

Agora, o programinha em Octave (chama de newton2d.m):
function [x,y] = newton2d(x0,y0,tol,maxit)
  for k = 1:maxit
    % vetor F
    F = [2*x0^2 + x0*y0 - 8;
         5*x0     + 7*y0  + 3];
    % Jacobiana J
    J = [4*x0 + y0,  x0;
         5,          7 ];
    % passo de Newton
    delta = J \ F;    % resolve J * delta = F
    x0 = x0 - delta(1);
    y0 = y0 - delta(2);
    if norm(delta) < tol
      break;
    end
  end
  x = x0;
  y = y0;
end

% Para usar:
% [x,y] = newton2d(1,0,1e-6,20);
% fprintf('x=%.7f, y=%.7f\n', x, y);

Resposta

A solução numérica é
(x,y)=l(tfrac83,;-tfrac73r),
e o programa em Octave está acima para você rodar e conferir.

Exercícios relacionados