ath 對象
Math是 JavaScript 的原生對象,提供各種數學功能。該對象不是構造函數,不能生成實例,所有的屬性和方法都必須在Math對象上調用。
靜態屬性
Math對象的靜態屬性,提供以下一些數學常數。
Math.E:常數e。
Math.LN2:2 的自然對數。
Math.LN10:10 的自然對數。
Math.LOG2E:以 2 為底的e的對數。
Math.LOG10E:以 10 為底的e的對數。
Math.PI:常數π。
Math.SQRT1_2:0.5 的平方根。
Math.SQRT2:2 的平方根。
Math.E // 2.718281828459045
Math.LN2 // 0.6931471805599453
Math.LN10 // 2.302585092994046
Math.LOG2E // 1.4426950408889634
Math.LOG10E // 0.4342944819032518
Math.PI // 3.141592653589793
Math.SQRT1_2 // 0.7071067811865476
Math.SQRT2 // 1.4142135623730951
這些屬性都是只讀的,不能修改。
靜態方法
Math對象提供以下一些靜態方法。
Math.abs():絕對值
Math.ceil():向上取整
Math.floor():向下取整
Math.max():最大值
Math.min():最小值
Math.pow():冪運算
Math.sqrt():平方根
Math.log():自然對數
Math.exp():e的指數
Math.round():四舍五入
Math.random():隨機數
Math.abs()
Math.abs方法返回參數值的絕對值。
Math.abs(1) // 1
Math.abs(-1) // 1
Math.max(),Math.min()
Math.max方法返回參數之中最大的那個值,Math.min返回最小的那個值。如果參數為空, Math.min返回Infinity, Math.max返回-Infinity。
Math.max(2, -1, 5) // 5
Math.min(2, -1, 5) // -1
Math.min() // Infinity
Math.max() // -Infinity
Math.floor(),Math.ceil()
Math.floor方法返回小于或等于參數值的最大整數(地板值)。
Math.floor(3.2) // 3
Math.floor(-3.2) // -4
Math.ceil方法返回大于或等于參數值的最小整數(天花板值)。
Math.ceil(3.2) // 4
Math.ceil(-3.2) // -3
這兩個方法可以結合起來,實現一個總是返回數值的整數部分的函數。
function ToInteger(x) {
x = Number(x);
return x < 0 ? Math.ceil(x) : Math.floor(x);
}
ToInteger(3.2) // 3
ToInteger(3.5) // 3
ToInteger(3.8) // 3
ToInteger(-3.2) // -3
ToInteger(-3.5) // -3
ToInteger(-3.8) // -3
上面代碼中,不管正數或負數,ToInteger函數總是返回一個數值的整數部分。
Math.round()
Math.round方法用于四舍五入。
Math.round(0.1) // 0
Math.round(0.5) // 1
Math.round(0.6) // 1
?
// 等同于
Math.floor(x + 0.5)
注意,它對負數的處理(主要是對0.5的處理)。
Math.round(-1.1) // -1
Math.round(-1.5) // -1
Math.round(-1.6) // -2
Math.pow()
Math.pow方法返回以第一個參數為底數、第二個參數為指數的冪運算值。
// 等同于 2 ** 2
Math.pow(2, 2) // 4
// 等同于 2 ** 3
Math.pow(2, 3) // 8
下面是計算圓面積的方法。
var radius = 20;
var area = Math.PI * Math.pow(radius, 2);
Math.sqrt()
Math.sqrt方法返回參數值的平方根。如果參數是一個負值,則返回NaN。
Math.sqrt(4) // 2
Math.sqrt(-4) // NaN
Math.log()
Math.log方法返回以e為底的自然對數值。
Math.log(Math.E) // 1
Math.log(10) // 2.302585092994046
如果要計算以10為底的對數,可以先用Math.log求出自然對數,然后除以Math.LN10;求以2為底的對數,可以除以Math.LN2。
Math.log(100)/Math.LN10 // 2
Math.log(8)/Math.LN2 // 3
Math.exp()
Math.exp方法返回常數e的參數次方。
Math.exp(1) // 2.718281828459045
Math.exp(3) // 20.085536923187668
Math.random()
Math.random()返回0到1之間的一個偽隨機數,可能等于0,但是一定小于1。
Math.random() // 0.7151307314634323
任意范圍的隨機數生成函數如下。
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
getRandomArbitrary(1.5, 6.5)
// 2.4942810038223864
任意范圍的隨機整數生成函數如下。
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
getRandomInt(1, 6) // 5
返回隨機字符的例子如下。
function random_str(length) {
var ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
ALPHABET += 'abcdefghijklmnopqrstuvwxyz';
ALPHABET += '0123456789-_';
var str = '';
for (var i = 0; i < length; ++i) {
var rand = Math.floor(Math.random() * ALPHABET.length);
str += ALPHABET.substring(rand, rand + 1);
}
return str;
}
random_str(6) // "NdQKOr"
上面代碼中,random_str函數接受一個整數作為參數,返回變量ALPHABET內的隨機字符所組成的指定長度的字符串。
三角函數方法
Math對象還提供一系列三角函數方法。
Math.sin():返回參數的正弦(參數為弧度值)
Math.cos():返回參數的余弦(參數為弧度值)
Math.tan():返回參數的正切(參數為弧度值)
Math.asin():返回參數的反正弦(返回值為弧度值)
Math.acos():返回參數的反余弦(返回值為弧度值)
Math.atan():返回參數的反正切(返回值為弧度值)
Math.sin(0) // 0
Math.cos(0) // 1
Math.tan(0) // 0
?
Math.sin(Math.PI / 2) // 1
?
Math.asin(1) // 1.5707963267948966
Math.acos(1) // 0
Math.atan(1) // 0.7853981633974483
————————————————
什么是進制
●進制就是達到指定位置時候進一位
●常見的進制
○十進制: 0 1 2 3 4 5 6 7 8 9 10 11 12 ... 99 100 101
○二進制: 0 1 10 11 100 101 110 111 1000
○八進制: 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21
○十六進制: 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 ... 19 ... 1a 1b 1c 1d 1e 1f 20 21 ...
十進制轉換成其它進制
●toString() 方法可以在數字轉成字符串的時候給出一個進制數
○語法: toString(你要轉換的進制)
○返回值:轉換好進制以后的數字
■轉換好的數字是字符串類型
var num = 100
console.log(num.toString(2)) // 1100100
console.log(num.toString(8)) // 144
console.log(num.toString(16)) // 64
其它進制轉換成十進制
●parseInt() 方法可以在字符串轉成數字的時候把字符串當成多少進制轉成十進制
○語法: parseInt(要轉換的字符串,當作幾進制來轉換)
○返回值:轉換后的數字 你把數字當做幾進制使用, 轉換成十進制
■結果是數字類型
var str = 100
console.log(parseInt(str, 8)) // 64 把 100 當作一個 八進制 的數字轉換成 十進制 以后得到的
console.log(parseInt(str, 16)) // 256 把 100 當作 十六進制 的數字轉換成 十進制 以后得到的
console.log(parseInt(str, 2)) // 4 把 100 當作 二進制 的數字轉換成 十進制 以后得到的
●作用:toFixed() 方法可把 Number 四舍五入為指定小數位數的數字。
●語法:數字.toFixed(要保留的小數點后的位數)
●返回值:返回一個小數點后有固定的 多少位數字的數字,是一個字符串類型
○小數位不夠的時候, 使用 0 補齊
var n = 100.123
// 把 n 保留 2 位小數以后賦值給 res
var res = n.toFixed(2)
console.log(res) //100.12
//返回的是字符串類型
console.log(typeof res); //string
//保留的小數位數多余原數字的小數位數
var res1 = n.toFixed(4)
console.log(res1) //100.1230 保留的位數不夠用0補齊
案例-隨機整數封裝
function fn(a, b) {
// 1. 確定兩個數字的大小關系
var min = Math.min(a, b)
var max = Math.max(a, b)
// 2. 求出兩數差
var sub = max - min
// 3. 求出 0 ~ sub 之間的隨機整數
var r1 = Math.floor(Math.random() * (sub + 1))
// 4. 把 r1 + min
var res = r1 + min
return res
}
//優化上述方案1:
function fn(a, b) {
// 1. 確定兩個數字的大小關系
var min = Math.min(a, b)
var max = Math.max(a, b)
return Math.floor(Math.random() * (max - min + 1)) + min
}
// 優化上述方案2:
function fn(a, b) {
return Math.floor(Math.random() * (Math.abs(a - b) + 1)) + Math.min(a, b)
}
案例-封裝函數返回隨機顏色字符串
文為“2022年第四屆數學文化征文活動
數學在折紙設計中的應用
——單五密鋪type 14的精確繪圖及折紙設計
作者 : 傅薇
作品編號:095
摘要:有什么作品是可以將數學、鋪砌藝術、文化圖飾、折紙設計聯系起來的嗎?有,設計密鋪類型的鑲嵌折紙。本文將闡述15種單一凸五邊形密鋪中type 14的折紙設計過程及期間借助強大輔助工具——數學的種種應用。
一、密鋪/鑲嵌介紹
折紙與數學,密鋪與鑲嵌,不同的概念,卻有著緊密的聯系。有人可能會說,密鋪/鋪砌(tiling)與鑲嵌(tessellation),在數學里是統一的概念(后文會介紹不同之處),都是指用形狀、大小完全相同的幾種或幾十種平面圖形進行拼接,使彼此之間不留空隙、不重疊地鋪成一片。鑲嵌最早可以追朔到大約公元前4000年由蘇美爾人用于建造裝飾墻,后來逐漸被人們用于鋪砌地磚等,其中比較知名的有開羅鑲嵌(Cairo tiling)、Marjorie Rice設計被用于鋪設美國數學學會(MAA)華盛頓總部大廳地板的versatile圖案,以及2020年諾貝爾物理學獎得主羅杰·彭羅斯(Roger Penrose)設計的彭羅斯鑲嵌(Penrose tiling)。前兩種分屬于單一凸五邊形密鋪中的type 4和type 5,歸屬于周期密鋪;而第三種彭羅斯鑲嵌屬于非周期密鋪。如圖所示:
經過前面的計算,得出了與資料一致的近似角度。但對于折紙來說,近似角度是不行的,想要進行折紙設計,必須在折紙軟件里畫出精確圖示,否則邊不重疊、點不重合。
其實,根據上題(圖片)中的方程: 也可以用精確邊長來表示/限定角度:
根據實際情況取正值,做出各邊長后,則角度可確定。
不僅如此,根據上題(圖片)中的一次方程還可以換種方法解題,得出同樣的結論。(下面第一圖中是將該一次方程轉化為3AB-2CD=BC )。經過前面的計算,得出了與資料一致的近似角度。但對于折紙來說,近似角度是不行的,想要進行折紙設計,必須在折紙軟件里畫出精確圖示,否則邊不重疊、點不重合。
根據計算結果,可以在折紙軟件中畫出需要的角度(小數點后的數字無限匹配)。下面介紹一下長度的繪制方法(筆者采用第三種方法)。
圖 2.7: 繪制長度的三種方式(函數曲線、海螺圖、勾股三角形).
圖 3.6: type 14圖示(折紙成品預呈現的緊湊結構).
已發文章>>
001 閱讀《數學的故事》有感
002 我想和數學談場戀愛
003 數學“化錯”中的美
004 讓數學思考成為數學課堂的主旋律
005 盧梭的“錯”?
006 數學教學案例《找次品》
007 基于優化學生數學思維的高效課堂創建——以等腰三角形的判定一課為例
008 從特殊到一般,引導數學思維
009 數學文化融入家庭教育的研究
010 sin 震蕩函數的圖像分析
011 四階幻方的“太極圖”性質
012 無理數的定義和實數理論的建立
013 一個容易被忽視的問題——數學文化
014 “雙減”背景下初中數學學科的合作學習方式探究
015 中學數學德育滲透的方法與路徑
016 《數學的力量》讀后感
017 基于數學文化的單元統整教學設計——以“圓的認識與面積”教學為例
018 有助于數的理解的數字圈環
019 以折疊為例,探究生長型數學教學模式
020 我從事數學科普寫作的經驗與啟示
021 在閱讀中滋長智慧——讀《教育智慧從哪里來》有感
022 學習數學史 做數學的使者
023 開數學文化之窗 啟數學文化魅力——閱讀《美麗的數學》有感
024 “文學獨白”——數學教學因你而精彩
025 如何用多面體三等分正方體
026 HPM視角下《圓的周長》教學設計
027 被誤解的“勾股定理”
028 好玩的數學
029 幫小青蛙設計一個井
030 萬物的基礎——數學——讀《從一到無窮大》有感
031 讀《孫子算經》雞兔同籠問題有感
032 HPM視角下高中數學多樣化作業的設計
033 攀越高峰的領路人——數學文化
034 我的好兄弟:數學
035 細嗅數學文化之香
036 藤蔓的喜悅
037 物理力學中數學的影子
038 復數外傳
039 函數的歷史和發展
040 數學文化與我
041 數學之趣
042 探索數學知識背后的秘密
043 數學文化和我的數學學習
044 古代算數幾何形體——陽馬與鱉臑
045 數學文化與我的數學學習
046 我與數學文化
047 “形象”的數學
048 站在巨人的肩膀上學習數學
049 從數學文化和個人影響的角度剖析對數的歷史
050 論數學文化
051 我與數學文化
052 正弦定理的源起與應用
053 數學文化融入初中數學教學的實踐與思考
054 給數字愛好者的1個全新的0至9數字思考挑戰及應用問題
055 并不需要的“承重墻”與數學課改中的問題 —— 兼與馬立平博士商榷
056 奇妙的規律
057 生活中的“家常便飯”——數的表示方法
058 讀《黃東坡智慧大講堂——帶你發現數學之美》有感
059 通識教育視角下初中數學思維培養從直觀向抽象過渡的研究
060 讀《古今數學思想》有感
061 為什么圓的面積的導數等于周長?球的的體積的導數等于其表面積?
062 《奇妙的數學文化》讀后感
063 數學文化視角下《九宮圖的奧秘》教學設計
064 關于畢達哥拉斯定理適用蒙特卡羅方法驗證的探討
065 遨游數學星空,體味數學奇妙
066 核心素養下的,數學文化中的美育滲透
067 探尋數學之奇,欣賞數學之美
068 框架思維——讀《數學這樣學就對了》有感
069 從肌肉記憶到《幾何原本》第四公理
070 《數學大世界》讀后感
071 除法才是四則運算的基礎:兼與馬立平博士商榷
072 從“海盜分金”到“囚徒困境”——博弈該如何進行?
073 “0”與“1”的辯證法和數學學習之路
074 感悟數學
075 我的好伙伴:數學
076 一則寓言故事帶來的教學啟發
077 神奇的數學 ——最大公因數、最小公倍數
078 怎樣學好數學
079 “7”真是個神奇的數字
080 《一個定理的誕生:我與菲爾茨獎的一千個日夜》讀后感
081 夢想中的職業,都與數學息息相關
082 哪?有數,哪?就有美?讀《數學之美》有感
083 探索信息技術融入初中數學文化實踐活動
084 秦九韶數學案——隨機抽樣統計推理的反問題
085 第四次數學危機
086 基于三階魔方的STREAM教學設計
087 趣味家庭作業 引領學生學習
088 數學之道
089 了解微積分后的那些事……
090 不會?不,會
091 一個偶然的發現——完全數及其基因構造數列
092 在規矩方圓中求索——“圓的認識”的文化育人視界
093 歐拉公式的幾何證明與意義
*請認真填寫需求信息,我們會在24小時內與您取得聯系。