IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Fonction solve avec nombres complexes


Sujet :

MATLAB

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 109
    Points : 77
    Points
    77
    Par défaut Fonction solve avec nombres complexes
    Bonjour à tous ,

    Je cherche à résoudre une équation utilisant des nombres complexes pour laquelle je cherche la valeur de la résistance R (réel > 0) qui donne |Zeq|=84 Ohms en utilisant la fonction solve.
    Dans le code ci-dessous je devrais récupérer 2 solutions réelles aux alentours de 24 Ohms et de 57 Ohms mais lorsque j'exécute le code Matlab la fonction solve ne renvoie aucune solution.

    Si quelqu'un peut éclairer ma lanterne.

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    clc
    clear
    syms R Real;
    C=5e-14;L=1.5e-10;Lc=3e-10;Cg=5e-14;Z1=50;Z2=50;
    f=50e9;
    w=2*pi*f;
    Zp=2*1i*Lc*w + (R+1i*w*(L-R^2*C-L^2*C*w^2))/(1+C*((w^2*(R^2*C-2*L)+L^2*C*w^4)));
    Yg=1i*Cg*w;
    A=1+Yg*Zp;
    B=Zp;
    CC=Yg*(Yg*Zp+2);
    D=A;
    DEN=A*Z2+B+CC*Z1*Z2+D*Z1;
    S11=(A*Z2+B-CC*Z1*Z2-D*Z1)/DEN;
    Zv=84;
    Zeq=abs((2*Z1*S11)/(1-S11));
    solve(Zv==Zeq,R)

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Zv trop fort ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    clc
    clear
    syms R Real;
    C=5e-14;L=1.5e-10;Lc=3e-10;Cg=5e-14;Z1=50;Z2=50;
    f=50e9;
    w=2*pi*f;
    Zp=2*1i*Lc*w + (R+1i*w*(L-R^2*C-L^2*C*w^2))/(1+C*((w^2*(R^2*C-2*L)+L^2*C*w^4)));
    Yg=1i*Cg*w;
    A=1+Yg*Zp;
    B=Zp;
    CC=Yg*(Yg*Zp+2);
    D=A;
    DEN=A*Z2+B+CC*Z1*Z2+D*Z1;
    S11=(A*Z2+B-CC*Z1*Z2-D*Z1)/DEN;
    Zv=10;
    Zeq=abs((2*Z1*S11)/(1-S11));
    S=eval(solve(Zeq==Zv,R))

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 109
    Points : 77
    Points
    77
    Par défaut
    Bonjour et merci pour ta réponse,

    Effectivement , si l'on met 10 Ohms on obtient une solution mais elle est aberrante car R doit être un réel non imaginaire.
    De plus , si l'on introduit la solution dans R la solution on trouve |Zeq|=Nan

    Je ne m'explique pas pourquoi solve ne trouve pas les 2 solutions pour |Zeq]=84 . J'ai tracé sous Excel afin de faire la résolution graphique et l'on voit bien qu'il existe 2 solutions voisines de 24 et 57 (voir graphique ci-dessous)
    Nom : GRAPHIQUE.jpg
Affichages : 123
Taille : 109,6 Ko

    Pourquoi la résolution de cette équation simple n'est pas correcte ?

    Merci encore pour ton aide.

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Une autre approche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    clc
    syms R
    C=5e-14;L=1.5e-10;Lc=3e-10;Cg=5e-14;Z1=50;Z2=50;
    f=50e9;
    w=2*pi*f;
    Zp=2*1i*Lc*w + (R+1i*w*(L-R^2*C-L^2*C*w^2))/(1+C*((w^2*(R^2*C-2*L)+L^2*C*w^4)));
    Yg=1i*Cg*w;
    A=1+Yg*Zp;
    CC=Yg*(Yg*Zp+2);
    %D=A;
    DEN=A*Z2+Zp+CC*Z1*Z2+A*Z1;
    S11=(A*Z2+Zp-CC*Z1*Z2-A*Z1)/DEN;
    Zv=84;
    Zeq=abs((2*Z1*S11)/(1-S11));
    PR=real((2*Z1*S11)/(1-S11));% Partie réelle
    PI=imag((2*Z1*S11)/(1-S11));% Parie imaginaire
    M=sqrt(PR^2+PI^2);
    S1=solve(M-Zv,R,[0,100])
    % Tracé
    R=0:0.1:80;
    F=eval(Zeq-84);
    plot(R,F)
    grid
    % Calcul par polynôme
    P= polyfit(R,F,3);
    hold on
    plot(R,polyval(P,R),'.r')
    RS=roots(P)

Discussions similaires

  1. VB express 2013 - aide et calcul avec nombres complexes
    Par vasilpapa dans le forum VB.NET
    Réponses: 6
    Dernier message: 06/07/2015, 05h56
  2. Réponses: 5
    Dernier message: 18/12/2010, 21h46
  3. Calcul avec le nombre complexe
    Par Arry_C dans le forum C
    Réponses: 3
    Dernier message: 13/04/2007, 20h27
  4. Réponses: 9
    Dernier message: 30/03/2006, 16h44
  5. Fonction Execlp avec nombre parametres variable
    Par laurent_ifips dans le forum C
    Réponses: 3
    Dernier message: 25/11/2005, 20h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo