: | : | :期货量化学习 | :期货量化 |
返回列表 发帖

C++程序化/量化学习视频教程系列 第022节:C语言知识点之C++ 内置数学运算函数( cos、sin、log、pow、sqrt、abs、floor等)知识及C++量化开发中的注意事项【C++量化开发知识点系列】

C++程序化/量化学习视频教程系列 第022节:C语言知识点之C++ 内置数学运算函数( cos、sin、log、pow、sqrt、abs、floor等)知识及C++量化开发中的注意事项【C++量化开发知识点系列】

C++程序化/量化学习视频教程系列 第022节:C语言知识点之C++ 内置数学运算函数( cos、sin、log、pow、sqrt、abs、floor等)知识及C++量化开发中的注意事项【C++量化开发知识点系列】



C++程序化学习视频教程系列安排如下:
第一楼:教学视频。一般控制在15分钟左右;
第二椄:视频课程中使用的程式源码。
第三楼:视频教学中需要用到的一些文档或资源。
第四楼:其它的一些边角料,特别是一些经典程序化策略的回测类的部分会放到下面楼层里面。

参与模式如下:
1、希望参与到编写策略与调试方面的工作通过上面的联系方式联系管理员咨询即可。记的加群,有问题第一时间交流,也可以在论坛指定版发贴交流,专用版地址:http://www.qhlt.cn/forum-244-1.html
2、有意申请试用及绑定期货账户跑实盘网友可以联系管理员,以及开通的方式。
3、基于C++策略交易软件具有:1、软件小(50兆不到);2、效率高(C++语言);3、功能精(专注于策略);4、对服务噐或电脑兼容性好(WIN系统)等优势,特别适合长期跑程序化的客户朋友,特别是有稳定交易模式客户更适合使用C++构建的交易系统。
4、最全的C++期货程序化(量化)教程、视频、源码、课件、资源汇总贴【C++期货程序化/量化研究必备资源贴!】:http://www.qhlt.cn/thread-160231-1-1.html
5、鼎元C++量化程式码技术指标源码C++版模板【建议在test.h和test.cpp中同步至最新,方便统一调用和使用,一次编辑多次使用!】:http://www.qhlt.cn/thread-160230-1-1.html
6、如何使用鼎元C++量化软件以及需要准备的些什么?[C++量化入门必读!]:http://www.qhlt.cn/thread-160415-1-1.html

联系方式:
C++微信群:  QQ群: 管理员微信:;管理员QQ:

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

C++ 数学运算

在 C++ 中,除了可以创建各种函数,还包含了各种有用的函数供您使用。这些函数写在标准 C 和 C++ 库中,叫做内置函数。您可以在程序中引用这些函数。

C++ 内置了丰富的数学函数,可对各种数字进行运算。下表列出了 C++ 中一些有用的内置的数学函数。

为了利用这些函数,您需要引用数学头文件 <cmath>。

序号函数 & 描述
1double cos(double);
该函数返回弧度角(double 型)的余弦。
2double sin(double);
该函数返回弧度角(double 型)的正弦。
3double tan(double);
该函数返回弧度角(double 型)的正切。
4double log(double);
该函数返回参数的自然对数。
5double pow(double, double);
假设第一个参数为 x,第二个参数为 y,则该函数返回 x 的 y 次方。
6double hypot(double, double);
该函数返回两个参数的平方总和的平方根,也就是说,参数为一个直角三角形的两个直角边,函数会返回斜边的长度。
7double sqrt(double);
该函数返回参数的平方根。
8int abs(int);
该函数返回整数的绝对值。
9double fabs(double);
该函数返回任意一个浮点数的绝对值。
10double floor(double);
该函数返回一个小于或等于传入参数的最大整数。
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

下面是一个关于数学运算的简单实例:
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;

  4. int main ()
  5. {
  6.    // 数字定义
  7.    short  s = 10;
  8.    int    i = -1000;
  9.    long   l = 100000;
  10.    float  f = 230.47;
  11.    double d = 200.374;

  12.    // 数学运算
  13.    cout << "sin(d) :" << sin(d) << endl;
  14.    cout << "abs(i)  :" << abs(i) << endl;
  15.    cout << "floor(d) :" << floor(d) << endl;
  16.    cout << "sqrt(f) :" << sqrt(f) << endl;
  17.    cout << "pow( d, 2) :" << pow(d, 2) << endl;

  18.    return 0;
  19. }
复制代码
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

<cmath> (math.h)

Trigonometric functions(三角函数):

cos:x 弧度的余弦值。
  1. double cos (double x);  
复制代码
以弧度表示的角度值。一个弧度相当于 180/PI 度。
  1. /* cos example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* cos */

  4. #define PI 3.14159265

  5. int main ()
  6. {
  7.   double param, result;
  8.   param = 60.0;
  9.   result = cos ( param * PI / 180.0 );
  10.   printf ("The cosine of %f degrees is %f.\n", param, result );
  11.   return 0;
  12. }
复制代码
  1. double sin (double x);
复制代码


返回 x 弧度角的正弦值。

