私の多変数微積分クラスのプロジェクトに取り組んでいます。私の目的は、任意の関数f(x、y)をグラフ化し、等高線プロットを使って、/dx、df/dy)と関数の勾配のための震度プロットがありますが、より複雑な関数をグラフにしながら問題があります。任意の3次元関数をグラフ化しようとするとエラーが発生する
f(x、y)=(x + y)** 2のような関数入力の場合、プログラムはうまく動作しますが、より複雑な数学的概念を必要とする入力。X、Y)=罪(のx * yが)私はエラーを取得する:
TypeError例外:長さだけ-1配列はPythonのスカラーに変換することができ
stackoverflowの上のこれの例がたくさんあります、私のプログラムでは、任意の関数を作成するためにsympyに依存していて、配列計算にはnumpyが必要なので、この問題を回避する方法はわかりません。
'''
Imports
'''
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
import numpy as np
from sympy import *
x = Symbol('x')
y = Symbol('y')
lims = [-10, 10]
function = sin(x+y)
lam_function = lambdify((x,y),function)
fig = plt.figure()
ax = fig.gca(projection='3d')
gX, gY = np.meshgrid(np.arange(lims[0], lims[1], 0.05),
np.arange(lims[0], lims[1], 0.05))
z = lam_function(gX, gY)
plot = ax.plot_surface(gX, gY, z, cmap=plt.cm.jet, linewidth=0)
plt.colorbar(plot, cmap=plt.cm.jet)
plt.show()
ユーザーの入力に頼らないようにサンプルコードを調整できますか?それは、コードを入力している入力がわからないため、エラーを再現することはできません。また、使用していないと思われるたくさんのものをインポートしているため、コード内で何が起こっているのか分かりにくくなります。 – Blckknght
@Blckknght私は、エラーを発生させ、すべての無駄なインポートを削除した正確な関数を示すコードを編集しました。 – BooleanDesigns