【问题标题】:Plotting all of a trigonometric function (x^2 + y^2 == 1) with matplotlib and python使用 matplotlib 和 python 绘制所有三角函数 (x^2 + y^2 == 1)
【发布时间】:2018-08-18 11:54:51
【问题描述】:

作为学习 Matplotlib 和改进数学/编码的练习,我决定尝试绘制一个三角函数(x 平方加上 y 平方等于一)。

三角函数也称为“圆”函数,但我只生成了一半的圆。

#Attempt to plot equation x^2 + y^2 == 1

import numpy as np
import matplotlib.pyplot as plt
import math

x = np.linspace(-1, 1, 21)  #generate np.array of X values -1 to 1 in 0.1 increments
x_sq = [i**2 for i in x]

y = [math.sqrt(1-(math.pow(i, 2))) for i in x]   #calculate y for each value in x
y_sq = [i**2 for i in y]

#Print for debugging / sanity check
for i,j in zip(x_sq, y_sq):
    print('x: {:1.4f}    y: {:1.4f}         x^2: {:1.4f}    y^2: {:1.4f}         x^2 + Y^2 = {:1.4f}'.format(math.sqrt(i), math.sqrt(j), i, j, i+j))

#Format how the chart displays
plt.figure(figsize=(6, 4))
plt.axhline(y=0, color='y')
plt.axvline(x=0, color='y')
plt.grid()

plt.plot(x, y, 'rx')

plt.show()

我想绘制完整的圆圈。我的代码只产生正的 y 值,我想绘制整个圆圈。

这是完整情节的外观。我使用 Wolfram Alpha 来生成它。

理想情况下,我不想要为我完成提升的解决方案,例如使用 matplotlib.pyplot.contour。作为一个学习练习,我想可以说“看到工作”。也就是说,理想情况下,我希望生成所有值并“手动”绘制它们。

我能想到的唯一方法是重新排列方程并生成一组带有计算的 x 值的负 y 值,然后分别绘制它们。我确信有更好的方法来实现结果,并且我确信 Stack Overflow 上的一位专家会知道这些选项是什么。

我们将不胜感激地接受任何帮助。 :-)

【问题讨论】:

    标签: python-3.x matplotlib math trigonometry


    【解决方案1】:

    方程x**2 + y**2 = 1 描述了一个围绕原点半径为1 的圆。 但是假设你还不知道这个,你仍然可以尝试用极坐标写这个方程,

    x = r*cos(phi)
    y = r*sin(phi)
    (r*cos(phi))**2 + (r*sin(phi))**2 == 1
    r**2*(cos(phi)**2 + sin(phi)**2) == 1
    

    由于三角恒等式cos(phi)**2 + sin(phi)**2 == 1 这减少到

    r**2 == 1
    

    因为r 应该是真实的,

    r == 1
    

    (对于任何phi)。

    将其插入 python:

    import numpy as np
    import matplotlib.pyplot as plt
    
    phi = np.linspace(0, 2*np.pi, 200)
    r = 1
    x = r*np.cos(phi)
    y = r*np.sin(phi)
    plt.plot(x,y)
    plt.axis("equal")
    plt.show()
    

    【讨论】:

    • 感谢您的回答。老实说,这远远超出了我的知识范围,除了运行代码之外,我无法理解它。所以我还没有达到我的学习成果。我会离开并尝试学习你分享的概念,如果我能爬上学习曲线,我会回来给你荣誉,我相信你应得的。在那之前,我不想给这个答案打分,因为害怕通过自己的无知误导他人。 :-) 你对我可以学习这些东西的网站有什么建议吗?我最近一直在使用 Khan academy 和 mathisfun.com。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多