Python math 庫教學指南

Python math 庫教學指南

一、概述

math 庫是 Python 標準庫中用于數學運算的核心模塊,提供以下主要功能:

  1. 數學常數(如 π 和 e)
  2. 基本數學函數(絕對值、取整等)
  3. 冪與對數運算
  4. 三角函數
  5. 雙曲函數
  6. 特殊函數(伽馬函數等)

與內置運算符的區別:

  • 提供更專業的數學函數實現
  • 包含高等數學運算方法
  • 支持浮點數特殊處理

二、使用詳解

1. 基礎使用

import math# 基本運算
print(math.sqrt(25))   # 5.0(平方根)
print(math.fabs(-3.14))  # 3.14(絕對值)
print(math.factorial(5))  # 120(階乘)# 取整函數
print(math.ceil(3.2))    # 4(向上取整)
print(math.floor(3.9))   # 3(向下取整)
print(math.trunc(-3.7))  # -3(截斷小數)

2. 指數與對數

# 指數運算
print(math.pow(2, 3))   # 8.0
print(math.exp(2))      # e2 ≈ 7.389# 對數運算
print(math.log(100, 10))  # 2.0
print(math.log10(1000))   # 3.0
print(math.log2(1024))    # 10.0

3. 三角函數(弧度制)

angle = math.radians(60)  # 角度轉弧度
print(math.sin(angle))    # ≈0.866(正弦值)
print(math.cos(math.pi/4))  # ≈0.707(余弦值)
print(math.degrees(math.pi))  # 180.0(弧度轉角度)

4. 數學常數

print(math.pi)   # 3.141592653589793
print(math.e)    # 2.718281828459045
print(math.inf)  # 無窮大
print(math.nan)  # 非數字

5. 進階函數

# 伽馬函數
print(math.gamma(5))  # 24.0(等價于4!)# 距離計算
print(math.hypot(3, 4))  # 5.0(直角三角形斜邊)# 組合函數
print(math.comb(10, 3))  # 120(組合數C(10,3))

三、綜合應用案例

案例1:計算圓相關參數

def circle_calculations(r):circumference = 2 * math.pi * rarea = math.pi * r**2return circumference, areaprint(circle_calculations(5))
# 輸出:(31.41592653589793, 78.53981633974483)

案例2:二次方程求解

def solve_quadratic(a, b, c):discriminant = b**2 - 4*a*cif discriminant < 0:return Nonesqrt_disc = math.sqrt(discriminant)x1 = (-b + sqrt_disc) / (2*a)x2 = (-b - sqrt_disc) / (2*a)return x1, x2print(solve_quadratic(1, -5, 6))  # (3.0, 2.0)

案例3:三角函數應用

def triangle_height(angle_deg, base):angle_rad = math.radians(angle_deg)return base * math.tan(angle_rad)print(f"{triangle_height(30, 10):.2f}米")  # 輸出:5.77米

四、注意事項

  1. 輸入值范圍限制:

    • 負數平方根會引發 ValueError
    • 非數值輸入會引發 TypeError
  2. 精度問題:

    print(0.1 + 0.2 == 0.3)  # False
    print(math.isclose(0.1+0.2, 0.3))  # True
    
  3. 與內置函數的區別:

    • math.sqrt() 比 **0.5 更準確
    • math.pow() 處理浮點指數更專業

五、總結建議

  1. 優先使用 math 庫進行復雜數學運算
  2. 注意角度與弧度的轉換
  3. 處理邊界值時使用 math.isclose() 代替直接比較
  4. 需要更高精度時考慮使用 decimal 模塊

建議學習者通過以下方式加深理解:

  1. 嘗試實現自己的數學函數并與 math 庫對比
  2. 解決Project Euler等平臺的數學編程問題
  3. 結合matplotlib進行函數可視化

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77855.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77855.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77855.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mac下安裝Python3,并配置環境變量設置為默認

下載Python 訪問Python官方網站 https://www.python.org/ 首先獲得python3安裝路徑 執行命令&#xff1a; which python3 以我這臺電腦為例&#xff0c;路徑為&#xff1a;/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 編輯 bash_profile 文件 然后用 vim 打…

Arduino程序結構詳解與嵌入式開發對比指南

Arduino編程詳解&#xff1a;從基礎到進階實踐 一、Arduino程序的核心架構與擴展設計 1.1 程序框架的深度解析 Arduino程序的基石setup()和loop()函數構成了整個開發體系的核心邏輯。這兩個函數的設計哲學體現了嵌入式系統開發的兩個關鍵維度&#xff1a; 初始化階段&#…

5W1H分析法——AI與思維模型【86】

一、定義 5W1H分析法思維模型是一種通過對問題或事件從原因&#xff08;Why&#xff09;、對象&#xff08;What&#xff09;、地點&#xff08;Where&#xff09;、時間&#xff08;When&#xff09;、人員&#xff08;Who&#xff09;和方法&#xff08;How&#xff09;六個…

css 數字從0開始增加的動畫效果

項目場景&#xff1a; 提示&#xff1a;這里簡述項目相關背景&#xff1a; 在有些時候比如在做C端項目的時候&#xff0c;頁面一般需要一些炫酷效果&#xff0c;比如數字會從小值自動加到數據返回的值 css 數字從0開始增加的動畫效果 分析&#xff1a; 提示&#xff1a;這里填…

CUDA編程 - 如何使用 CUDA 流在 GPU 設備上并發執行多個內核 - 如何應用到自己的項目中 - concurrentKernels

如何使用 CUDA 流在 GPU 設備上并發執行多個內核 一、完整代碼與例程目的1.1、通過現實場景來理解多任務協作&#xff1a;1.2、完整代碼&#xff1a; 二、代碼拆解與復用2.1、編程模版 一、完整代碼與例程目的 項目地址&#xff1a;https://github.com/NVIDIA/cuda-samples/tr…

vue3 打字機效果

