zoukankan      html  css  js  c++  java
  • Python科学计算系列11—几何绘图

    1.显函数图像绘制

    例:绘制y=sinx的图像

    代码如下:

    from sympy import *
    
    x = symbols('x')
    plot(sin(x), (x, -2 * pi, 2 * pi))

    运行结果:

    2.隐函数图像绘制

    例:绘制11x²-12|x|y+11y²=121的图像

    代码如下:

    from sympy import *
    
    x, y = symbols('x y')
    plot_implicit(Eq(11 * x ** 2 - 12 * abs(x) * y + 11 * y ** 2, 121))

    运行结果:

    3.三维图像绘制

    例:绘制y=xe^(-x²-y²)的图像

    代码如下:

    from sympy import *
    from sympy.plotting import plot3d
    
    x, y, z = symbols('x y z')
    plot3d(x * exp(-x ** 2 - y ** 2), (x, -3, 3), (y, -2, 2))

    运行结果:

    4.三维爱心图像

    代码如下:

    from mpl_toolkits.mplot3d import Axes3D
    from matplotlib import cm
    from matplotlib.ticker import LinearLocator, FormatStrFormatter
    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def heart_3d(x, y, z):
        return (x ** 2 + (9 / 4) * y ** 2 + z ** 2 - 1) ** 3 - x ** 2 * z ** 3 - (9 / 80) * y ** 2 * z ** 3
    
    
    def plot_implicit(fn, bbox=(-1.5, 1.5)):
        xmin, xmax, ymin, ymax, zmin, zmax = bbox * 3
        fig = plt.figure()
        ax = fig.add_subplot(111, projection='3d')
        A = np.linspace(xmin, xmax, 100)
        B = np.linspace(xmin, xmax, 40)
        A1, A2 = np.meshgrid(A, A)
    
        for z in B:
            X, Y = A1, A2
            Z = fn(X, Y, z)
            cset = ax.contour(X, Y, Z + z, [z], zdir='z', colors=('r',))
    
        for y in B:
            X, Z = A1, A2
            Y = fn(X, y, Z)
            cset = ax.contour(X, Y + y, Z, [y], zdir='y', colors=('red',))
    
        for x in B:
            Y, Z = A1, A2
            X = fn(x, Y, Z)
            cset = ax.contour(X + x, Y, Z, [x], zdir='x', colors=('red',))
        ax.set_zlim3d(zmin, zmax)
        ax.set_xlim3d(xmin, xmax)
        ax.set_ylim3d(ymin, ymax)
        # 取消坐标轴显示
        plt.axis('off')
        plt.show()
    
    
    if __name__ == '__main__':
        plot_implicit(heart_3d)

    运行结果:

  • 相关阅读:
    Spring AOP
    TestNG配合ant脚本进行单元测试
    TestNG配合catubuter统计单元测试的代码覆盖率
    junit配合catubuter统计单元测试的代码覆盖率
    TestNG离线安装步骤
    spring 整合redis集群中使用@autowire无效问题的解决办法
    @Repository、@Service、@Controller 和 @Component
    用VMware克隆CentOS 6.5如何进行网络设置
    centos 6.5 dhcp桥接方式上网络设置
    centos 6.5 关闭防火墙
  • 原文地址:https://www.cnblogs.com/wanyuan/p/13210140.html
Copyright © 2011-2022 走看看