Résoudre une équation sous Matlab

Signaler
Messages postés
5
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
11 mai 2007
-
Messages postés
5
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
11 mai 2007
-
Salut tous,
Mon programme a la structure suivante:
a=f1(x);
b=f2(x);
c=f3(x);
d=f4(x);
eq=f(a,b,c,d)=0

mon but est de résoudre l'équation "eq". J'ai pas su comment je dois procéder, En effet vu que x est
inconnu,la simulation s'arrête dés la première ligne.
A voir également:

9 réponses

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
26
eq = f(a,b,c,d)=0 ne peut pas fonctionner.
eq est une variable qui va recevoir le parametre de retour de f(a,b,c,d)
le =0 correspond au quoi ?
Messages postés
149
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
17 mai 2007
2
Salut,

Tu es sûr que c'est la bonne syntaxe pour matlab ton truc là ?
Ca ressemble pas à ce que je connaissais
Pour résoudre des équations, tente de chercher de l'aide sur la commande SOLVE

Une autruche ne se cuit pas aux petits lardons.
Messages postés
5
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
11 mai 2007

Salut,
je pense que j'ai pas bien décrit la structure de mon programme, c'est pourquoi j'ai décidé de l'envoyer entièrement:
clear all;
r=1/3;%Rapport de réduction
Er=2.2;%Permittivité relative du matériau utilisé
a=1*(10^-3);%Largeur de la structure
n=1;%Numéro de mode
f=50*(10^9);
U0=4*pi*(10^-7);%perméablité dans le vide
E0=(1/36)*pi*(10^-9);%permittivité dans le vide
w=2*pi*f;
K0=sqrt(U0*E0*(w^2));%Constante de propagation dans le vide à la fréquencef
%%% L'inconnu est K
Omega0=sqrt((n*pi/a)^2+(K^2)-(K0^2));%
Omega1=sqrt((n*pi/a)^2+(K^2)-((K0^2)*Er));
YM0=Omega0/(i*w*U0);
YM1=Omega1/(i*w*U0);
eq=3*YM0*YM1*coth(Omega1*r*b)+2*(YM1^2)*coth(Omega0*(1-2*r)*b)*((coth(Omega1*r*b))^2)+(YM0^2)*coth(Omega0*(1-2*r)*b);
%%%Je veux chercher le K qui annule eq

Merci
Messages postés
149
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
17 mai 2007
2
Salut,

(ah c'est déjà plus ressemblant)

Pour Omega0 j'ai un doute déjà,  je pense qu'il faut écrire Omega0 comme une fonction
quelque chose du genre (je ne connais pas la syntaxe )
Omega0(K) = sqrt(...);
 Puis pareil pour eq
Et ensuite il doit y avoir une commande du genre
solve(eq(K)==0, {K})
cherche dans l'aide de matlab pour (1) fonctions et (2) système d'équations
(j'utilisais pas matlab mais mathematica et ça se ressemblait un peu, et c'est comme ça qu'il fallait faire)
sinon ça va prendre Omega0 comme une constante

@+++

Une autruche ne se cuit pas aux petits lardons.
Messages postés
5
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
11 mai 2007

Salut,
quand je définis une fonction j'obtiens toujours un message d'erreur, même avec des exemples simples de fonctions
comme celui-là:

function y = fonc(x)
     y = x .^ 2;

Le message d'erreur que j'obtiens est le suivant:??? Strings passed to EVAL cannot contain function declarations.
Messages postés
149
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
17 mai 2007
2
Salut, 

 Il faut que tu arrives à résoudre ce problème de déclaration de fonctions avant de pouvoir débloquer l'autre. Tu utilises le matlab complet ou tu passes par la fonction eval d'un autre langage ? Es-tu sûr que c'est la bonne syntaxe ?

Une autruche ne se cuit pas aux petits lardons.
Messages postés
5
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
11 mai 2007

Salut [auteurdetail.aspx?ID=1018277 emmatopiak]
,
ça y est je suis arrivée à résoudre le problème de fonctions, il me reste maintenant le problème de résolution de l'équation.
Messages postés
149
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
17 mai 2007
2
Salut,

Peux-tu nous coller le code que tu as pour le moment ? et aussi voir avec l'aide de la fonction solve ?

Une autruche ne se cuit pas aux petits lardons.
Messages postés
5
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
11 mai 2007

Salut,
voilà mon programme (j'ai pas ajouté grande chose):

function dispersion=fonc(k)
clear all;
r=1/3;%Rapport de réduction
Er=2.2;%Permittivité relative du matériau utilisé
b=1.5*(10^-3);%Longueur de la structure
a=1*(10^-3);%Largeur de la structure
n=1;%Numéro de mode
f=5*(10^9);%Fréquence
U0=4*pi*(10^-7);%perméablité dans le vide
E0=(1/36)*pi*(10^-9);%permittivité dans le vide
w=2*pi*f;
c=3*(10^8);%vitesse de la lumière
K0=w/c;%Constante de propagation dans le vide
%K est un nombre complexe K=p1+j*p2
Omega0=sqrt(((n*pi/a)^2)-(K^2)-(K0^2));%Omegua0
Omega1=sqrt((n*pi/a)^2-(K^2)-((K0^2)*Er));%Omegua1
Com0=tanh(Omega0*b*(1-2*r));
Com1=tanh(Omega1*b*r);
%cas1 deux plus milfou9
dispersion=3*Omega0*Omega1*Com1+2*(Omega1^2)*(Com1^2)*Com0+(Omega0^2)*Com0;

Mon but est la recherche de K qui correspond à  fonc(K)=0.
En utlisant fsolve, j'obtiens tjrs des erreurs.
SVP aidez moi c'est urgent