打字機效果 因后端返回的數據也是通過microsoft/fetch-event-source 一句一句流式返回 但是前端展示效果想要實現打字機效果 代碼如下 <template><div><div class"text-container"><span class"text-content">{{ displayText }…

線上JVM調優與全棧性能優化 - Java架構師面試實戰

線上JVM調優與全棧性能優化 - Java架構師面試實戰 本文通過一場互聯網大廠的Java架構師面試&#xff0c;深入探討了線上JVM調優、OOM定位、死鎖定位、內存和CPU調優、線程池調優、數據庫調優、緩存調優、網絡調優、微服務調優及分布式調優等關鍵領域。 第一輪提問 面試官&am…

【Android】輕松實現實時FPS功能

文章目錄 實時FPS 實時FPS 初始化 choreographer Choreographer.getInstance();lastFrameTimeNanos System.nanoTime();choreographer.postFrameCallback(frameCallback);監聽并顯示 Choreographer.FrameCallback frameCallback new Choreographer.FrameCallback() {Overri…

GD32F407單片機開發入門(十九)DMA詳解及ADC-DMA方式采集含源碼

文章目錄 一.概要二.GD32F407VET6單片機DMA外設特點三.GD32單片機DMA內部結構圖四.DMA各通道請求五.GD32F407VET6單片機ADC-DMA采集例程六.工程源代碼下載七.小結 一.概要 基本概念&#xff1a; DMA是Direct Memory Access的首字母縮寫,是一種完全由硬件執行數據交換的工作方式…

vue報錯:Error: Cannot find module ‘is-stream‘

此錯誤提示 Cannot find module ‘is-stream’ 表明 Node.js 無法找到 is-stream 模塊。一般而言&#xff0c;這是由于項目中未安裝該模塊所導致的。 解決方案: //npm npm install is-stream //yarn yarn add is-stream安裝后檢查 安裝完成之后&#xff0c;你可以再次運行項目…

全局事件總線EventBus的用法

全局事件總線 EventBus 在前端開發中是一種用于實現組件間通信的機制&#xff0c;適用于兄弟組件或跨層級組件間的數據傳遞。 1. 創建全局 EventBus 實例 在前端項目中&#xff0c;先創建一個全局的 EventBus 實例。在 Vue 中&#xff0c;可以通過創建一個新的 Vue 實例來實現…

SpringBoot 設置HTTP代理訪問

SpringBoot 設置HTTP代理訪問 遇到這樣的一個場景&#xff0c;代碼部署到私有服務器上去之后&#xff0c;這臺私有服務器a無法直接訪問公網&#xff0c;需要通過代理轉發到另外一臺專門訪問公網的服務器b, 讓服務器b去請求對應的公網ip&#xff0c;于是就需要設置Http代理。 …

在C# WebApi 中使用 Nacos01:基礎安裝教程和啟動運行

一、JDK的安裝 Nacos需要依賴JAVA環境運行,所以需要先安裝JDK 1.檢查是否安裝 可用命令行檢查是否安裝JDK 直接win+r,cmd: java -version 出現這個說明安裝成功 2.下載JDK 訪問官網點擊下載:

cURL 入門:10 分鐘學會用命令行發 HTTP 請求

curl初識 curl 通過 URL 傳輸數據的命令行工具和庫是一個非常強大的命令行工具&#xff0c;用于在網絡上傳輸數據。它支持眾多的協議&#xff0c;像 dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps…

Redis應用場景實戰:穿透/雪崩/擊穿解決方案與分布式鎖深度剖析

一、緩存異常場景全解與工業級解決方案 1.1 緩存穿透&#xff1a;穿透防御的三重門 典型場景 惡意爬蟲持續掃描不存在的用戶ID 參數注入攻擊&#xff08;如SQL注入式查詢&#xff09; 業務設計缺陷導致無效查詢泛濫 解決方案進化論 第一層防護&#xff1a;布隆過濾器&am…

C# 高效操作excel文件

C#高效操作Excel文件指南 一、主流Excel處理方案對比 方案類型特點適用場景??EPPlus??第三方庫功能全面&#xff0c;性能好&#xff0c;支持.xlsx復雜Excel操作&#xff0c;大數據量??NPOI??第三方庫支持.xls和.xlsx&#xff0c;功能全面兼容舊版Excel文件??Closed…

Rust 學習筆記:結構體(struct)

Rust 學習筆記&#xff1a;結構體&#xff08;struct&#xff09; Rust 學習筆記&#xff1a;結構體&#xff08;struct&#xff09;結構體的定義和實例化使用字段初始化簡寫用 Struct Update 語法從其他實例創建實例使用沒有命名字段的元組結構來創建不同的類型沒有任何字段的…

Dify Agent節點的信息收集策略示例

Dify Agent節點的信息收集策略示例 0. 安裝"對話 Agent"插件1. 創建一個 Chatflow2. 創建一個 Agent 節點3. 創建一個條件分支節點4. 在IF分支創建一個LLM節點5. 創建一個直接回復節點6. 在ELSE分支創建一個直接回復節點7. 分布并預覽 0. 安裝"對話 Agent"…

Qt/C++開發監控GB28181系統/獲取設備信息/設備配置參數/通道信息/設備狀態

一、前言 設備注冊成功后&#xff0c;接下來要做的就是獲取設備的信息&#xff0c;尤其是通道信息&#xff0c;根據國標協議&#xff0c;永遠只有兩個層級&#xff0c;一個是設備&#xff0c;然后就是設備下面多個通道&#xff0c;設備編碼在整個系統中唯一&#xff0c;通道編…

金融風控的“天眼”:遙感技術的創新應用

在金融市場的復雜博弈中&#xff0c;風險管控一直是金融機構的核心競爭力。然而&#xff0c;傳統的風控手段在應對現代金融市場的快速變化時&#xff0c;往往顯得捉襟見肘。 如今&#xff0c;遙感技術的創新應用為金融風控帶來了全新的視角和手段。星圖云開放平臺的遙感金融立體…