Bonjour,

Je bloque sur la résolution, avec MATLAB, dans le domaine complexe d'un système d'équations non linéaires à six inconnus.

J'utilise la fonction fsolve :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
function F2 = myfun(x_in,Yd,i)
 
x = x_in(1:6) + 1i*x_in(7:12);
 
F = [x(1) + x(4) + x(3) - Yd(1,i);
    x(1) + x(2) + x(5) - Yd(2,i);
    x(2) + x(3) + x(6) - Yd(3,i);
    x(3) + x(4) + (1/(1/x(1) + 1/(x(2) + x(5)))) - Yd(4,i);
    x(1) + x(4) + (1/(1/x(3) + 1/(x(2) + x(6)))) - Yd(5,i);
    x(1) + x(5) + (1/(1/x(2) + 1/(x(3) + x(6)))) - Yd(6,i)];
 
F2 = [real(F);imag(F)];
end
Avec "Yd" une constante et "x(1)....x(6)" mes inconnus.

Vous pouvez remarquer que j'ai séparé les parties réelles et imaginaires.

je fais appelle à la fonction avec :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Yd = [Y11;Y22;Y33;Y44;Y55;Y66];
X = zeros(12,301);
fval = zeros(12,301);
x0 = [0.0004;0.0004;0.0004;0.0004;0.0004;0.0004;0.0004;0.0004;0.0004;0.0004;0.0004;0.0004];  % Make a starting guess at the solution
for i=1:301
    g = @(x) myfun(x,Yd2,i);
    [X(:,i),fval(:,i)] = fsolve(g,x0); % Call solver
end
fsum = sum(abs(fval));
max_fsum = max(fsum)
Imp = X(1:6,:) + 1i*X(7:12,:); % les résultats recherchés, Réelle + i*imaginaire
Les résultats obtenus ne sont pas satisfaisants, ce qui est bizarre, c'est que j'obtient les bons résultats pour 3 variables sur les six.

Ma question est : est ce que je fais appelle à ma fonction "myfun" correctement ? Y a-t-il un autre moyen de résoudre un système d'équations non linéaires en complexe sur MATLAB ? pour mes valeurs initiales "x0", comment savoir si elle sont proche de la solution recherchée ou pas ? comment faire un tirage aléatoire des valeurs initiales à chaque itération de "fsolve" ?

Merci d'avance pour votre aide