[Matlab] Tracer un cercle

Tracer un cercle [Matlab] - Divers - Programmation

Marsh Posté le 13-04-2008 à 17:32:49    

Bonjour à tous,  
 
je débute tout juste matlab et je voudrais représenter graphiquement sur matlab un cercle à partir de son équation cartésienne :
x² + y² - 2x -4y - 4 = 0
 
Pourriez-vous me donner la syntaxe à rentrer dans matlab ?
 
Je vous remercie pour votre aide.
 
PS : ça doit être tout con mais je bloque bêtement dessus.  :pt1cable:

Reply

Marsh Posté le 13-04-2008 à 17:32:49   

Reply

Marsh Posté le 13-04-2008 à 17:48:31    

avec plot ?

 


x=0:0.1:2
y=0:0.1:2

 

z= x*x+y*y...

 

plot(z)

  


ps: je précise que j'ai en tout et pour tout 10 minutes de matlab

 


edit: ah non il va gueuler parce qu'on fait une multiplication de matrice...


Message édité par art_dupond le 13-04-2008 à 17:50:07

---------------
oui oui
Reply

Marsh Posté le 13-04-2008 à 17:54:02    

Je te remercie d'essayer. ça ne fonctionne pas avec ce que tu as écrit. J'ai essayé avec plot, fplot, mershgrid mais je n'ai pas encore trouvé.
 
Il ne faudrait pas passer l'équation cartésienne en paramétrique ?

Reply

Marsh Posté le 13-04-2008 à 18:55:07    

Salut fait le avec un fsolve :
z=ton equation  
X=fsolve(z,t) ou t est ta matrice avec les points de temps
et ensuite un plot2d(t,X)
 
edit : c'est quelquechose dans ce style la, je me rapelle jamais des parametres de fsolve  :pt1cable:


Message édité par debeman le 13-04-2008 à 18:56:27
Reply

Marsh Posté le 13-04-2008 à 22:07:44    

Ok je te remercie.
 
Mais je n'ai pas trop compris, qu'est-ce que la matrice t ? mon équation z est une équation cartésienne. Je n'ai pas de paramètre t dedans.
fsolve utilise une fonction donc je dois créer une fonction avec mon équation, c'est bien ça ?


Message édité par Gargeto le 13-04-2008 à 22:15:46
Reply

Marsh Posté le 14-04-2008 à 19:48:22    

fsolve resous f(t)=0 ou f est ton equation fonctionnelle, ceci dit en passant par les courbes parametriques ca se fait très bien
solution :
t=[0:%pi/500:2*%pi];
x=3cost(t)+1;
y=3sin(t)+2;
plot2d(x,y);
normalement ca te fais un cercle centre en (1,2) et de rayon 3 qui est la solution de ton équation
( sauf si je me suis planté ^^)
 
edit: je viens de verifier sous scilab ca trace un cercle
par contre la fenetre n'est pas top il faut que tu la réajuste  
 :hello:


Message édité par debeman le 14-04-2008 à 19:54:49
Reply

Marsh Posté le 15-04-2008 à 18:12:24    

Merci pour ton aide. J'ai testé sur matlab ta solution mais ça ne fonctionne pas.  
 
J'ai tapé plot2d dans l'aide mais matlab n'a pas l'air de connaître cette fonction. J'ai essayé ta solution avec plot, fplot. Idem ça ne fontionne pas. Matlab possède plot3 mais pas plot2. J'ai tapé plot(t,x,y). J'ai bien la fenêtre de figure qui s'ouvre mais sans rien de tracer et j'ai ce message d'erreur : "Invalid line property: '3*cost(t)+1'. " Je ne comprends pas ce message.
 
j'ai mis des apostrophes pour les fonctions x et y ( x= '3*cos(t)+1' ) car j'avais un message d'erreur rien qu'en écrivant x et y.
 
Comment as-tu réussi à passer de l'équation cartésienne à l'équation paramétrique ? J'ai vu ça mais je ne m'en rappelle plus et je n'ai pas mes cours chez moi actuellement.
 
Merci encore pour ton aide.


Message édité par Gargeto le 15-04-2008 à 18:33:06
Reply

Marsh Posté le 15-04-2008 à 18:51:42    

la solution de debeman devrait marcher (sur le principe au moins)
 

t = 0:0.05:1;
x = cos(t);
y = sin(t);
plot(x,y);

Reply

Marsh Posté le 15-04-2008 à 20:16:56    

fhr, merci pour tes précisions. Effectivement avec ton aide la solution de debeman fonctionne très bien. J'ai mon cercle   :bounce:  !  
 
Je vais essayer de retrouver comment l'on passe de l'équation cartésienne à l'équation paramétrique mais si quelqu'un sait qu'il n'hésite pas  ;) .  
Merci beaucoup à tous  :jap:

Reply

Marsh Posté le 15-04-2008 à 21:30:52    

tu dois trouver un truc de la forme (x-a)² + (y-b)² = R²
 
donc tu t'arranges pour faire apparaître les produits remarquables et tu réarranges pour avoir cette forme.
 
par exemple :  x² + 2x = x² + 2x + 1 - 1 = (x²+2x+1) - 1 = (x+1)² - 1
 
Après, tu mets en paramétrique :
 
{x = R cos(t) + a
{y = R sin(t) + b


---------------
oui oui
Reply

Marsh Posté le 15-04-2008 à 21:30:52   

Reply

Marsh Posté le 15-04-2008 à 22:18:07    

:hello:  
 

 
cercle = 'x^2 + y^2 - 2*x -4*y - 4';
ezplot(cercle,[-3,5,-2,5])  


---------------
„Ich kann, weil ich will, was ich muss.“ I. Kant
Reply

Marsh Posté le 16-04-2008 à 00:00:32    

Merci art_dupond pour ton explication très clair. ça y est je m'en souviens.
 
Et merci beaucoup chris672, ton code fonctionne impeccablement.
J'ai d'autres équations à deux variables d'ordre deux et trois à représenter mais cela ne devrait pas me poser de problème grâce à vos explications.
 
Merci à tous, j'arrive avec un problème, je repars avec deux solutions. C'est génial.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed