Python, Fazer gráfico, 2 parábolas.

Python

04/09/2019

Quero fazer duas parábolas com a<0 iguais, cada uma com seu intervalo. Tipo quando terminar uma começar a outra. No entanto no meu código aparentemente ele faz duas funções virarem uma.
# Bibliotecas
import matplotlib.pyplot as plt
import math


# -- Programa principal --
# inicialização de variável
soma = 0

# entrada de dados
xi = float(input('Digite o valor inicial do intervalo: '))

xf = float(input('Digite o valor final do intervalo: '))
while xf<=xi:
    print('Erro! \\nO valor final deve ser maior do que o valor inicial!!')
    xi = float(input('Digite o valor inicial do intervalo: '))
    xf = float(input('Digite o valor final do intervalo: '))

base = 0.1

# plotagem do objeto
x = xi     
while(x<=xf):

    if -10< x < 12.2:
        y = -4*x**2+4
    elif 12.3 < x < 22.3:
        y = -4*x**2+4
    
        


    
    
 
    plt.plot(x,y,marker='o',color='black')
    plt.bar(x,y,base)
    
    soma = soma + (base*y)
    x = x + base

# exibição da área aproximada
print('\\n\\n*******************************')    
print('Área aproximada:',soma,'u.a.')
print('*******************************')    
# exibicao do grafico
plt.xlabel('x (m)')
plt.ylabel('y (m)')
plt.show()
Marcos

Marcos

Curtidas 0

Respostas

Gérson

Gérson

04/09/2019

Quero fazer duas parábolas com a<0 iguais, cada uma com seu intervalo. Tipo quando terminar uma começar a outra. No entanto no meu código aparentemente ele faz duas funções virarem uma.
# Bibliotecas
import matplotlib.pyplot as plt
import math


# -- Programa principal --
# inicialização de variável
soma = 0

# entrada de dados
xi = float(input('Digite o valor inicial do intervalo: '))

xf = float(input('Digite o valor final do intervalo: '))
while xf<=xi:
    print('Erro! \\\\nO valor final deve ser maior do que o valor inicial!!')
    xi = float(input('Digite o valor inicial do intervalo: '))
    xf = float(input('Digite o valor final do intervalo: '))

base = 0.1

# plotagem do objeto
x = xi     
while(x<=xf):

    if -10< x < 12.2:
        y = -4*x**2+4
    elif 12.3 < x < 22.3:
        y = -4*x**2+4
    
        


    
    
 
    plt.plot(x,y,marker='o',color='black')
    plt.bar(x,y,base)
    
    soma = soma + (base*y)
    x = x + base

# exibição da área aproximada
print('\\\\n\\\\n*******************************')    
print('Área aproximada:',soma,'u.a.')
print('*******************************')    
# exibicao do grafico
plt.xlabel('x (m)')
plt.ylabel('y (m)')
plt.show()


Bom dia amigo
Pelo que testei aqui e pode entender da sua função, realmente ela aparenta que esta unindo. Mas não esta. Oque acontece e que o limite de uma função para outra e muito proximo, isso faz com que parece estar juntas.
Sua f(x)= -4*(x^2) +4
Uma termina em 12.2 e a outra começa em 12.3. Logo uma sera a continuidade da outra.

if -10< x < 12.2:
y = -4*x**2+4
elif 12.3 < x < 22.3:
y = -2*x**2+4

Muda essa delta de -4 para -2, no elif. Que ficara mais facil de ver a descontinuidade.


Tenho alguns exemplos de plotagem de grafico e mineração com Python no meu git:
https://github.com/gerssonmg/mineracao_de_dados
https://github.com/gerssonmg/pandas

E dois videos explicando:
https://www.youtube.com/watch?v=_wVBVdvkTgM
https://www.youtube.com/watch?v=eVf_UjfemBo

Essas implementação tem algumas features avançadas, mas da pra você aprender bastante coisa eu acredito.
GOSTEI 0
POSTAR