Comment utiliser Newton-Raphson la méthode dans matlab pour trouver une équation de la racine?

Je suis un nouvel utilisateur de MATLAB. Je veux trouver la valeur qui fait f(x) = 0, à l'aide de Newton-Raphson la méthode. J'ai essayé d'écrire un code, mais il me semble que c'est difficile à mettre en œuvre de Newton-Raphson la méthode. C'est ce que j'ai à ce jour:

function x = newton(x0, tolerance)
    tolerance = 1.e-10;
    format short e;
    Params = load('saved_data.mat');
    theta = pi/2;
    zeta = cos(theta);
    I = eye(Params.n,Params.n);
    Q = zeta*I-Params.p*Params.p';

    % T is a matrix(5,5)
    Mroot = Params.M.^(1/2);  %optimization
    T = Mroot*Q*Mroot;

    % Find the eigenvalues
    E = real(eig(T));

    % Find the negative eigenvalues
    % Find the smallest negative eigenvalue
    gamma = min(E);  

    % Now solve for lambda
    M_inv = inv(Params.M);  %optimization
    zm = Params.zm;

    x = x0;
    err = (x - xPrev)/x;

    while abs(err) > tolerance
        xPrev = x;
        x = xPrev - f(xPrev)./dfdx(xPrev);

        % stop criterion: (f(x) - 0) < tolerance
        err = f(x);
   end 

   % stop criterion: change of x < tolerance % err = x - xPrev;

end

La fonction ci-dessus est utilisé comme suit:

% Calculate the functions
Winv = inv(M_inv+x.*Q);

f = @(x)( zm'*M_inv*Winv*M_inv*zm);

dfdx = @(x)(-zm'*M_inv*Winv*Q*M_inv*zm);

x0 = (-1/gamma)/2;

xRoot = newton(x0,1e-10);
  • Alors, qu'est-th question? Vous montrez simplement votre code...
  • J'ai besoin de fixer le code pour le faire fonctionner.
  • Ce genre de sortie en êtes-vous? Quelles sont vos fonctions qui semblent ne pas fonctionner avec fzero()?
  • Il donne l'erreur suivante :??? Erreur à l'aide de ==> static). les valeurs de la Fonction sur l'intervalle de points de terminaison doivent être finis et réel"".Je pense que c'est parce qu'il est complexe d'entrées dans l'équation.
  • pouvez-vous nous montrer ce que Params.n, Params.p, Params.M etc sont? Ensuite, nous sommes plus susceptibles d'être en mesure pour vous aider à déboguer votre problème.
InformationsquelleAutor user1079331 | 2011-12-03