"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como encontrar interceptações exatas de zero e diferentes de zero em gráficos usando interpolação linear em Python?

Como encontrar interceptações exatas de zero e diferentes de zero em gráficos usando interpolação linear em Python?

Publicado em 2024-11-04
Navegar:873

How to Find Exact Zero and Non-Zero Intercepts on Plots Using Linear Interpolation in Python?

Encontrando interseções de curvas com zero

Em Python, obter valores exatos do eixo y de um gráfico pode ser um desafio quando o valor não é um número inteiro. Este artigo aborda esse problema e apresenta uma solução baseada em interpolação linear.

Dadas duas matrizes (dados_verticais e gradiente(dados_temperatura)), um gráfico é gerado usando plt.plot. No entanto, o gráfico exibe um valor y próximo, mas não exatamente zero.

Interpolação linear para estimativa de raiz

Para estimar a raiz exata de uma matriz numpy , um método simples de interpolação linear pode ser usado. O código a seguir demonstra como encontrar os valores zero de uma curva arbitrária:

import numpy as np

def find_roots(x, y):
    s = np.abs(np.diff(np.sign(y))).astype(bool)
    return x[:-1][s]   np.diff(x)[s]/(np.abs(y[1:][s]/y[:-1][s]) 1)

x = .4 np.sort(np.random.rand(750))*3.5
y = (x-4)*np.cos(x*9.)*np.cos(x*6 0.05) 0.1

z = find_roots(x,y)

plt.plot(x,y)
plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4)

Este código identifica as raízes da curva e as plota como círculos no valor y exato de zero.

Interceptações diferentes de zero

A mesma abordagem pode ser usada para encontrar a interseção de uma curva com qualquer y diferente de zero -value (y0) modificando a linha que encontra as raízes:

z = find_roots(x,y-y0)

Duas interseções de curva

O método de interpolação linear também pode ser usado para encontrar a interseção entre duas curvas. Ao encontrar as raízes da diferença entre as duas curvas, podemos estimar seu ponto de intersecção:

y2 = (x - 2) * np.cos(x * 8.) * np.cos(x * 5   0.03)   0.3

z = find_roots(x,y2-y1)

plt.plot(x,y1)
plt.plot(x,y2, color="C2")
plt.plot(z, np.interp(z, x, y1), marker="o", ls="", ms=4, color="C1")
Declaração de lançamento Este artigo foi reimpresso em: 1729465881 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3