NANA简介

NANA介绍

  • 前言
  • NANA库的功能
    • 解方程
    • 统计理论运算库
    • 实现矩阵运算
    • 数值分析算法
    • 仿生学算法
    • 神经网络
  • 笔者的话

前言

  NANA库是笔者用C++实现的SDK,笔者希望其成为一个用于教学和数学爱好者学习数学的SDK。读者可以访问NANA源代码下载源代码。访问NANA相关文档查看相关文档。笔者希望给大家带来更丰富的内容,更稳定的SDK。

NANA库的功能

解方程

  例如,一元二次方程的解法

/*
	 * ret返回值:1表示有两个是根
	 * 0 两个相等的根
	 * -1两个虚根
	 * -2 
	 */
	int QuadraticEquationSolving(double a, double b, double c, Complex &x1, Complex & x2) {
		if (fabs(a) <= eps)
			return -2;//不满足条件
		int ret;
		double d = b * b - 4.0*a*c;
		double r1, r2;
		double i1 = 0.0;
		double i2 = 0.0;
		
		double temp;
		if (d > fabs(eps)) {
			double root = sqrt(d);
			temp = -b - sign(b)*root;
			r1 = 2.0 * c / temp;
			r2 =temp / 2 / a;
			ret = 1;
		}
		else if(fabs(d)<=fabs(eps)){
			double root = sqrt(d);
			temp = -b - sign(b)*root;
			r2 = r1 = 2 * c / temp;			
			ret = 0;
		}
		else {
			double doua = 2.0*a;
			r1 = r2 = -b / (doua);
			i1 = sqrt(-d)/ doua;
			i2 = -i1;
			ret = -1;
		}
		x1 = Complex(r1, i1);
		x2 = Complex(r2, i2);
		return ret;
	}

统计理论运算库

  例如,Box-muller变换生成正态分布的随机数

/*
 *randn返回0-1的正态分布的随机数
 *类型T 允许的三种形式float double long double
 */
template
void randn(T & y, uint seed = 0, bool flag = false) {

	if (!flag) {
		srand(time(NULL));
	}
	else {
		srand(seed);
	}
	T x1, x2;
	x1 = rand() % RAND_MAX / (T)RAND_MAX;
	x2 = rand() % RAND_MAX / (T)RAND_MAX;
	y = sqrt(-2 * log(x1))*cos(2.0 * NA_PI*x2);
}

实现矩阵运算

NANA简介_第1张图片

数值分析算法

仿生学算法

  GA模块中提供了遗传算法的实现过程
NANA简介_第2张图片

神经网络

笔者的话

  笔者郑重承诺,NANA将永远免费,且在笔者能够码得动代码的岁月里,一直更新下去。

你可能感兴趣的:(智能算法,矩阵论,基础数学,数值分析,矩阵运算,遗传算法,数据结构,SDK)