non linear equation using newtons method
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Ronald Aono
 el 8 de Dic. de 2019
  
    
    
    
    
    Respondida: Walter Roberson
      
      
 el 8 de Dic. de 2019
            %   start iteration loop
 if x2 == 1.0, x2 = 1.001; end   % don't allow x2 = 3 as guess
      x1 = sqrt(4-(4*x2.*x2));          % satisfies eqn. 1
      xo = [x1 x2 ]';   
      itmax = 30;   it = 0;   tol = 1e-5;   emax = 1;   n = length(xold);
      fprintf(1,'\n Intermediate edit for NLDemo2  \n');
      while emax > tol && it <= itmax
        it = it+1;   
        x = xold;
% 
%   compute function vector using xold
         f = [(x(1)*x(1))-(2*x(1))-x(2)+0.5;
                 (-x(1)*x(1))+(4*(x(2)*x(2)))-4];
%
%   compute Jacobian matrix evaluated at xold
        J = [2*x(1)-2    -1; 2*x(1)  -8*x(2)];
%
%   compute xnew
        xnew = xold - J\f;
%
%   calc & edit error (intermediate results)
        emax = max(abs((xnew-xold)./xnew));
        fprintf(1,'  it = %3d      max error = %8.3e \n',it,emax);
        fprintf(1,'      xnew         xold     \n');
        for j = 1:n
          fprintf(1,' %10.5f   %10.5f    \n',xnew(j),xold(j));
        end
%
        xold = xnew;  % use current estimate as guess for next iteration
      end
keep getting the following error
Matrix dimensions must agree.
Error in HW_6c (line 20)
        xnew = xold - J\f;
0 comentarios
Respuesta aceptada
  Walter Roberson
      
      
 el 8 de Dic. de 2019
        xold is not defined in your function before the first time you use it. However, your use of
xo = [x1 x2 ]';
hints that xold is likely to be 2 x 1. If so then when you do
 xnew = xold - J\f;
then because J\f would be 1 x 2, you would be getting a 2 x 1 minus a 1 x 2. In R2016a or earlier that would be an error.
In R2016b or later, it is well defined, and would give you a 2 x 2 array as a result. That would probably trigger problems further down the road.
0 comentarios
Más respuestas (0)
Ver también
Categorías
				Más información sobre Linear Algebra en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

