Skip to content
Advertisement

How to plot a function with a vector and matrix in python?

But function f is a problem because I don’t know how to combine the mesh with the matrix, is there a smart way to solve this problem?

Advertisement

Answer

It looks like your code for g is very close to the one for f. You could just define your M matrix and include it in the matrix multiplication. See code below for more details:

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))

The output gives: Diagonal values: [8.62030848 2.68367524] And the plot: enter image description here

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement