Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mencari Titik Persilangan Lengkung dengan Paksi-Y dan Lengkung Lain dalam Python?

Bagaimana untuk Mencari Titik Persilangan Lengkung dengan Paksi-Y dan Lengkung Lain dalam Python?

Barbara Streisand
Lepaskan: 2024-10-21 07:12:02
asal
813 orang telah melayarinya

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

Menentukan Persilangan Sifar Lengkung

Dalam Python, mencari titik tepat di mana lengkung bersilang dengan paksi-y (y=0 ) boleh mencabar. Tatasusunan numpy mungkin mewakili lengkung, tetapi ia tidak menyediakan kaedah langsung untuk mengenal pasti sifar.

Untuk menangani isu ini, pendekatan interpolasi linear boleh digunakan. Kod berikut menunjukkan cara mencari titik persilangan yang tepat:

<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>
Salin selepas log masuk

Skrip ini akan menghasilkan plot yang menunjukkan lengkung dan penanda pada titik persilangan tepat dengan paksi-y.

Mencari pintasan pada Nilai Bukan Sifar

Untuk mencari pintasan pada nilai bukan sifar (cth., y0), pendekatan yang sama boleh digunakan dengan mencari sifar lengkung yang dianjak oleh y0:

<code class="python">y0 = 1.4
z = find_roots(x, y - y0)
# ...
plt.plot(z, np.zeros(len(z)) + y0)</code>
Salin selepas log masuk

Persilangan Dua Lengkung

Untuk mencari titik persilangan antara dua lengkung, cari sifar bagi perbezaan antara dua lengkung:

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mencari Titik Persilangan Lengkung dengan Paksi-Y dan Lengkung Lain dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan