使用Python玩轉高等數學(5):三角函數

2021-01-14 使用Python玩轉數學
從三角函數開始,我們使用matplotlib繪製函數圖像,matplotlib是圖形繪製庫,使用matplotlib可以方便的繪製函數圖形,以及直方圖、條形圖、散點圖等統計圖形。matplotlib的繪圖命令和matlab的繪圖命令基本相似,在使用上可以互相借鑑。安裝matplotlib最簡單的方法就是在作業系統的命令行窗口分別輸入並執行下面的命令:
python -m pip install -U pip setuptoolspython -m pip install -U matplotlib

使用matplotlib繪圖,會用到Numpy庫,Numpy庫主要用於科學計算。編寫Python程序解決數學問題,sympy庫、matplotlib庫、Numpy庫是必然要用到的,讀者還需要掌握這些庫的用法。在作業系統的命令行窗口輸入並執行下面的命令安裝Numpy庫:
#導入numpy庫import numpy as np#導入繪圖工具庫import matplotlib.pyplot as plt# np的linspace函數在指定的間隔範圍內返回均勻間隔的一組數值# 例如:np.linspace(start,end,n=50),在start- end,均勻的返回n個數值# 定義了一個numpy的數組x,從-2π到2π,共200個值x=np.linspace(-2*np.pi,2*np.pi,200,endpoint=True)#對x進行cos計算cos= np.cos(x)#設置cos圖像的線條顏色、線條粗細和圖像標籤標籤plt.plot(x,cos,color='red',linewidth=1.5,label='cos')#對x進行sin計算sin= np.sin(x)#設置sin圖像的線條顏色、線條粗細和圖像標籤標籤plt.plot(x,sin,color='blue',lw=2.5,label='sin')#設置圖例顯示位置plt.legend(loc='lower left')
#設定x軸範圍plt.xlim(-2*np.pi*1.1,2*np.pi*1.1)#設定y軸範圍plt.ylim(cos.min()*1.1,cos.max()*1.1)
#設置X軸刻度值plt.xticks( [-2*np.pi,-3*np.pi/2,-np.pi,-np.pi/2,0,np.pi/2,np.pi,3*np.pi/2,2*np.pi], [r'-$2\pi$',r'-$3\pi/2$',r'-$\pi$',r'-$\pi/2$','0',r'$\pi/2$',r'$\pi$',r'-$3\pi/2$',r'$2\pi$'] )
#設置Y軸刻度值plt.yticks([-1,0,1])#通過plt.gca()獲取坐標軸對象 然後設置屬性ax=plt.gca()#隱藏top和right周ax.spines['top'].set_color("none")ax.spines['right'].set_color("none")#把左下設置為0點ax.spines['left'].set_position(('data',0))ax.spines['bottom'].set_position(('data',0))
plt.show()

使用matplotlib繪製函數圖像,要比sympy麻煩一些,繪圖前要創建繪圖需要的數據,對坐標軸進行設置。程序首先調用Numpy庫的linspace()函數,創建繪製三角函數圖像需要的數據,即三角函數變量x的取值範圍。linspace()函數在指定的間隔範圍內返回均勻間隔的一組數值,x的取值範圍為-2π到+2π範圍,在該範圍內均勻取200個數值。np.cos(x)返回x取不同值時cos的函數值,返回一個存儲cos函數值的列表對象。matplotlib庫pyplot模塊的plot()函數使用給出的數據在坐標軸上繪製曲線,參數x和cos是要繪製的數據點,color是曲線的顏色,lw是曲線的寬度,label是標識曲線的標籤。pyplot模塊的legend()函數設置圖例的位置,當需要在一個坐標軸上繪製多條曲線時,顯示圖例是不錯的繪圖方法。pyplot模塊的xlim()函數設置坐標軸的取值範圍,X軸的取值範圍為-2π、-3π/2、π、-π/2、0,π/2、π、3π/2、2π。Y軸的取值範圍為cos列表元素的最小值和cos列表元素的最大值,即1和-1。pyplot模塊的xticks()函數設置X軸刻度的顯示樣式,若不設置顯示樣式,matplotlib會把X軸刻度顯示為數值,這裡希望顯示為弧度。「-$\pi$」為laText排版系統的語法,在python中使用laText,需要在文本的前後加上$符號,pi是π,matplotlib會自動解析laText內容並排版輸出。最後調用pyplot模塊的gca()函數獲取軸對象,隱藏top和right軸,matplotlib在繪圖時默認會有4個軸,兩個橫軸和兩個豎軸。

觀察函數圖像,發現y=sin(x)和y=cos(x)都是以2π為周期的周期函數,它們的定義域都是區間(-∞,+∞),值域都是閉區間[-1,1],自變量x的單位是弧度。y=sin(x)和y=cos(x)函數的最大值是1,最小值是-1。y=sin(x)在(-π/2,π/2)上單調增加,函數的周期是2π,因此y=sin(x)在區間[2kπ-π/2,2kπ+π/2]上單調增加,k為整數。同理,y=sin(x)在區間[2kπ+π/2,2kπ+3π/2]上單調減少。從函數圖像中還發現,y=sin(x)關於原點對稱,是奇函數,y=cos(x)關於Y軸對稱,是偶函數。

例2 繪製tan(x)函數圖像

#導入numpy庫import numpy as np#導入繪圖工具庫import matplotlib.pyplot as pltx=np.linspace(-2*np.pi,2*np.pi,200,endpoint=True)#對x進行tan計算tan= np.tan(x)#劃分曲線,分別設置曲線樣式ym1 = np.ma.masked_where(tan > 0, tan)ym2 = np.ma.masked_where(tan < 0, tan) #繪製曲線lines = plt.plot(x,tan,x,ym1,x,ym2,label='tan')#用紅色虛線繪製正切函數豎直漸進線plt.setp(lines[0], color='red',linestyle='dashed',linewidth=1)#用藍色線繪製曲線plt.setp(lines[1], color='blue',linewidth=1)plt.setp(lines[2], color='blue',linewidth=1)#設定x軸範圍plt.xlim(-2*np.pi*1.1,2*np.pi*1.1)#設定y軸範圍plt.ylim(-9,9)#設置X軸刻度值plt.xticks(    [-2*np.pi,-3*np.pi/2,-np.pi,-np.pi/2,0,np.pi/2,np.pi,3*np.pi/2,2*np.pi],    [r'-$2\pi$',r'-$3\pi/2$',r'-$\pi$',r'-$\pi/2$','0',r'$\pi/2$',r'$\pi$',r'$3\pi/2$',r'$2\pi$']        )
#設置Y軸刻度值plt.yticks(list(range(-9,10,1)))#通過plt.gca()獲取坐標軸對象 然後設置屬性ax=plt.gca()#隱藏top和right周ax.spines['top'].set_color("none")ax.spines['right'].set_color("none")#把左下設置為0點ax.spines['left'].set_position(('data',0))ax.spines['bottom'].set_position(('data',0))plt.show()

Numpy庫ma模塊的masked_where函數從給定的數據集中選取符合條件的數據並進行屏蔽,masked_where(tan > 0, tan)會從tan數據集選取值大於0的數據,對這些數據進行屏蔽,並返回沒有被屏蔽的數據集。plot()函數可以繪製多條曲線,依次傳入繪製曲線的數據集即可。pyplot模塊的setp()函數可以設置每條繪製曲線的樣式。觀察函數圖像,發現tan(x)函數以π為周期,向Y軸兩端無限延伸,沒有最大值,也沒有最小值,值域為全體實數。進一步觀察發現,函數曲線在±π/2或kπ+π/2(k為整數)處沒有值,曲線只是無限接近該值。因為根據定義,tan(α)=y/x,p=π/2時,x=0無意義,正切值不存在。tan(x)函數的定義域為{x|x≠(πbai/2)+kπ,k∈Z}。研究三角函數時,掌握三角函數之間的關係是非常重要的,可以通過三角函數之間的關係由一個三角函數推導出其它三角函數。根據sin^2α+cos^2α=1關係,sin(a)函數可推導出cos(a)函數,cos(a)函數可推導出sin(a)函數。根據tan(a) = sin(a)/cos(a)關係,sin(a)函數和cos(a)函數可推導出tan(a)函數。










Python從入門到精通



課程從初學者角度出發,以通俗易懂的語言,豐富的實踐案例,讓初學者能夠快速入門Python編程,全面掌握Python編程技能,具備開發網絡爬蟲、數據分析和機器學習的編程能力。在課程內容安排上,提供了圖文課程、視頻課程和課程考核,保障了學習效果和質量。課程適合16周歲以上人群學習。





