Bonjour,
comment calculer intégrale F(x)=x*cos(2x) de 1 a 0 , mais en degré.
merci
Bonjour,
comment calculer intégrale F(x)=x*cos(2x) de 1 a 0 , mais en degré.
merci
avec ode45 en gérant soit-même ses unités
Je ne réponds pas aux MP techniques. Le forum est là pour ça.
La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3
Bonjour,
J'ai du raté quelque chose, mais je ne vois pas le rapport avec les ODE.
cosd() est la fonction matlab qui t’intéresse. L'intégrale se calcule entre autres via
il y a peut être une petite correction à faire, car je n'ai pas trop compris qui était en degrés : l'argument du cos ? x également ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 integrale = -quad(@(x) x.*cosd(2x),0,1)
merci VV33D mais ça ne donne pas la solution en degrés.
Est-ce qu'il y a la possibilité que MATLAB fonctionne directement en degrés ?
Transforme toi même ta variable x(degrès) en y(radian) et fais le changement de variable ans l'intégrale, sans oublier de changer les bornes
Code : Sélectionner tout - Visualiser dans une fenêtre à part mais ça ne donne pas la solution en degré
@FLB: oui mais qu'en est-il du x à l'extérieur de cosd() ?
Salut,
jettes un oeil à la documentation de cosd : l'argument d'entrée est bien en degrés.
Attention à la coquille :
Code : Sélectionner tout - Visualiser dans une fenêtre à part integrale = -quad(@(x) x.*cosd(2*x),0,1);
N'oubliez pas de consulter les FAQ Matlab et les tutoriels Matlab
Pas de question technique par MP, Merci
Lorsque tu fais le changement de variable, tous les x vont disparaitre pour laisser la place à des y, donc ça marche parfaitement, en faisant attention aux constantes !
Soit x en degrés et y:=x en radian.
- Exprime x à partir de y
- Remplace les x dans x.f(2x) par sa valeur en fonction de y
- Trouve entre quelles bornes varie y
Ensuite il n'y a plus qu'à modifier le code
J'ai essayé avec :
mais ça ne marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part eval(int(x*cosd(2x),0,1))
Commence par répondre à mes 3 questions (sur le papier, pas en matlab), ensuite il suffit de modifier
avec la bonne fonction et les bonnes bornes
Code : Sélectionner tout - Visualiser dans une fenêtre à part integrale = -quad(@(x) x.*cosd(2x),0,1)
Mais il faut intégrer cette intégrale dans une boucle pas à main.
Tu aura plus vite fait d'écrire le changement de variable à la main et de l'implémenter ensuiteest ce que je peux modifier les unité de matlab
Je crois qu'il faut reprendre en douceur depuis le début :
Ainsi :comment calculer intégrale F(x)=x*cos(2*x) de 1 a 0 , mais en degré.
- le premier x va varier de 0 à 1
- dans le cosinus le 2*x va varier de 0 à 2 radians
Si tu veux que le paramètre du cosinus varie entre 0 et 2 degrés, écris
Ensuite utilise la méthode quad pour effectuer l'intégration numérique, comme te l'a montré VV33D.
Code : Sélectionner tout - Visualiser dans une fenêtre à part cos(2*x*pi/180)
N'oubliez pas de consulter les FAQ Matlab et les tutoriels Matlab
Pas de question technique par MP, Merci
Bonjour,
==> ode est un intégrateur numérique. "Résoudre" f'(x) = ... revient à calculer f(x) entre t1 et t2 et c'est le même problème que résoudre g(x) = ... et calculer l'intégrale de g entre t1 et t2. Seules les méthodes de résolution diffèrent. ODE est une généralisation de quad en quelques sortes. Personnellement j'ai développé ma propre généralisation de ODE pour prendre en compte des commandes asservies... donc il existe tout pleins de solveurs et on peut faire ses propres solveurs (et j'ai l'impression que c'est ce que veut peut-être faire hadjdjelloulnasreddi...)
==> je ne connaissais pas quad. Restes sur quad et oublie ode hadjdjelloulnasreddi, il est plus simple à comprendre.
==> Tiens, elle sort d'où cette boucle ?Envoyé par hadjdjelloulnasreddi
Si je n'ai pas donné de détail : c'est volontaire. Tu ne donnes presque aucune information, tu ne prends pas la peine d'écrire à peu près correctement et tu donnes presque l'impression de faire un peu du style : "faites moi ça, si c'est bon je prends, sinon, refaites". Alors ne t'attends pas à ce qu'on te décortique le boulot à coup de baguette magique sans que tu fasses un minimum d'effort. Et de toutes façons on n'est pas là pour ça. En tout cas, c'est en train de tourner comme ça. Tu as de la chance que FLB soit patient.
Maintenant, donnes un peu plus d'info : ça sort d'où ta boucle de 5000 itérations ? Et suis les conseils que toutes les personnes t'ont donnés ici, en faisant un retour en expliquant ce que tu as fait et là où tu bloques (j'ai l'impression d'apprendre aux gens à vivre en communauté plus qu'à les aider réellement dans matlab, c'est fou...)
Un truc qui serait excellent déjà, c'est que tu nous montre ton code. Tu fais un copier coller de ton code tel qu'il est maintenant, en l'état, même s'il ne marche pas, ici-même en postant un message, puis tu sélectionnes le code que tu as collé et tu cliques sur "#" juste au dessus pour mettre en forme comme ceci :
Encore mieux : tu ne postes que la partie du code "utile" (si ton code est très long). Cerise sur le gâteau : tu mets également les erreurs que tu obtiens dans matlab quand tu exécutes en faisant correspondre les numéros de ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part test_code = 1
==> je "pense" que tu obtiendras des réponses plus efficace qu'en disant :
==> commentaire inutile et qui ne donne aucune information ==> comment veux-tu qu'on puisse t'aider avec ça ? Il faut en plus de cela qu'on devine ce que tu cherches à faire ?merci VV33D mais ça ne donne pas la solution en degrés.
En résumé :
- tu veux faire quoi (personnellement, je ne le sais toujours pas : peut-être que je suis stupide...) ? Détailles ce que tu veux faire exactement. Si tu cherches à coder toi-même l'intégration, c'est possible, mais dis-le. Si ce n'est pas le cas, alors quad est ton ami.
- les radians et les degrés sont les unités d'un angle. Tu peux prendre les cosinus et sinus des angles à conditions que tes angles soient en radian. Si tes angles sont en degrés, tu as des fonctions magiques que sont cosd et sind qui font ça, mais c'est déconseillé. Il vaut mieux utiliser les unités du système international et s'y tenir, puis changer les unités à la fin, lors de tes observations. Tu peux me croire les yeux fermés sur ce point.
- matlab n'est pas un simulateur physique. Nonon. C'est un simulateur mathématique. S'il faisait de la physique, il gèrerait des variables avec des unités, ce qui n'est pas le cas. ==> les unités, c'est TON problème, pas celui de matlab.
Cordialement,
Je ne réponds pas aux MP techniques. Le forum est là pour ça.
La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3
Merci tachmou pour tes conseils
mon problème c'est que j'ai une boucle qui fait des itérations et je cherche l'intégrale de x*cos(2x) de 0 a 1 qui se trouve dans cette boucle.
j'ai fait mes calculs à la main et j'ai trouvé cette solution qui est exacte et en degrés :
integrale = xsin(2x)/x +cos(2x)/4 de 0 a 1 = 0.0172
donc je cherche comment trouver ce résultat avec MATLAB !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager