最近AI比較火,於是沒事自己看下深度學習等方面的文章。
深度學習中的各種算法,用到了數學領域的很多公式、函數,回頭想要敲代碼熟悉一下這些算法時,發現很多公式、函數不用用代碼寫了,還要翻Math類。所以在這裏記錄一下Math中常用的函數,以備不時之需。
Math.E //自然常數e=2.7182818284590452354
Math.abs(12.3); //12.3 返回該值的絕對值
Math.abs(-12.3); //12.3
Math.copySign(1.23, -12.3); //-1.23,返回第一個參數的量值和第二個參數的符號
Math.copySign(-12.3, 1.23); //12.3
Math.signum(x); //如果x大於0則返回1.0,小於0則返回-1.0,等於0則返回0
Math.signum(12.3); //1.0
Math.signum(-12.3); //-1.0
Math.signum(0); //0.0
//指數
Math.exp(x); //e的x次冪
Math.expm1(x); //e的x次冪 - 1
Math.scalb(x, y); //x*(2的y次冪)
Math.scalb(12.3, 3); //12.3*2³
//取整
Math.ceil(12.3); //返回最近的且大於該值的整數13.0
Math.ceil(-12.3); //-12.0
Math.floor(12.3); //返回最近的且小於該值的整數12.0
Math.floor(-12.3); //-13.0
//x和y平方和的二次方根
Math.hypot(x, y); //√(x²+y²)
//返回該值的二次方根
Math.sqrt(x); //√(x) x的二次方根
Math.sqrt(9); //3.0
Math.sqrt(16); //4.0
//返回該值的立方根
Math.cbrt(27.0); //3
Math.cbrt(-125.0); //-5
//對數函數
Math.log(e); //1 以e爲底的對數
Math.log10(100); //10 以10爲底的對數
Math.log1p(x); //Ln(x+ 1)
//返回較大值和較小值
Math.max(x, y); //返回x、y中較大的那個數
Math.min(x, y); //返回x、y中較小的那個數
//返回x的y次冪
Math.pow(x, y);
Math.pow(2, 3); //即2³ 即返回:8
//隨機返回[0,1)之間的無符號double值
Math.random();
//返回最接近該值的整數,如果居中,則取偶數
Math.rint(12.3); //12.0
Math.rint(-12.3); //-12.0
Math.rint(78.9); //79.0
Math.rint(-78.9); //-79.0
Math.rint(34.5); //34.0
Math.rint(35.5); //36.0
Math.round(12.3); //與rint相似,返回值爲long
//三角函數
Math.sin(α); //sin(α)的值
Math.cos(α); //cos(α)的值
Math.tan(α); //tan(α)的值
//求角
Math.asin(x/z); //返回角度值[-π/2,π/2] arc sin(x/z)
Math.acos(y/z); //返回角度值[0~π] arc cos(y/z)
Math.atan(y/x); //返回角度值[-π/2,π/2]
Math.atan2(y-y0, x-x0); //同上,返回經過點(x,y)與原點的的直線和經過點(x0,y0)與原點的直線之間所成的夾角
Math.sinh(x); //雙曲正弦函數sinh(x)=(exp(x) - exp(-x)) / 2.0;
Math.cosh(x); //雙曲餘弦函數cosh(x)=(exp(x) + exp(-x)) / 2.0;
Math.tanh(x); //tanh(x) = sinh(x) / cosh(x);
//角度弧度互換
Math.toDegrees(angrad); //角度轉換成弧度,返回:angrad * 180d / PI
Math.toRadians(angdeg); //弧度轉換成角度,返回:angdeg / 180d * PI