【发布时间】:2020-08-15 05:38:03
【问题描述】:
下一张图片
可以使用下一个代码生成
下一个代码
#%%
try:
from IPython import get_ipython
get_ipython().magic('clear') # to clear the terminal
get_ipython().magic('reset -f') # to reset the kernel
# get_ipython().magic('matplotlib qt') # plots out line
get_ipython().magic('matplotlib', 'inline') # plots in line
except:
pass
import numpy as np
from numpy import *
import sympy as smp
from sympy import *
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
import scipy as scp
from scipy.optimize import *
from scipy.integrate import *
import control as co
# import pandas as pd
# import sklearn as sk
# import math
# import os
# import tarfile
# import urllib
np.set_printoptions(precision=4, suppress=True) # number of decimals in the expre.
init_printing(use_unicode=True) # to show in pretty symboic
#%%
x , n = symbols( 'x n' )
T = 2*pi
xt = np.arange( 0 , 2*np.pi , 1e-3)
xt = np.array([ xt ])
armo = 50
#%%
a0 = (1/(T))*( integrate( 1 , (x , 0 , T/2) ) +\
integrate( -1 , (x , T/2 , T) ) )
a0 = simplify(a0)
an = (2/(T))*( integrate( 1*cos((2*pi/T)*n*x) , (x , 0 , T/2) ) +\
integrate( -1*cos((2*pi/T)*n*x) , (x , T/2 , T) ) )
an = simplify(an)
bn = (2/(T))*( integrate( 1*sin((2*pi/T)*n*x) , (x , 0 , T/2) ) +\
integrate( -1*sin((2*pi/T)*n*x) , (x , T/2 , T) ) )
bn = simplify(bn)
#%%
S, S1, S2 = 0, 0, 0
M1 = np.zeros( (armo , len( xt[0,:] ) ) )
M2 = np.zeros( (armo , len( xt[0,:] ) ) )
ante = np.zeros( ( 1 , len( xt[0,:] ) ) )
ArC = np.zeros( ( 1 , armo ) )
ArCn = np.array( [np.arange( 1 , armo+1 ) ] )
for N in range( 1 , armo+1 ):
An = float( an.subs( n , N ).evalf() )
Bn = float( bn.subs( n , N ).evalf() )
S1 = An*cos( (2*pi/T)*N*x )
S2 = Bn*sin( (2*pi/T)*N*x )
Lda = lambdify( x , S1 , 'numpy' )
Ldb = lambdify( x , S2 , 'numpy' )
M1[[N-1],:] = ( Lda( xt )+Ldb( xt ) )
if (N == 1):
M2[[N-1],:] = M1[[N-1],:]
if (N > 1):
M2[[N-1],:] = M2[[N-2],:] + M1[[N-1],:]
ArC[[0],N-1] = np.max( M1[[N-1],:] )
Fourier = a0 + sum(M1 , axis=0)
fig = plt.figure()
ax = fig.add_subplot( projection='3d' )
ax.plot_surface(ArCn.T , xt , M2)
它是周期函数在其谐波中的 3D 表示。我希望你帮我弄两件东西。
第一个,擦掉表面的白线。
第二个(更难),用颜色绘制表面。例如,在第一次谐波的地方,涂上绿色,然后,当我们走到图形底部时,绿色变成蓝色。这可能吗?我该怎么做?
【问题讨论】:
标签: python image matplotlib plot