3

私は現在、リンクされたr = 4 * sin(2 * theta)に基づいて、matplotlib を使用して極面の方程式をグラフ化しようとしています。これが私のコードです:

import numpy as np
import matplotlib.pyplot as plt
from math import sin, pi

def plot_polar(f, start=0, end=2*pi):
    theta = np.linspace(start, end, 1000)
    r = map(f, theta)

    ax = plt.subplot(111, polar=True)
    ax.plot(theta, r)
    ax.grid(True)

    plt.show()

plot_polar(lambda theta: 4 * sin(2 * theta))

これにより、次の出力が得られます。

正しくない

ただし、Wolfram Alpha によると、正しいグラフは次のようになります。

正しい

私のコードでは、グラフのかなりの部分が欠落しているようです。花弁が 4 つではなく 2 つしかありません。シータが 0 から 2pi になるときに両方の方程式をプロットするようにしました。したがって、同じものが表示されるはずです。

私が間違っていることを誰かが知っていますか?matplotlib の使い方を誤解しているだけなのか、それとも明らかなエラーを見落としているのかはわかりません。

4

3 に答える 3

-1

極関数のトレースにも問題があると思います。(x pos, y pos) 象限、次に (xpos,yneg)、(xneg, yneg)、最後に (xneg, ypos) 象限の線をトレースする必要があります。

それが、これらのプロットの背後にある概念であり、宇宙での物体の移動を理解することにつながりました. 関数をいじって r = sin(4*theta) にすると、Wolfram プロットのようなプロットが得られます。

概念的には、極座標図であっても極座標プロットをプロットし、デカルト座標で終わる問題があるようです。f の abs 呼び出しは問題を分類すると思いますが、逆の r 値をプロットしていることを覆い隠し、これを不連続関数にしていますが、そうではありません。

体の動きの関係で言えば、重力の逆転に似ていると思います!!

于 2014-10-02T06:59:40.487 に答える