相關焦點

  • 2012成人高考專升本高等數學常用公式:三角函數
    2012成人高考專升本高等數學常用公式:三角函數 http://chengkao.eol.cn  來源:  作者:安通學校  2012-09-21  大 中 小 免責聲明:
  • 2016高考數學複習方法總結:玩轉三角函數
    無人不知無人不曉,三角函數是高中數學中基本的初等函數之一,該部分內容歷來是高考重點熱點之一,再不學會三角函數你就垮了!別擔心,一大波福利正趕來...花幾分鐘讀完這篇文章吧,輕輕鬆鬆玩轉三角函數不是夢,新技能get√。   三角函數的學習要分為不同的方面,如三角函數的重要的性質、三角函數那些恆等變化等。
  • 高等數學入門——基本導數公式的推導
    系列簡介:這個系列文章講解高等數學的基礎內容,注重學習方法的培養,對初學者不易理解的問題往往會不惜筆墨加以解釋。
  • 自考的高等數學難不難?
    自考高等數學難不難?關於這個問題中國教育在線自學平臺小編就簡單為大家說一下。點擊進入:自考報名有疑問、不知道如何選擇主考院校及專業、自考當地政策不了解,點擊立即報考諮詢》》
  • 不定積分分部積分法,三角函數眾神歸位.@海離薇.
    #不定積分#高等數學高數微積分集思廣益,出處是貼吧大神@愛佛費克斯+智力超群體育生:阿彝,三角函數∫(x^2)/((cosx+xsinx)(xcosx-sinx))dx;我講方言用分部積分法,大刀闊斧燒香拜佛。#轉發微博關注我就屏蔽我吧# @海離薇。 第一題是∫(x+sinxcosx)/(cosx-xsinx)^2dx。第二題是∫(x^2)/(cosx+xsinx)²dx。
  • Python內置模塊math介紹
    中內置的數學模塊,封裝了許多浮點數的數學運算函數# 可以讓我們查看每個函數的使用方法help(math.pow)# 冪運算:求2的5次方 ,其它寫法 2**5,內置函數pow(2,5),math.pow(2,5)print(2**5)print(pow(2, 5))print(math.pow(
  • 高等數學入門——利用基本積分公式和性質計算不定積分的方法和典型例題
    系列簡介:這個系列文章講解高等數學的基礎內容,注重學習方法的培養,對初學者不易理解的問題往往會不惜筆墨加以解釋。
  • 必備知識 | 三角函數與反三角函數
    其他聯繫方式:(QQ郵箱)2589867447@qq.com三角函數是基本初等函數之一三角函數將直角三角形的內角和它的兩個邊的比值相關聯,也可以等價地用與單位圓有關的各種線段的長度來定義。三角函數在研究三角形和圓等幾何形狀的性質時有重要作用,也是研究周期性現象的基礎數學工具。
  • 用這個神奇的六邊形巧記三角函數
    關注遇見數學, 遇見更精彩的自己三角函數記不住就會成為數學前行路上的一道門檻. 這裡可以利用一個"超級正六邊形"來記憶三角函數公式.查看下面 [遇見數學] 所翻譯的一段視頻來更好了解這個神奇的陣法, 打開記憶宮殿來玩轉三角函數吧. 點擊邊框調出視頻工具條
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    因篇幅有限,以下展示的只是課程裡部分內容如對python課程有更多疑問 請諮詢客服 1零基礎入門全能班 01 –python簡介 02 第一個程序 03-python執行方式和pycharm設置 04-程序的注釋和算術運算符 05 程序執行原理 06變量的使用以及類型 07
  • 代碼詳解:Python虛擬環境的原理及使用
    本指南先介紹虛擬環境的基礎知識以及使用方法,然後再深入介紹虛擬環境背後的工作原理。注意:本指南在macOS Mojave系統上使用最新版本的Python 3.7.x。目錄· 為什麼使用虛擬環境?· 什麼是虛擬環境?· 使用虛擬環境· 管理環境· 虛擬環境如何運行?1.
  • 神經網絡初學者指南:基於Scikit-Learn的Python模塊
    我們將嘗試通過使用人工神經網絡(ANN)來模擬這個過程,我們現在將其稱為神經網絡。 創建神經網絡的過程從最基本的形式單個感知器開始。| 感知器讓我們通過探討感知器開始我們的討論吧。 感知器具有一個或多個輸入、偏置、激活函數和單個輸出。 感知器接收輸入,將它們乘以一些權重,然後將它們傳遞到激活函數以產生輸出。 有許多激活函數可供選擇,例如邏輯函數,三角函數,階躍函數等。
  • 高等數學入門——反函數的求導法則及反三角函數的導數公式總結
    系列簡介:這個系列文章講解高等數學的基礎內容,注重學習方法的培養,對初學者不易理解的問題往往會不惜筆墨加以解釋。
  • 高等數學公式查詢
    高等數學公式查詢直接點擊下方公式名稱,將會收到所對應的公式(不全)
  • 高等數學(微積分)極限求法大全
    (公眾號裡數學公式的顯示很特別,想要更好的閱讀本文,請閱讀原文)高等數學裡, 求極限的技巧特別多, 這也正是因為極限的求法相對比較難
  • 為什麼高校必須要學高等數學?這可能是牛頓的一個陰謀
    到了高中階段,已經開始學習三角函數、簡單的微積分了,這是要追上萊布尼茨和牛頓的腳步嗎?到了大學,直接學高等數學,也就是微積分。我想問,普通人學習微積分到底有什麼用。大多數的大學生,學習微積分,不過就是為了不掛科而已。難道當然,對於需要高等數學為基礎的專業,如物理、經濟等,學習微積分是必須的。但是歷史學、文學、政治學、美術學等學習微積分來幹嘛?
  • 三角函數
    註: 本位是即將於2021年5月由電子工業出版社出版的
  • python使用with as處理文件的讀寫
    在python中使用with語句,可以自動調用close()方法,同時也解決了異常問題。with open('test.txt','w') as f:f.write('Hello, python!')python文件讀寫模式:r:以只讀方式打開文件,指針放到文件的開頭。
  • Python的武器庫04:numpy模塊(上)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以又這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。Python正式由於這些模塊的出現,只要引入這個模塊,調用這個模塊的集成函數,問題迎刃而解;不需要從頭開始,節省了大量的時間。
  • 玩轉Python 中的隨機數
    隨機生成 a 與 b 之間的整數使用 random.randint(a , b) 方法,你可以生成一個 a 與 b 之間的隨機整數,也就是 [a, b] 。當然,如果你想要生成的隨機整數不會包含 b ,也即 [a, b) , 你可以使用 random.randrange() 方法。