How to Find the Intersection Points of a Curve with the Y-Axis and Other Curves in Python?

Barbara Streisand
Release: 2024-10-21 07:12:02
Original
731 people have browsed it

How to Find the Intersection Points of a Curve with the Y-Axis and Other Curves in Python?

Determining the Zero Intersection of a Curve

In Python, finding the exact point where a curve intersects the y-axis (y=0) can be challenging. A numpy array may represent a curve, but it does not provide a direct method for identifying zeros.

To address this issue, a linear interpolation approach can be employed. The following code demonstrates how to find the exact intersection point:

<code class="python">import numpy as np
import matplotlib.pyplot as plt

# Generate sample data
N = 750
x = 0.4 + np.sort(np.random.rand(N)) * 3.5
y = (x - 4) * np.cos(x * 9.) * np.cos(x * 6 + 0.05) + 0.1

# Define a function to find roots (zeros)
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)

# Find the intersection point
z = find_roots(x, y)

# Plot the curve and the intersection point
plt.plot(x, y)
plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4)
plt.show()</code>
Copy after login

This script will generate a plot showing the curve and a marker at the exact intersection point with the y-axis.

Finding Intercepts at Non-Zero Values

To find intercepts at non-zero values (e.g., y0), the same approach can be applied by finding the zeros of the curve shifted by y0:

<code class="python">y0 = 1.4
z = find_roots(x, y - y0)
# ...
plt.plot(z, np.zeros(len(z)) + y0)</code>
Copy after login

Intersection of Two Curves

To find the intersection point between two curves, find the zeros of the difference between the two curves:

<code class="python">x = .4 + np.sort(np.random.rand(N)) * 3.5
y1 = (x - 4) * np.cos(x * 9.) * np.cos(x * 6 + 0.05) + 0.1
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")</code>
Copy after login

The above is the detailed content of How to Find the Intersection Points of a Curve with the Y-Axis and Other Curves in Python?. For more information, please follow other related articles on the PHP Chinese website!

source:php
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!