qq_41660047 2019-10-03 11:56 采纳率: 0%
浏览 305
已结题

求高手看看我这段代码哪有问题,python语句

import sympy # 引入解方程的专业模块sympy
x,y,z = sympy.symbols("x y z") # 申明未知数"x"和"y"
a = sympy.solve([(x**2 + 9/4*y**2 + z**2 - 1)**3 -x**2 * z**3 - 9/80 * y**2 * z**3],x-1,y-6,[x,y,z]) # 写入需要解的方程组
print(a)

运行后报错
TypeError Traceback (most recent call last)
in ()
1 import sympy # 引入解方程的专业模块sympy
2 x,y,z = sympy.symbols("x y z") # 申明未知数"x"和"y"
----> 3 a = sympy.solve([(x**2 + 9/4*y**2 + z**2 - 1)**3 -x**2 * z**3 - 9/80 * y**2 * z**3],x-1,y-6,[x,y,z]) # 写入需要解的方程组
4 print(a)

D:\Anaconda3\lib\site-packages\sympy\solvers\solvers.py in solve(f, symbols, **flags)
895 exclude = [exclude]
896 exclude = set().union(
[e.free_symbols for e in sympify(exclude)])
--> 897 symbols = [s for s in symbols if s not in exclude]
898
899 # real/imag handling -----------------------------

D:\Anaconda3\lib\site-packages\sympy\solvers\solvers.py in (.0)
895 exclude = [exclude]
896 exclude = set().union(*[e.free_symbols for e in sympify(exclude)])
--> 897 symbols = [s for s in symbols if s not in exclude]
898
899 # real/imag handling -----------------------------

TypeError: unhashable type: 'list'

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-10-03 11:59
    关注
    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()
    

    不谈这个代码是否可行,仅仅为了写一个可以运行的程序,看我这里。如果你非要按照某些网友的说法的话。

    评论

报告相同问题?

悬赏问题

  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。