Resoudre une équation à 100 balles
Fermé
Le Trouveur
Messages postés
12
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2008
-
18 avril 2008 à 23:26
nour_z - 7 févr. 2009 à 20:42
nour_z - 7 févr. 2009 à 20:42
A voir également:
- Resoudre une équation à 100 balles
- Processeur utilisé a 100 en jeu ✓ - Forum Windows 10
- Google drive 100 go gratuit - Guide
- 100 mo en go ✓ - Forum Windows
- Formate pour taxer client 100€ ✓ - Forum Consommation & Internet
- Formaté mais pas de connexion Internet ? ✓ - Forum Matériel & Système
4 réponses
damlegone32
Messages postés
74
Date d'inscription
lundi 11 septembre 2006
Statut
Membre
Dernière intervention
31 mai 2011
29
19 avril 2008 à 01:31
19 avril 2008 à 01:31
Salut,
Une manière de procéder serait de déclarer une fonction f(k) qui correspond au terme de droite de ton équation et de chercher le zero de cette fonction et ce pour plein de valeur de w (ou de la fréquence).
Avec matlab tu déclare la fonction comme cela
function f = ma_fonction_de_dispersion(k)
f = "terme de gauche de ton equation de dispersion";
=> fonction a enregister dans un .m
puis dans un autre .m faire
vect_w=valeur_mini:pas:valeur_max;
for ii = 1:length(vect_w)
global w=vect_w(ii); %global pour être accessible dans ma_fonction_de_dispersion
k(ii) = fzero(@ma_fonction_de_dispersion,estimation) %estimation : valeur approximative du zero
end
plot(vect_w,k);
N'hésite a demander si tu as des problèmes avec Matlab pour écrire ces fonctions. Si tu n'as pas matlab (c'est pas donné quand même cette licence :) ) tu peut utiliser le logiciel gratuit équivalent scilab.
A+
Une manière de procéder serait de déclarer une fonction f(k) qui correspond au terme de droite de ton équation et de chercher le zero de cette fonction et ce pour plein de valeur de w (ou de la fréquence).
Avec matlab tu déclare la fonction comme cela
function f = ma_fonction_de_dispersion(k)
f = "terme de gauche de ton equation de dispersion";
=> fonction a enregister dans un .m
puis dans un autre .m faire
vect_w=valeur_mini:pas:valeur_max;
for ii = 1:length(vect_w)
global w=vect_w(ii); %global pour être accessible dans ma_fonction_de_dispersion
k(ii) = fzero(@ma_fonction_de_dispersion,estimation) %estimation : valeur approximative du zero
end
plot(vect_w,k);
N'hésite a demander si tu as des problèmes avec Matlab pour écrire ces fonctions. Si tu n'as pas matlab (c'est pas donné quand même cette licence :) ) tu peut utiliser le logiciel gratuit équivalent scilab.
A+
damlegone32
Messages postés
74
Date d'inscription
lundi 11 septembre 2006
Statut
Membre
Dernière intervention
31 mai 2011
29
26 avril 2008 à 13:26
26 avril 2008 à 13:26
Salut,
Le bout de code que je t'ai donné c'était pour matlab. Même si scilab lui ressemble c'est pas tout a fait pareil. Notammant la fonction fzero n'existe pas sous scilab. D'après ce que j ai trouvé c'est la fonction fsolve qu'il faut utilisé avec scilab mais la syntaxe est différente.
Je te fais signe dès que j'en sais plus
A+
Le bout de code que je t'ai donné c'était pour matlab. Même si scilab lui ressemble c'est pas tout a fait pareil. Notammant la fonction fzero n'existe pas sous scilab. D'après ce que j ai trouvé c'est la fonction fsolve qu'il faut utilisé avec scilab mais la syntaxe est différente.
Je te fais signe dès que j'en sais plus
A+
Le Trouveur
Messages postés
12
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2008
2
26 avril 2008 à 15:00
26 avril 2008 à 15:00
bonjour,
j ai vu des chercheurs qui se servent régulièrement de matlab, ils m ont dit que matlab ne pourrait pas résoudre une telle équation d'entrée sans la rendre "bonne" pour matlab.
je vais essayer d'autres pistes telle que la linéarisation de la tangente par un développement limitée pour améliorer la formule d'originie ou alors une résolution graphique même si cette dernière idée me semble assez ardue à mettre en oeuvre pour mon cas.
si vous avez d autres idées je suis preneur
j ai vu des chercheurs qui se servent régulièrement de matlab, ils m ont dit que matlab ne pourrait pas résoudre une telle équation d'entrée sans la rendre "bonne" pour matlab.
je vais essayer d'autres pistes telle que la linéarisation de la tangente par un développement limitée pour améliorer la formule d'originie ou alors une résolution graphique même si cette dernière idée me semble assez ardue à mettre en oeuvre pour mon cas.
si vous avez d autres idées je suis preneur
damlegone32
Messages postés
74
Date d'inscription
lundi 11 septembre 2006
Statut
Membre
Dernière intervention
31 mai 2011
29
26 avril 2008 à 22:27
26 avril 2008 à 22:27
Salut,
voila ce que j'ai fait sous scilab:
w=300000:10000:600000
for ii = 1:length(w)
deff('[y]=f(x)','y = abs((4*(sqrt((w(ii)^2)/(39942400)-x^2 ))*(sqrt((w(ii)^2)/(9703225)-x^2 ))*x^2*tan(sqrt((w(ii)^2)/(39942400)-x^2 )*0.005/2)..
+(9703225-x^2)^2*tan(sqrt((w(ii)^2)/(9703225)-x^2 )*0.005/2)))');
[k(ii)] = fsolve([100],f);
end
plot(w/(2*%pi),k);
J'obtient une courbe linéaire.
Et c'est après que j'ai remarqué que ton équation avait une solution évidente :
k = w/Ct.
Bizarre non, pour une équation si complexe.
Y a t il une erreur de frappe
ou y a t il d'autres solutions et si oui comment veux tu tracer une fonction f(k) si plusieurs k sont possibles?
A+
voila ce que j'ai fait sous scilab:
w=300000:10000:600000
for ii = 1:length(w)
deff('[y]=f(x)','y = abs((4*(sqrt((w(ii)^2)/(39942400)-x^2 ))*(sqrt((w(ii)^2)/(9703225)-x^2 ))*x^2*tan(sqrt((w(ii)^2)/(39942400)-x^2 )*0.005/2)..
+(9703225-x^2)^2*tan(sqrt((w(ii)^2)/(9703225)-x^2 )*0.005/2)))');
[k(ii)] = fsolve([100],f);
end
plot(w/(2*%pi),k);
J'obtient une courbe linéaire.
Et c'est après que j'ai remarqué que ton équation avait une solution évidente :
k = w/Ct.
Bizarre non, pour une équation si complexe.
Y a t il une erreur de frappe
ou y a t il d'autres solutions et si oui comment veux tu tracer une fonction f(k) si plusieurs k sont possibles?
A+
19 avril 2008 à 18:47
voici le code:
function f = ma_fonction_de_dispersion(k)
f = 4*(sqrt((ω^2)/(39942400)-k^2 ))*(sqrt((ω^2)/(9703225)-k^2 ))*k^2*tan(sqrt((ω^2)/(39942400)-k^2 )*0.005/2)+(9703225)-k^2 )^2*tan(sqrt((ω^2)/(9703225)-k^2 )*0.005/2)=0; // LIGNE 2
vect_ω=376991:15000:628318;
for ii = 1:length(vect_ω)
global ω=vect_ω(ii);
k(ii) = fzero(@ma_fonction_de_dispersion,estimation) //estimation : valeur approximative du zero
end
endfunction // LIGNE 18
plot(vect_ω,k);
et mon message d erreur :
Missing operator, comma, or semicolon
at line 2 of function ma_fonction_de_dispersio called by :
endfunction
line 18 of exec file called by :
exec("C:/Documents and Settings/isen/dispersion.sci");
in execstr instruction called by :
autre chose, je ne comprends pas le paramètre estimation de la fonction zéro.
merci