Salut tt le monde !!
Quelqu'un aurait-il une idée lumineuse pour m'aider à résoudre une équation ac des exponentielles complexes ac MATLAB ?
Je suis novice et j'ai un peu beaucoup du mal !!
Merci
-----
Salut tt le monde !!
Quelqu'un aurait-il une idée lumineuse pour m'aider à résoudre une équation ac des exponentielles complexes ac MATLAB ?
Je suis novice et j'ai un peu beaucoup du mal !!
Merci
Bonjour.
Tu devrais mettre ton post dans le forum "www.developpez.net matlab" !
Les équations se résolvent avec 'solve". Exemple :
solve('x^2-4*exp(i*pi/3)')
ans =
[ -3^(1/2)-i]
[ 3^(1/2)+i]
>> solve('x^2-2-2*i*sqrt(3)')
ans =
[ -3^(1/2)-i]
[ 3^(1/2)+i]
J'ai déjà essayé plusieurs fois avec solve mais il me renvoie mon équation sans calculer l'inconnue.
J'ai b= A*exp(i*beta+B)+C pour faire simple
et je veux trouver les ou le beta tel que b=1
donc j'ai fait solve('b-1')
et il me renvoie b=1 puis b=A*exp(i*beta+B)+C, ce qui est logique mais moi je voudrais beta=...
Maintenant quand j'utilise solve il me met :
Error using ==> solve
Unable to find closed form solution.
Y a-t-il donc un autre moyen de trouver une solution à mon équation ?
Bonjour.
Je fais comme ça :
solve('A*exp(i*beta+B)+C-1')
ans =
i*(B-log(-(C-1)/A))
Le problème ça doit alors être que moi j'ai des sommes de produits entre des exponentielles et des logarithmes népérien dans lesquels se trouvent encore des exponentielles...
et il n'arrive pas à trouver une solution approchée on dirait...
Fais nous voir ton équation.j'ai des sommes de produits entre des exponentielles et des logarithmes népérien dans lesquels se trouvent encore des exponentielles...
function b=essaisophiebeta(alpha,Hobs,h o)
beta=sym('beta')
%on va calculer le beta tel que Hobs/ho=1 et alpha=5
S=0
for m=2:1:2
for r=1:1:m-1
%Definition de la fonction f(r)
f=exp(-i*(2*r*alpha + beta))*log(1-exp(i*((1-2*r)*pi/m - pi*beta/(alpha*m)))) + exp(-i*(2*r*alpha - beta))*log(1 - exp(i*((1-2*r)*pi/m + pi*beta/(alpha*m)))) - 2*exp(-i*2*r*alpha)*log(1 - exp(i*(1-2*r)*pi/m));
S=S+f;
end
end
b=imag(S/pi) %on a b=partie imaginaire de S1
solve ('imag(S/pi)-1')
Voilà mon code
si on le lance on obtient b
mais pas le beta !!
Tu déclare chaine de caractères ce qui l'est déjà :
Essaie :
beta=sym('beta')
%on va calculer le beta tel que Hobs/ho=1 et alpha=5
S=0;
alpha=5;
for m=2:1:2
for r=1:1:m-1
%Definition de la fonction f(r)
f=exp(-i*(2*r*alpha + beta))*log(1-exp(i*((1-2*r)*pi/m - pi*beta/(alpha*m))));% + exp(-i*(2*r*alpha - beta))*log(1 - exp(i*((1-2*r)*pi/m + pi*beta/(alpha*m)))) - 2*exp(-i*2*r*alpha)*log(1 - exp(i*(1-2*r)*pi/m));
S=S+f;
end
end
b=imag(S/pi) %on a b=partie imaginaire de S1
solve (imag(S/pi)-1)
solve(b-1)
J'ai essayé et ça ne change rien à mon problème. Il plante à la première ligne où il y a solve et me renvoie le même message d'erreur !
??? Error using ==> solve
Unable to find closed form solution.
Error in ==> essaisophiebeta at 18
solve ('imag(S/pi)-1')
Tu as essayé de faire tourner mon code et ça a marché avec tes 2 solves ?
Bonjour.
Ce code marche bien :
b =Code:beta=sym('beta') %on va calculer le beta tel que Hobs/ho=1 et alpha=5 S=0; alpha=5; for m=2:1:2 for r=1:1:m-1 %Definition de la fonction f(r) f=exp(-i*(2*r*alpha + beta))*log(1-exp(i*((1-2*r)*pi/m - pi*beta/(alpha*m))));% + exp(-i*(2*r*alpha - beta))*log(1 - exp(i*((1-2*r)*pi/m + pi*beta/(alpha*m)))) - 2*exp(-i*2*r*alpha)*log(1 - exp(i*(1-2*r)*pi/m)); S=S+f; end end b=imag(S/pi) %on a b=partie imaginaire de S1 solve (imag(S/pi)-1) solve(b-1)
-1/2*i*(exp(-i*(10+beta))*log(1-exp(i*(-1/2*pi-1/10*pi*beta)))/pi-1/pi*conj(exp(-i*(10+beta))*log(1-exp(i*(-1/2*pi-1/10*pi*beta)))))
ans =
-5.5418191053818922793595940022 748+1.842172594883654148697142 9201097*i
ans =
-5.5418191053818922793595940022 748+1.842172594883654148697142 92010
Merci !!!
Ca marche !!
En fait j'avais mis des apostrophes :
solve ('imag(S/pi)-1')
solve('b-1')
comme ils disent dans l'aide de MATLAB(version 7.0)
Sans les apostrophes ça marche !!
Merci beaucoup !!!!!
Je vais passer à la suite maintenant !
Il faut mettre les apostrophes quand on n'est pas en symbolique.En fait j'avais mis des apostrophes :
Bonjour,
Maintenant que j'ai la formule complexe de b, je cherche à trouver l'angle beta qui lui correspond. J'ai utilisé :
R=abs(Z)
theta=angle(Z)
en posant Z=solve(b-1)
Il trouve R sans problème mais pas l'angle theta. Il m'affiche :
??? Function 'atan2' is not defined for values of class 'sym'.
Error in ==> atan2 at 15
[varargout{1:nargout}] = builtin('atan2', varargin{:});
Error in ==> essaisophiebeta at 24
theta = atan2(imag(Z),real(Z))
Pourtant je n'ai pas défini Z comme variable symbolique.
D'ailleurs normalement le résultat b qu'il me donne devrait être une seule valeur non ? Un angle, vu qu'il résout b-1 et que l'inconnue dans b est beta. D'ailleurs je ne comprends pas trop pourquoi il faut écrire :
solve (imag(S/pi)-1)
Z=solve(b-1)
car c'est deux fois la même chose qu'on lui demande là non ? Quel est le code qu'il réalise derrière ces deux solves pour me sortir un résultat ? Et à quoi correspond exactement ce résultat ?
Merci de m'éclairer encore une fois. Tout n'est pas vraiment clair pour moi...
Bonjour.
Essaie :
theta = atan(imag(Z), real(Z))
Il sert à quoi le 2 alors ? Là oui ça m'a renvoyé une valeur de theta. Mais ce résultat de theta c'est le beta de mon équation f(r) ? C'est les mêmes ?
Rebonjour ,
Maintenant que, pour un alpha donné, j'arrive à avoir une valeur de beta, j'aimerais que toutes mes valeurs de beta s'inscrivent dans un vecteur colonne dont le nombre de lignes correspondrait au nombre de valeurs de alpha.
J'ai donc initialisé mon vecteur :
P=5
theta=zeros(P,1)
et rajouté une boucle :
for alpha=1:1:P
le reste
end
et il me calcule bien les différentes valeurs de beta en fonction des différents alpha ms ne range rien dans mon vecteur...
Comment faire ?
c'est bon. J'ai résolu mon problème !