J'essaie de résoudre 3 systèmes non linéaires de 3 variables en utilisant la méthode Newton-Raphson dans MATLAB. Voici les 3 équations non-linéaires:Méthode Newton-Raphson pour un système non linéaire de 3 variables dans Matlab
c * (alpha*I + k_f + k_d + k_n * s + k_p*(1-q))-I *alpha = 0
s * (lambda_b * c* P_C + lambda_r *(1-q))- lambda_b* c * P_C = 0
q * (gamma + c * k_p *(P_C/P_Q))- (c * k_p * (P_C/P_Q)) = 0
Je dois trouver les valeurs de c
, s
et q
en utilisant la méthode de Newton-Raphson.
Voici ce que j'ai jusqu'à présent:
format long
clear;
%values of parameters
I=1200;
k_f= 6.7*10.^7;
k_d= 6.03*10.^8;
k_n=2.92*10.^9;
k_p=4.94*10.^9;
lambda_b= 0.0087;
lambda_r =835;
gamma =2.74;
alpha =1.14437*10.^-3;
P_C= 3 * 10.^(11);
P_Q= 2.87 * 10.^(10);
tol = 10.^-4; %tol is a converge tolerance
%initial guess or values
c=1;
s=0.015;
q=0.98;
x0= [c;s;q];
iter= 0; %iterations
xnew =[100;100;100];
while norm(xnew -x0) > tol
iter= iter + 1;
%Defining the functions for c,s and q.
f = c * (alpha*I + k_f + k_d + k_n * s + k_p*(1-q))-I *alpha;
g = s * (lambda_b * c* P_C + lambda_r *(1-q))- lambda_b* c * P_C;
h = q * (gamma + c * k_p *(P_C/P_Q))- (c * k_p * (P_C/P_Q));
%Partial derivatives in terms of c,s and q.
dfdc = alpha*I + k_f + k_d + k_n * s + k_p*(1-q);
dfds = k_n *c ;
dfdq = - k_p *c;
dgdc = lambda_b * P_C *(s-1);
dgds = lambda_b * c* P_C + lambda_r *(1-q);
dgdq = - lambda_r * s;
dhdc = k_p *(P_C/P_Q)*(q-1);
dhds = 0;
dhdq = gamma + c * k_p *(P_C/P_Q);
%Jacobian matrix
J = [dfdc dfds dfdq; dgdc dgds dgdq; dhdc dhds dhdq];
% Applying the Newton-Raphson method
xnew = x0 - J\[f;g;h];
disp(sprintf('iter=%6.15f, c=%6.15f, s=%6.15f, q=%6.15f', iter,xnew));
end
quelqu'un peut-il s'il vous plaît vérifier mon code, il y a quelques erreurs donc, sa ne fonctionne pas. Merci d'avance.
Quelles erreurs obtenez-vous? – Engineero
pas d'erreurs, mais je pense que je ne reçois pas les valeurs précises de c, s, q? – Manjushree