Résoudre une équation sous Matlab

noussa1983 Messages postés 5 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 11 mai 2007 - 7 mai 2007 à 07:58
noussa1983 Messages postés 5 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 11 mai 2007 - 11 mai 2007 à 17:55
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.

9 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
7 mai 2007 à 09:36
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 ?
0
emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 2
7 mai 2007 à 14:15
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.
0
noussa1983 Messages postés 5 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 11 mai 2007
7 mai 2007 à 17:33
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
0
emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 2
7 mai 2007 à 19:06
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
noussa1983 Messages postés 5 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 11 mai 2007
7 mai 2007 à 19:49
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.
0
emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 2
8 mai 2007 à 10:12
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.
0
noussa1983 Messages postés 5 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 11 mai 2007
8 mai 2007 à 16:31
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.
0
emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 2
9 mai 2007 à 16:12
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.
0
noussa1983 Messages postés 5 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 11 mai 2007
11 mai 2007 à 17:55
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
0
Rejoignez-nous