参数
x
用弧度表示的角度值。
一个弧度相当于 180/PI 度。
  1. /* sin example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* sin */

  4. #define PI 3.14159265

  5. int main ()
  6. {
  7.   double param, result;
  8.   param = 30.0;
  9.   result = sin (param*PI/180);
  10.   printf ("The sine of %f degrees is %f.\n", param, result );
  11.   return 0;
  12. }
复制代码
  1. double tan (double x);
复制代码


计算正切
返回 x 弧度角的正切值。

参数
x
代表角度的值,用弧度表示。
一个弧度相当于 180/PI 度。

返回值
x 弧度的正切值。
  1. /* tan example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* tan */

  4. #define PI 3.14159265

  5. int main ()
  6. {
  7.   double param, result;
  8.   param = 45.0;
  9.   result = tan ( param * PI / 180.0 );
  10.   printf ("The tangent of %f degrees is %f.\n", param, result );
  11.   return 0;
  12. }
复制代码
  1.   double exp (double x);  
复制代码


计算指数函数
返回 x 的基指数函数,即 e 升至 x 的幂次:e^x。

参数
x
指数值。

返回值
x 的指数值。
  1. /* exp example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* exp */

  4. int main ()
  5. {
  6.   double param, result;
  7.   param = 5.0;
  8.   result = exp (param);
  9.   printf ("The exponential value of %f is %f.\n", param, result );
  10.   return 0;
  11. }
复制代码
  1.    double log (double x);  
复制代码


计算自然对数
返回 x 的自然对数。

自然对数是基对数:自然指数函数 (exp) 的倒数。有关常用(基 10)对数,请参阅 log10。

参数
x
计算对数值。
如果参数为负数,将出现域错误。

返回值
x 的自然对数。
如果 x 为负值,会导致域错误。
如果 x 为零,可能会导致极值错误(取决于库的实现)。
  1. /* log example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* log */

  4. int main ()
  5. {
  6.   double param, result;
  7.   param = 5.5;
  8.   result = log (param);
  9.   printf ("log(%f) = %f\n", param, result );
  10.   return 0;
  11. }
复制代码
  1. double log10 (double x);
复制代码


计算常用对数
返回 x 的常用对数(10 为底)。

参数
x
计算对数值。
如果参数为负数,将出现域错误。

返回值
x 的常用对数。
如果 x 为负值,会导致域错误。
如果 x 为零,可能会导致极值错误(取决于库的实现)。
  1. /* log10 example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* log10 */

  4. int main ()
  5. {
  6.   double param, result;
  7.   param = 1000.0;
  8.   result = log10 (param);
  9.   printf ("log10(%f) = %f\n", param, result );
  10.   return 0;
  11. }
复制代码
  1. double modf (double x     , double* intpart);
复制代码


分解成分数部分和积分部分
将 x 分解为整数部分和小数部分。

整数部分存储在 intpart 指向的对象中,小数部分由函数返回。

两部分的符号都与 x 相同。

参数
x
要分割成若干部分的浮点数值。
整数部分
指向一个对象(与 x 类型相同)的指针,整数部分存储在该对象中,符号与 x 相同。

返回值
x 的小数部分,符号相同。
  1. /* modf example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* modf */

  4. int main ()
  5. {
  6.   double param, fractpart, intpart;

  7.   param = 3.14159265;
  8.   fractpart = modf (param , &intpart);
  9.   printf ("%f = %f + %f \n", param, intpart, fractpart);
  10.   return 0;
  11. }
复制代码
  1. double exp2 (double x);
复制代码


计算以2为底的指数函数
返回 x 的以2为底的指数函数值,即 2 提升到 x 的幂次:2^x。

参数
x
指数值。

返回值
2 升为 x 的幂。
  1. /* exp2 example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* exp2 */

  4. int main ()
  5. {
  6.   double param, result;
  7.   param = 8.0;
  8.   result = exp2 (param);
  9.   printf ("2 ^ %f = %f.\n", param, result );
  10.   return 0;
  11. }
复制代码
  1. double pow (double base     , double exponent);
复制代码


升为幂
返回基数升幂的指数:

base^exponent

参数
基数
底数值。
指数
指数值。

返回值
将底数提高到指数幂的结果。
  1. /* pow example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* pow */

  4. int main ()
  5. {
  6.   printf ("7 ^ 3 = %f\n", pow (7.0, 3.0) );
  7.   printf ("4.73 ^ 12 = %f\n", pow (4.73, 12.0) );
  8.   printf ("32.01 ^ 1.54 = %f\n", pow (32.01, 1.54) );
  9.   return 0;
  10. }
复制代码
  1. double sqrt (double x);  
复制代码


计算平方根
返回 x 的平方根。

参数
x
要计算平方根的值。
如果参数为负值,则出现域错误。

返回值
x 的平方根。
如果 x 为负值,则出现域错误
  1. /* sqrt example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* sqrt */

  4. int main ()
  5. {
  6.   double param, result;
  7.   param = 1024.0;
  8.   result = sqrt (param);
  9.   printf ("sqrt(%f) = %f\n", param, result );
  10.   return 0;
  11. }
复制代码
  1. double cbrt (double x);
复制代码


