[Python] Grafico

gerardoflotta
import matplotlib.pyplot as plt
import numpy as np
import math

def grafico(r) :
    t = 0
    volume = []
    tempo = []
    while t <= 120 :
        volume_00 = 10**9+10**8*(1-math.exp(-t/100))-r*t
        volume.append(volume_00)
        tempo.append(t)
        t += 1
        
    plt.plot(tempo, volume)
    plt.xlabel("Tempo")
    plt.ylabel("Volume")
    plt.grid('on')
    plt.show()
        







def main() :
    r = 10**7
    
    
    Grafico = grafico(r)
    
    
    
main()


Buonasera, dovrei creare un grafico con questi elementi ma non so come fermare il while quando "volume_00" diventa minore di zero, io ho messo "while t <= 120 :" ma forse ho sbagliato.
Perchè io dovrei aumentare t che inizialmente è zero finchè volume_00 non diventa minore di zero e diagrammare i risultati del volume_00 e del tempo.

Qualcuno mi può aiutare
Grazie

Risposte
solaàl
Beh. Porlo uguale a 1 e mettere [inline]volume_00 > 0[/inline] come condizione nel while funziona?

gerardoflotta
Già provato e non funziona

solaàl
Boh, a me mostra quel che deve se provo a farlo girare.

gerardoflotta
mi potresti far vedere come hai scritto chissà sbaglio io a scrivere per favore

solaàl
import matplotlib.pyplot as plt
import numpy as np
import math

def grafico(r) :
    t = 0
    volume = []
    tempo = []
    volume_00 = 1
    while volume_00 > 1 :
        volume_00 = 10**9+10**8*(1-math.exp(-t/100))-r*t
        volume.append(volume_00)
        tempo.append(t)
        t += 1
       
    plt.plot(tempo, volume)
    plt.xlabel("Tempo")
    plt.ylabel("Volume")
    plt.grid('on')
    plt.show()
       
def main() :
    r = 10**7
    Grafico = grafico(r)
main()


gerardoflotta
Anche a te da lo stesso mio problema perchè se noti dal grafico la linea va sotto lo zero quindi l'ultimo valore è negativo

solaàl
Beh, ma il ciclo si ferma, sarà un artefatto del visualizzatore; non me ne preoccuperei.

gerardoflotta


Il secondo punto invece chiede questo, io ho scritto questo:
def grafico(r) :
    t = 0
    volume = []
    tempo = []
    while t <= 120:        
        volume_0 = 10**9+10**8*(1-math.exp(-t/100))-r*t
        if volume_0 < 0 : break
        volume.append(volume_0)
        tempo.append(t)
        t += 1
        
            
        
    plt.plot(tempo, volume)
    plt.xlabel("Tempo")
    plt.ylabel("Volume")
    plt.grid('on')
    plt.show()
    

def t_f(r,x) :
    t = 0
    volume = []
    tempo = []
    while t <= 120:        
        volume_0 = 10**9+10**8*(1-math.exp(-t/100))-r*t
        if volume_0 < 0 : break
        volume.append(volume_0)
        tempo.append(t)
        t += 1    
    
        







def main() :
    r = float(input("Inserire il valore di r: "))
    x = float(input("Inserire il valore di x: "))
    
    
    
    Grafico = grafico(r)    
    
    
main()


ma come faccio ad avere il tempo nel senso se io passo il 40 % come faccio a farmi dare il tempo che è passato affinchè il livello dell'acqua sia sceso del 40%

salvo20201
t = 10
while t >= 0.01:
    t -= 0.1
    print t
print round(t)


prova ad adattare questi parametri al tuo codice,
e vedi se il risultato è come intedi tu.

mic_1
Quindi vorresti aumentare t da zero e ridurre volume_00 controllando che non diventi minore di zero?

Premetto di non essere espertissima ma provo ad aiutarti sempre che possa essere di aiuto: Man mano che aumenti t controlli il valore del volume_00. Io ìnserirei un IF/ELSE sul volume e nel caso diventi <0 un BREAK che interrompe il ciclo ELSE CONTINUE.

Prova a cercare info su "Ciclo While, istruzioni break e continue". Ci sono vari esempi.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.