qq_41660047 2019-10-03 08:52 采纳率: 0%
浏览 682
已结题

请教各位大神如何用Python画出如下函数图形

(x^2+9/4*y^2+z^2-1)^3-x^2*z^3-9/80*y^2*z^3==0

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-10-03 09:16
    关注

    你有三个变量,可以在一定区域内,以某个间隔精度,遍历x y,利用根据方程算出z,这个方程式你可以自己转换下。
    然后调用Matplotlib绘三维图
    https://blog.csdn.net/jasonzhoujx/article/details/81780774


    补充一下,数值算法理论上可行,代码如下

    import numpy as np
    import matplotlib.pyplot as plt
    import math
    import mpl_toolkits.mplot3d
    import sympy as sympy
    
    
    def solvez(x, y):
        z = sympy.symbols('z')
        result = 0.0    
        try:
            result = float(sympy.solve((x**2+9/4*y**2+z**2-1)**3-x**2*z**3-9/80*y**2*z**3, z)[0].evalf())
        except TypeError as e:
            pass
        return result
    
    fig = plt.figure()  #定义新的三维坐标轴
    ax3 = plt.axes(projection='3d')
    
    #定义三维数据
    xx = np.arange(-2,2,0.1)
    yy = np.arange(-2,2,0.1)
    X, Y = np.meshgrid(xx, yy)
    
    Z = np.zeros((len(X), len(Y)), dtype=float)
    
    
    for i in range(0,len(X)):
        for j in range(0,len(Y)):
            Z[i][j] = solvez(X[i][j],Y[i][j])
    
    #作图
    ax3.plot_surface(X,Y,Z,cmap='rainbow')
    #ax3.contour(X,Y,Z, zdim='z',offset=-2,cmap='rainbow)   #等高线图,要设置offset,为Z的最小值
    plt.show()
    

    实际上比较困难,在于没有办法知道解的可行范围,算出来区域之外无解都是复数解

    评论

报告相同问题?

悬赏问题

  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)