首页 > 解决方案 > 如何在python中用向量和矩阵绘制函数?

问题描述

但是函数 f 是一个问题,因为我不知道如何将网格与矩阵结合起来,有没有聪明的方法来解决这个问题?

标签: pythonmatplotlib

解决方案


看起来您的代码 for 与 for 的代码g非常接近f。您可以只定义您的 M 矩阵并将其包含在矩阵乘法中。有关更多详细信息,请参见下面的代码:

import numpy as np 
import matplotlib.pyplot as plt 

def f_function(diagonal_values):
  fig = plt.figure(figsize=(15,8))
  data = np.linspace(-4, 4, 20)

  x_1, x_2  = np.meshgrid(data, data, indexing="ij")

  fx = np.zeros_like(x_1)
  #Defining M
  M=np.diag(diagonal_values)
  print(M)
  for i in range(data.shape[0]):
      for j in range(data.shape[0]):
          x = np.array([x_1[i,j], x_2[i,j]])
          f = x.T  @ M @ x 
          fx[i,j] = f 

  ax = fig.add_subplot(121, projection="3d")
  surf = ax.plot_surface(x_1, x_2, fx)
  ax.set_xlabel("x_1")
  ax.set_ylabel("x_2")
  ax.set_zlabel("f")

#Randomly picking diagonal values 
diag_values=np.random.uniform(0,10,2)
print('Diagonal values: '+str(diag_values))
f_function(np.array(diag_values))

输出给出: Diagonal values: [8.62030848 2.68367524] 和情节: 在此处输入图像描述


推荐阅读