C++筆記,數學函數

參考鏈接:C++中數學函數的使用方法_cpp里指數函數-CSDN博客

頭文件?<cmath>?

1. 基本的算數運算函數

1.1?sqrt()?- 計算平方根

  • 功能:計算一個非負實數的平方根。
  • 原型double sqrt(double x);
  • 示例代碼
#include <iostream>
#include <cmath>int main() {double num = 25.0;double result = std::sqrt(num);std::cout << "The square root of " << num << " is " << result << std::endl;return 0;
}

1.2?pow()?- 計算冪次方

  • 功能:計算?x?的?y?次冪。
  • 原型double pow(double x, double y);
  • 示例代碼
#include <iostream>
#include <cmath>int main() {double base = 2.0;double exponent = 3.0;double result = std::pow(base, exponent);std::cout << base << " raised to the power of " << exponent << " is " << result << std::endl;return 0;
}

2. 三角函數

要注意角度的單位是弧度。

若需要將角度從度轉換為弧度,可以使用公式?radians = degrees * (M_PI / 180)

(在某些編譯器中,M_PI?可能未定義,可以手動定義?#define M_PI 3.14159265358979323846)。

2.1?sin()cos()tan()?- 計算正弦、余弦和正切值

  • 功能:分別計算給定角度(以弧度為單位)的正弦、余弦和正切值。
  • 原型
    • double sin(double x);? ? ? ? 對/斜
    • double cos(double x);? ? ? ? 鄰/斜
    • double tan(double x);? ? ? ? 對/鄰
  • 示例代碼
#include <iostream>
#include <cmath>int main() {double angleInRadians = 1.0; // 1 弧度double sinValue = std::sin(angleInRadians);double cosValue = std::cos(angleInRadians);double tanValue = std::tan(angleInRadians);std::cout << "sin(" << angleInRadians << ") = " << sinValue << std::endl;std::cout << "cos(" << angleInRadians << ") = " << cosValue << std::endl;std::cout << "tan(" << angleInRadians << ") = " << tanValue << std::endl;return 0;
}

2.2?asin()acos()atan()?- 計算反正弦、反余弦和反正切值

  • 功能:分別計算給定值的反正弦、反余弦和反正切值,返回值為弧度。
  • 原型
    • double asin(double x);
    • double acos(double x);
    • double atan(double x);
  • 示例代碼
#include <iostream>
#include <cmath>int main() {double value = 0.5;double asinValue = std::asin(value);double acosValue = std::acos(value);double atanValue = std::atan(value);std::cout << "arcsin(" << value << ") = " << asinValue << " radians" << std::endl;std::cout << "arccos(" << value << ") = " << acosValue << " radians" << std::endl;std::cout << "arctan(" << value << ") = " << atanValue << " radians" << std::endl;return 0;
}

2.3?atan2(y, x)?- 計算反正切值?

功能:返回值為弧度,計算點(0,0)和(x,y)的連線與X軸正半軸的夾角,其值域為?[-π,π]?(當y=0時,可以取到±π),且在第一二象限為正,在第三四象限為負

與之類似的函數還有atan2f(y, x)、atan2d(y, x),分別對應float類型和int類型。

示例代碼:

#include <iostream>
#define M_PI       3.14159265358979323846   // piusing namespace std;int main()
{double x = 100;double y = 1;double abs1, abs2, abs3, abs4;abs1 = atan2(y, x) * 180 / M_PI;cout << "第一象限角abs1= " << abs1 << endl;abs2 = atan2(y, -x) * 180 / M_PI;cout << "第二象限角abs2= " << abs2 << endl;abs3 = atan2(-y, -x) * 180 / M_PI;cout << "第三象限角abs3= " << abs3 << endl;abs4 = atan2(-y, x) * 180 / M_PI;cout << "第四象限角abs4= " << abs4 << endl;return 0;
}

輸出結果:

第一象限角abs1= 0.572939
第二象限角abs2= 179.427
第三象限角abs3= -179.427
第四象限角abs4= -0.572939

拓展:atan2與atan的區別

1. atan(x)

atan(x)表示求的是x的反正切,其返回值為[-pi/2,+pi/2]之間的一個數。

2. atan2(y,x)

atan2(y,x)表示求的是y/x的反正切,其返回值為[-pi,pi]之間的一個數。
要注意的是,函數atan2(y,x)中參數的順序是倒置的,atan2(y,x)計算的值相當于點(x,y)的角度值。

3. atan(y/x)與atan2(y,x)的區別

atan2(y, x)是4象限反正切,它的取值不僅取決于正切值y/x,還取決于點 (x, y) 落入哪個象限:

當點(x, y) 落入第一象限時,atan2(y, x)的范圍是 0 ~ pi/2;
當點(x, y) 落入第二象限時,atan2(y, x)的范圍是 pi/2 ~ pi;
當點(x, y) 落入第三象限時,atan2(y, x)的范圍是 -pi~-pi/2;
當點(x, y) 落入第四象限時,atan2(y, x)的范圍是 -pi/2~0.

?而 atan(y/x) 僅僅根據正切值為y/x求出對應的角度 (可以看作僅僅是2象限反正切):

當 y/x > 0 時,atan(y/x)取值范圍是 0 ~ pi/2;
當 y/x < 0 時,atan(y/x)取值范圍是 -pi/2~0.

故 atan2(y, x) = atan(y/x) 僅僅發生在點 (x, y) 落入第一象限 (x>0, y>0)或第四象限(x>0, y<0)。

舉個栗子:

  • 栗1:假設y =1.0, x = -1.0,

則 atan(y/x) = atan(-1.0) = -pi/4, 而 atan2(y, x) = 3*pi/4。

  • 栗2:斜率是1的直線的夾角

cout<<atan(1.0)*180/PI;//45°
cout<<atan2(1.0,1.0)*180/PI; //45° 第一象限
cout<<atan2(-1.0,-1.0)*180/PI; //-135°第三象限
后兩個斜率都是1 但是atan只能求出一個45°

3. 對數和指數函數

3.1?exp()?- 計算自然指數

  • 功能:計算?e?的?x?次冪,其中?e?是自然常數(約為 2.71828)。
  • 原型double exp(double x);
  • 示例代碼
#include <iostream>
#include <cmath>int main() {double x = 2.0;double result = std::exp(x);std::cout << "e raised to the power of " << x << " is " << result << std::endl;return 0;
}

3.2?log()?和?log10()?- 計算自然對數和以 10 為底的對數

  • 功能log()?計算自然對數(以?e?為底),log10()?計算以 10 為底的對數。
  • 原型
    • double log(double x);
    • double log10(double x);
  • 示例代碼
#include <iostream>
#include <cmath>int main() {double num = 100.0;double naturalLog = std::log(num);double commonLog = std::log10(num);std::cout << "Natural logarithm of " << num << " is " << naturalLog << std::endl;std::cout << "Common logarithm of " << num << " is " << commonLog << std::endl;return 0;
}

4. 取整和絕對值函數

4.1?abs()fabs()?- 計算絕對值

  • 功能abs()?用于計算整數的絕對值,fabs()?用于計算浮點數的絕對值。
  • 原型
    • int abs(int x);
    • double fabs(double x);
  • 示例代碼
#include <iostream>
#include <cmath>int main() {int intNum = -5;double doubleNum = -3.14;int intAbs = std::abs(intNum);double doubleAbs = std::fabs(doubleNum);std::cout << "Absolute value of " << intNum << " is " << intAbs << std::endl;std::cout << "Absolute value of " << doubleNum << " is " << doubleAbs << std::endl;return 0;
}

4.2?ceil()?和?floor()?- 向上取整和向下取整

  • 功能ceil()?將一個浮點數向上取整為不小于該數的最小整數,floor()?將一個浮點數向下取整為不大于該數的最大整數。
  • 原型
    • double ceil(double x);
    • double floor(double x);
  • 示例代碼
#include <iostream>
#include <cmath>int main() {double num = 3.2;double ceiling = std::ceil(num);double floorValue = std::floor(num);std::cout << "Ceiling of " << num << " is " << ceiling << std::endl;std::cout << "Floor of " << num << " is " << floorValue << std::endl;return 0;
}

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

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

相關文章

不關“貓”如何改變外網IP?3種免重啟切換IP方案

每次更換外網IP都要重啟路由器&#xff1f;太麻煩了&#xff01;那么&#xff0c;不關貓怎么改變外網IP&#xff1f;無論是為了網絡調試、爬蟲需求&#xff0c;還是解決IP限制問題&#xff0c;頻繁重啟設備既耗時又影響效率。其實&#xff0c;更換外網IP并不一定要依賴“重啟大…

道路運輸安全員企業負責人考試內容與范圍

道路運輸企業主要負責人&#xff08;安全員&#xff09;考證要求 的詳細說明&#xff0c;適用于企業法定代表人、分管安全負責人等需取得的 《道路運輸企業主要負責人和安全生產管理人員安全考核合格證明》&#xff08;交通運輸部要求&#xff09;。 考試內容與范圍 1. 法律法…

深入剖析 WiFi 定位解析功能:原理、技術優勢與應用場景

WiFi 定位解析功能的原理? 信號強度與距離的關系? WiFi 定位的核心原理基于無線信號傳播過程中的一個基本特性&#xff1a;信號強度與信號發射源&#xff08;即 WiFi 接入點&#xff0c;Access Point&#xff0c;簡稱 AP&#xff09;和接收設備之間距離的關聯。一般來說&am…

NVIDIA RTX? GPU 低成本啟動零售 AI 場景開發

零售行業正在探索應用 AI 升級客戶體驗&#xff0c;同時優化內部流程。面對多重應用場景以及成本優化壓力&#xff0c;團隊可采用成本相對可控的方案&#xff0c;來應對多重場景的前期項目預演和落地&#xff0c;避免短期內大規模投入造成的資源浪費。 客戶體驗 AI 場景的研究…

首次打藍橋杯總結(c/c++B組)

目錄 一、對每個題進行總結 1.填空題 2.第一個大題---可分解的正整數&#xff08;10--3&#xff09; 3.第二道大題---產值調整&#xff08;10--3&#xff09; 4.第三道大題---畫展部署&#xff08;15--7&#xff09; 5.第四道大題---水質檢測&#xff08;15--3&#x…

林納斯·托瓦茲:Linux系統之父 Git創始人

名人說&#xff1a;路漫漫其修遠兮&#xff0c;吾將上下而求索。—— 屈原《離騷》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 林納斯托瓦茲&#xff1a;Linux之父、Git創始人 一、傳奇人物的誕生 1. 早年生活與家…

C語言多進程素數計算

題目描述&#xff1a; 以下代碼實現了一個多進程素數計算程序&#xff0c;通過fork()函數創建子進程來并行計算指定范圍內的素數。請仔細閱讀代碼并回答以下問題。 #include "stdio.h" #include "unistd.h" #include <sys/types.h> #include "…

uniapp-商城-27-vuex 通用方法

1 概述 上節說了vuex 的基本使用方法,分析了基本的使用方法。 在使用中,常見使用,我們要針對狀態,購物車,不同類事務的管理,如果按照上節課的通用方法,那么使用和維護是會很大的難度的。 所以這里就必須要進行處理,借助 modules 進行定義不同類事務的處理手段。便于…

半導體設備通信標準—secsgem v0.3.0版本使用說明文檔(4)之HSMS(SEMI E37)

文章目錄 1、消息快1.1、選擇 請求1.2、選擇響應1.3、取消選擇請求1.4、取消選擇響應1.5、Linktest 請求1.6、Linktest 響應1.7、拒絕請求1.8、單獨請求1.9、數據消息 2、 協議2.1、 事件 SEMI E37 HSMS 定義主機和設備之間通過 TCP 協議的通信。 它指定用于啟動和終止連接的數…

通過GO后端項目實踐理解DDD架構

最近在工作過程中重構的項目要求使用DDD架構&#xff0c;在網上查詢資料發現教程五花八門&#xff0c;并且大部分內容都是長篇的概念講解&#xff0c;晦澀難懂&#xff0c;筆者看了一些github上入門的使用DDD的GO項目&#xff0c;并結合自己開發中的經驗&#xff0c;談談自己對…

Ubuntu系統連網問題

0. Preface 給一臺新電腦裝上Ubuntu系統后&#xff0c;接好網線&#xff0c;發現上不了網&#xff0c;右上角是有網絡連接的圖標的&#xff0c;也能獲取到ip地址&#xff0c;就是沒辦法連網&#xff0c;ping www.google.com也沒反應。 其實應該是網絡設置有點問題&#xff0c;…

C/C++---頭文件保護機制

在 C 和 C 編程里&#xff0c;頭文件保護機制是一種防止頭文件被重復包含的技術&#xff0c;它主要借助 #ifndef、#define 和 #endif 這些預處理指令來達成&#xff0c;也可以使用 #pragma once 這一編譯器特定指令。下面詳細闡述這一機制&#xff1a; 1. 頭文件重復包含的問題…

藍橋杯 8. 分巧克力

分巧克力 原題目鏈接 問題描述 兒童節那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。 小明一共有 N 塊巧克力&#xff0c;其中第 i 塊是 H? W? 的長方形。為了公平起見&#xff0c;小明需要從這 N 塊巧克力中切出 K 塊巧克力分給小朋友們。 要求…

從 SQL2API 到 Text2API:開啟數據應用開發的新征程

在技術革新浪潮的席卷下&#xff0c;數據應用開發領域正經歷著深刻變革。曾經&#xff0c;構建數據 API 需要開發者具備扎實的數據庫知識和編程技能&#xff0c;手動編寫復雜的 SQL 查詢與 API 代碼&#xff0c;這一過程不僅耗時費力&#xff0c;還將眾多非技術人員阻擋在數據應…

繼承:(開始C++的進階)

我們今天來學習C的進階&#xff1a; 面向對象三大特性&#xff1a;封裝&#xff0c;繼承&#xff0c;多態。 封裝我們在前面已經學了&#xff0c;我們細細理解&#xff0c;我們的類的封裝&#xff0c;迭代器的封裝&#xff08;vector的迭代器可以是他的原生指針&#xff0c;li…

冒泡排序、插入排序、快速排序、堆排序、希爾排序、歸并排序

目錄 冒泡排序插入排序快速排序(未優化版本)快速排序(優化版本)堆排序希爾排序歸并排序各排序時間消耗對比 冒泡排序 冒泡排序核心邏輯就是對數組從第一個位置開始進行遍歷&#xff0c;如果發現該元素比下一個元素大&#xff0c;則交換位置&#xff0c;如果不大&#xff0c;就…

JavaScript:表單及正則表達式驗證

今天我要介紹的是在JavaScript中關于表單驗證內容的知識點介紹&#xff1a; 關于表單驗證&#xff0c;我接下來則直接將內容以及效果顯示出來并作注解&#xff0c;這樣可以清晰看見這個表達驗證的妙用&#xff1a; <form id"ff" action"https://www.baidu.…

天元證券|調倉曝光!首批科技基金一季報出爐

4月15日&#xff0c;中歐基金、永贏基金、長城基金等公募基金公司旗下部分權益類基金產品一季報出爐。 券商中國記者梳理發現&#xff0c;永贏信息產業智選混合主要聚焦信息技術領域布局&#xff0c;前十大重倉股中9只股票屬于信息技術行業&#xff0c;合計占基金資產凈值比例達…

SpringAI版本更新:向量數據庫不可用的解決方案!

Spring AI 前兩天&#xff08;4.10 日&#xff09;更新了 1.0.0-M7 版本后&#xff0c;原來的 SimpleVectorStore 內存級別的向量數據庫就不能用了&#xff0c;Spring AI 將其全部源碼刪除了。 此時我們就需要一種成本更低的解決方案來解決這個問題&#xff0c;如何解決呢&…

Sklearn入門之datasets的基本用法

、 Sklearn全稱:Scipy-toolkit Learn是 一個基于scipy實現的的開源機器學習庫。它提供了大量的算法和工具&#xff0c;用于數據挖掘和數據分析&#xff0c;包括分類、回歸、聚類等多種任務。本文我將帶你了解并入門Sklearn下的datasets在機器學習中的基本用法。 獲取方式 pi…