
使用python的matplotlib畫正弦函數(shù)圖像,還要用到numpy庫(kù),代碼如下9行所示:

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計(jì)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了張北免費(fèi)建站歡迎大家使用!
import numpy as np;
from matplotlib import pyplot as plt;
fig = plt.figure();
ax2= fig.add_subplot(111);
x=np.arange(0,100)/10;
y=np.sin(x);
ax2.plot(x,y);
plt.savefig('sine.png');
plt.show();
第一步,打開python語言命令窗口,聲明一個(gè)函數(shù)print_color,調(diào)用range遍歷,打印星號(hào),如下圖所示:
第二步,接著調(diào)用第一步中的函數(shù),然后查看打印結(jié)果,可以發(fā)現(xiàn)生成一個(gè)三角形,如下圖所示:
第三步,再次定義一個(gè)函數(shù)four_tu,利用循環(huán)生成星號(hào),注意查看函數(shù)生成的圖形。
第四步,調(diào)用上述步驟中定義的函數(shù),然后查看打印圖形組合的形狀。
第五步,如果在定義的函數(shù)內(nèi),多次調(diào)用print()方法打印星號(hào),會(huì)是什么樣的結(jié)果呢。
第六步,在后續(xù)步驟中,調(diào)用函數(shù)打印結(jié)果,可以發(fā)現(xiàn)生成一個(gè)不規(guī)則的圖形。
一、函數(shù)說明
在使用python作圖時(shí),應(yīng)用最廣的就是matplotlib包,但我們平時(shí)使用matplotlib時(shí)主要是畫一些簡(jiǎn)單的圖表,很少有涉及分段函數(shù)。本次針對(duì)數(shù)值實(shí)驗(yàn)中兩個(gè)較為復(fù)雜的函數(shù),使用其構(gòu)建分段函數(shù)圖像。
二、圖像代碼
2.11、函數(shù)公式:
y=4sin(4πt)-sgn(t-0.3)-sgn(0.72-t)
2.12、代碼如下:
import numpy as np
import matplotlib.pyplot as plt
def sgn(x):
if x0:
return 1
elif x0:
return -1
else:
return 0
t=np.arange(0,1,0.01)
y=[]
for i in t:
y_1=4*np.sin(4*np.pi*i)-sgn(i-0.3)-sgn(0.72-i)
y.append(y_1)
plt.plot(t,y)
plt.xlabel("t")
plt.ylabel("y")
plt.title("Heavsine")
plt.show()
2.13、運(yùn)行結(jié)果如下:
81036331d721706ae12808beb99b9574.png
2.21、函數(shù)公式:
479029.html
2.22、代碼如下:
import numpy as np
import matplotlib.pyplot as plt
def g(x):
if x0:
return x
else:
return 0
t=np.arange(0,1,0.01)
y=[]
for i in t:
y_1=g(i*(1-i))*np.sin((2*np.pi*1.05)/(i+0.05))
y.append(y_1)
plt.plot(t,y)
plt.xlabel("t")
plt.ylabel("y")
plt.title("TimeSine")
plt.show()
不寫出y=f(x)這樣的表達(dá)式,由隱函數(shù)的等式直接繪制圖像,以x2+y2+xy=1的圖像為例,使用sympy間接調(diào)用matplotlib工具的代碼和該二次曲線圖像如下(注意python里的乘冪符號(hào)是**而不是^,還有,python的sympy工具箱的等式不是a==b,而是a-b或者Eq(a,b),這幾點(diǎn)和matlab的區(qū)別很大)
直接在命令提示行的里面運(yùn)行代碼的效果
from sympy import *;
x,y=symbols('x y');
plotting.plot_implicit(x**2+y**2+x*y-1);