sympy plot oltre intervallo di default

Pubblicità

enricovela

Utente Attivo
Messaggi
443
Reazioni
124
Punteggio
45
Sto provando a tracciare dei grafici con sympy, a partire dall'espressione simbolica della funzione.

Il mio problema è che traccia il grafico solo nell'intervallo di default [-10;10]

Ho provato a passare alla funzione plot l'argomento plot(self.x_t, xlim = [0,20]) ma, allunga solamente l'asse delle x. Il tracciamento della funzione si ferma sempre a 10. Qualcuno sa come risolvere?

Python:
from sympy import *

class Armonica:
    
    def __init__(self,x_0,v_0,wn):
        
        self.x_0 = x_0
        self.v_0 = v_0
        self.wn = wn
        
        self.A = self.x_0
        self.B = (self.v_0/wn)
        
        t = Symbol('t')
        
        ##############
        
        self.x_t = self.A*cos(self.wn*t)+self.B*sin(self.wn*t)
        self.x_tprime = self.x_t.diff(t)
        self.x_tsecond = self.x_tprime.diff(t)
        
        ###################################
        
        print self.x_t
        plot(self.x_t,xlim = [0,20])
        print self.x_tprime
        print self.x_tsecond
      


if __name__ == "__main__":
    
    a = Armonica(1,0,1)
 
Segui quanto scritto nella documentazione: https://docs.sympy.org/latest/modules/plotting.html
e quindi devi scrivere
Codice:
plot (self.x_t, (symbols('x'), 0, 20))

Un paio di consigli:
- passa a python 3
- non usare mai "import *", non sai cosa potresti importare e quali nomi vai a mascherare. Piuttosto sii esplicito, nel tuo caso scrivi:
Codice:
from sympy import Symbol, plot, cos, sin, symbols
 
Grazie per la dritta, con calma do un'occhiata alla documentazione.

Python:
from sympy import Symbol, plot,cos,sin


class Armonica:
   
    def __init__(self,x_0,v_0,wn):
       
       
        self.x_0 = x_0
        self.v_0 = v_0
        self.wn = wn
       
       
        self.A = self.x_0
        self.B = (self.v_0/wn)
       
       
       
        self.periodo = (int(6.2832/self.wn))
       
        t = Symbol('t')
       
        ##############
       
        self.x_t = self.A*cos(self.wn*t)+self.B*sin(self.wn*t)
        self.x_tprime = self.x_t.diff(t)
        self.x_tsecond = self.x_tprime.diff(t)
       
       
       
        a =  plot((self.x_t,(t,0,2*self.periodo)),(self.x_tprime,(t,0,2*self.periodo)),(self.x_tsecond,(t,0,2*self.periodo)))

if __name__ == "__main__":
   
    a = Armonica(1,0,1)

Mi piacerebbe dare un colore diverso per ogni funzione. L'unico modo che ho trovato per farlo è quello di istanziare singolarmente ogni singolo plot. Che mi sembra un po' scomodo.


Ps. ho installato anacoda3, qual'è la procedura migliore per rimuovere anaconda2 senza fare danni? Come sistema operativo uso Ubuntu.

Grazie
 
Sinceramente non so aiutarti per i plot multipli, sympy l'ho solo provato un po' di tempo fa ma mai realmente usato.
Per disinstallare anaconda2 sotto ubuntu basta rimuovere la cartella dove è installato ed eventualmente correggere la variabile d'ambiente PATH in .bashrc e/o .profile. Se non hai dimestichezza, penso che ti puoi limitare a rimuovere la cartella di installazione.
 
Pubblicità
Pubblicità
Indietro
Top