计算立方根
返回 x 的立方根。

参数
x
要计算立方根的值。

返回值
x 的立方根。
  1. /* cbrt example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* cbrt */

  4. int main ()
  5. {
  6.   double param, result;
  7.   param = 27.0;
  8.   result = cbrt (param);
  9.   printf ("cbrt (%f) = %f\n", param, result);
  10.   return 0;
  11. }
复制代码
  1. double hypot (double x     , double y);
复制代码


计算斜边
返回直角三角形的斜边,直角三角形的边长为 x 和 y。

该函数返回 x 和 y 的平方和的平方根(根据勾股定理),但不会导致中间值过度溢出或溢出不足。

参数
x, y
浮点数值,对应于计算斜边的直角三角形的两脚。

返回值
(x^2+y^2) 的平方根。
  1. /* hypot example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* hypot */

  4. int main ()
  5. {
  6.   double leg_x, leg_y, result;
  7.   leg_x = 3;
  8.   leg_y = 4;
  9.   result = hypot (leg_x, leg_y);
  10.   printf ("%f, %f and %f form a right-angled triangle.\n",leg_x,leg_y,result);
  11.   return 0;
  12. }
复制代码
  1. double erf (double x);  
复制代码


计算误差函数
误差函数 返回 x 的误差函数值。


参数
x
误差函数参数。

返回值
x 的误差函数值。
  1. /* erf example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* erf */

  4. int main ()
  5. {
  6.   double param, result;
  7.   param = 1.0;
  8.   result = erf (param);
  9.   printf ("erf (%f) = %f\n", param, result );
  10.   return 0;
  11. }
复制代码
  1. double ceil (double x);
复制代码


向上舍入值
将 x 向上舍入,返回不小于 x 的最小整数值。

参数
x
四舍五入的值。

返回值
不小于 x 的最小整数值(浮点数)。
  1. /* ceil example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* ceil */

  4. int main ()
  5. {
  6.   printf ( "ceil of 2.3 is %.1f\n", ceil(2.3) );
  7.   printf ( "ceil of 3.8 is %.1f\n", ceil(3.8) );
  8.   printf ( "ceil of -2.3 is %.1f\n", ceil(-2.3) );
  9.   printf ( "ceil of -3.8 is %.1f\n", ceil(-3.8) );
  10.   return 0;
  11. }
复制代码
  1. double floor (double x);   
复制代码


向下舍入值
将 x 向下舍入,返回不大于 x 的最大整数值。

参数
x
要舍入的值。

返回值
向下舍入后的 x 值(浮点数)。
  1. /* floor example */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* floor */

  4. int main ()
  5. {
  6.   printf ( "floor of 2.3 is %.1lf\n", floor (2.3) );
  7.   printf ( "floor of 3.8 is %.1lf\n", floor (3.8) );
  8.   printf ( "floor of -2.3 is %.1lf\n", floor (-2.3) );
  9.   printf ( "floor of -3.8 is %.1lf\n", floor (-3.8) );
  10.   return 0;
  11. }
复制代码
  1. double round (double x);
复制代码


四舍五入
返回与 x 最接近的积分值,半数情况下四舍五入为零。

参数
x
要舍入的值。

返回值
四舍五入为最接近整数的 x 值(浮点数)。
  1. /* round vs floor vs ceil vs trunc */
  2. #include <stdio.h>      /* printf */
  3. #include <math.h>       /* round, floor, ceil, trunc */

  4. int main ()
  5. {
  6.   const char * format = "%.1f \t%.1f \t%.1f \t%.1f \t%.1f\n";
  7.   printf ("value\tround\tfloor\tceil\ttrunc\n");
  8.   printf ("-----\t-----\t-----\t----\t-----\n");
  9.   printf (format, 2.3,round( 2.3),floor( 2.3),ceil( 2.3),trunc( 2.3));
  10.   printf (format, 3.8,round( 3.8),floor( 3.8),ceil( 3.8),trunc( 3.8));
  11.   printf (format, 5.5,round( 5.5),floor( 5.5),ceil( 5.5),trunc( 5.5));
  12.   printf (format,-2.3,round(-2.3),floor(-2.3),ceil(-2.3),trunc(-2.3));
  13.   printf (format,-3.8,round(-3.8),floor(-3.8),ceil(-3.8),trunc(-3.8));
  14.   printf (format,-5.5,round(-5.5),floor(-5.5),ceil(-5.5),trunc(-5.5));
  15.   return 0;
  16. }
复制代码
  1. double abs (double x);
复制代码


计算绝对值
返回 x 的绝对值: |x|.

参数
x
返回绝对值的值。

返回值
x 的绝对值。
  1. // cmath's abs example
  2. #include <iostream>     // std::cout
  3. #include <cmath>        // std::abs

  4. int main ()
  5. {
  6.   std::cout << "abs (3.1416) = " << std::abs (3.1416) << '\n';
  7.   std::cout << "abs (-10.6)  = " << std::abs (-10.6) << '\n';
  8.   return 0;
  9. }
复制代码
更多高等数学计算函数参考:
本帖隐藏的内容需要回复才可以浏览
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

返回列表