下一张图片
可以使用下一个代码生成
下一个代码
#%%
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,T/2) ) +\
integrate( -1,T/2,T) ) )
a0 = simplify(a0)
an = (2/(T))*( integrate( 1*cos((2*pi/T)*n*x),T/2) ) +\
integrate( -1*cos((2*pi/T)*n*x),T) ) )
an = simplify(an)
bn = (2/(T))*( integrate( 1*sin((2*pi/T)*n*x),T/2) ) +\
integrate( -1*sin((2*pi/T)*n*x),T) ) )
bn = simplify(bn)
#%%
S,S1,S2 = 0,0
M1 = np.zeros( (armo,len( xt[0,:] ) ) )
M2 = np.zeros( (armo,:] ) ) )
ante = np.zeros( ( 1,:] ) ) )
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,'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中以谐波表示周期函数。我希望您能帮我得到两件事。
第一个,擦除表面上的白线。
第二个(更难),在表面涂上颜色。例如,先谐波是在哪里,将颜色绘制为绿色,然后,当我们转到图形的底部时,绿色变为蓝色。这可能吗?我该怎么办?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。