当前位置: 首页 > news >正文

河北网站推广优化wordpress文档管理

河北网站推广优化,wordpress文档管理,wordpress搜索优化,营销手机系统安装1 概述 在图论中#xff0c;BLAS#xff08;Basic Linear Algebra Subprograms#xff09;并不直接应用于图论的计算#xff0c;而是作为一套线性代数计算中通用的基本运算操作函数集合#xff0c;用于进行向量和矩阵的基本运算。然而#xff0c;这些基本运算在图论的相… 1 概述 在图论中BLASBasic Linear Algebra Subprograms并不直接应用于图论的计算而是作为一套线性代数计算中通用的基本运算操作函数集合用于进行向量和矩阵的基本运算。然而这些基本运算在图论的相关计算中可能会被用到尤其是涉及到矩阵运算的时候。 BLAS主要包含以下三个级别的函数 Level 1 BLAS函数 处理单一向量的线性运算如向量的加、减、数乘等。处理两个向量的二元运算如点积、向量外积等。Level 2 BLAS函数 处理矩阵与向量的运算如矩阵与向量的乘积、矩阵的秩1更新等。包含线性方程求解计算如使用高斯消元法解线性方程组。Level 3 BLAS函数 包含矩阵与矩阵的运算如矩阵乘法、矩阵的三角分解等。 在图论中如果涉及到矩阵表示的图如邻接矩阵、线性方程组的求解如网络流问题中的势能法或者特征值问题如图的谱分析等就可能会使用到BLAS库中的函数。 2 运行环境 操作系统win10 64位 编程语言C/C 编译平台vs2019  x64 debug | release igraph版本 0.10.12 3 示例代码 在IGraph中的blas.c文件中提供了丰富的功能来处理图和网络数据结构。这个特定的文件包含了一些使用BLASBasic Linear Algebra Subprograms库的函数用于执行线性代数操作如矩阵-向量乘法、矩阵-矩阵乘法、向量的欧几里得范数计算和向量的点积。 文件中定义了几个函数每个函数都与特定的线性代数操作相关 igraph_blas_dgemv执行矩阵-向量乘法使用BLAS库中的dgemv函数。它支持矩阵的转置操作并允许用户指定alpha和beta系数。 igraph_blas_dgemm执行矩阵-矩阵乘法使用BLAS库中的dgemm函数。它同样支持矩阵的转置操作并允许用户指定alpha和beta系数。 igraph_blas_dgemv_array与igraph_blas_dgemv类似但是它接受C语言数组作为输入而不是IGraph库中的向量对象。 igraph_blas_dnrm2计算向量的欧几里得范数使用BLAS库中的dnrm2函数。 igraph_blas_ddot计算两个向量的点积使用BLAS库中的ddot函数。 3.1 示例1 在下列代码中使用了igraph库特别是它的线性代数部分通过igraph_blas函数集来进行一些基本的矩阵和向量运算。 #include igraph.h // 引入igraph库的头文件 int main(void) { // 定义igraph的矩阵和向量对象 igraph_matrix_t m; igraph_vector_t x, y, z; igraph_real_t xz, xx; // 用于存储计算结果的两个实数变量 // 初始化向量x包含3个元素分别为1.0, 2.0, 3.0 igraph_vector_init_real(x, 3, 1.0, 2.0, 3.0); // 初始化向量y包含4个元素分别为4.0, 5.0, 6.0, 7.0 // 注意虽然y之后会被用于计算但这里先初始化为一些值 igraph_vector_init_real(y, 4, 4.0, 5.0, 6.0, 7.0); // 初始化向量z包含3个元素分别为-1.0, 0.0, 0.5 igraph_vector_init_real(z, 3, -1.0, 0.0, 0.5); // 初始化一个4x3的矩阵m并为其赋值 igraph_matrix_init(m, 4, 3); // 填充矩阵m的元素 MATRIX(m, 0, 0) 1;MATRIX(m, 0, 1) 2;MATRIX(m, 0, 2) 3;MATRIX(m, 1, 0) 2;MATRIX(m, 1, 1) 3;MATRIX(m, 1, 2) 4;MATRIX(m, 2, 0) 3;MATRIX(m, 2, 1) 4;MATRIX(m, 2, 2) 5;MATRIX(m, 3, 0) 4;MATRIX(m, 3, 1) 5;MATRIX(m, 3, 2) 6;// 计算 2 * m.x 3 * y并将结果存储在y中 // 注意这里的操作会改变y的内容 igraph_blas_dgemv(/* transpose */ 0, /* alpha */ 2, m, x, /* beta */ 3, y); // 打印向量y的新内容 igraph_vector_print(y); // 计算向量x的模的平方即x与自身的点积存储在xx中 igraph_blas_ddot(x, x, xx); // 计算向量x和z的点积存储在xz中 igraph_blas_ddot(x, z, xz); // 打印结果 printf(x.x %g, x.z %g\n, xx, xz); // 销毁之前创建的矩阵和向量对象释放内存 igraph_matrix_destroy(m); igraph_vector_destroy(z); igraph_vector_destroy(y); igraph_vector_destroy(x); return 0; } 3.2 示例2 以下代码使用BLASBasic Linear Algebra Subprograms库中的dgemmDouble-precision General Matrix Multiply函数来执行两个矩阵的乘法并将结果存储在第三个矩阵中。 // 引入igraph库的头文件 #include igraph.h int main(void) { // 声明三个igraph_matrix_t类型的变量a, b, c用于存储矩阵 igraph_matrix_t a, b, c; // 初始化一个2x2的矩阵a并为其分配内存 igraph_matrix_init(a, 2, 2); // 设置矩阵a的元素 MATRIX(a, 0, 0) 1; // a[0][0] 1 MATRIX(a, 0, 1) 2; // a[0][1] 2 MATRIX(a, 1, 0) 3; // a[1][0] 3 MATRIX(a, 1, 1) 4; // a[1][1] 4 // 初始化一个2x2的矩阵b并为其分配内存 igraph_matrix_init(b, 2, 2); // 设置矩阵b的元素 MATRIX(b, 0, 0) 5; // b[0][0] 5 MATRIX(b, 0, 1) 6; // b[0][1] 6 MATRIX(b, 1, 0) 7; // b[1][0] 7 MATRIX(b, 1, 1) 8; // b[1][1] 8 // 初始化一个2x2的矩阵c用于存储a和b的乘法结果 igraph_matrix_init(c, 2, 2); // 使用igraph_blas_dgemm函数计算a和b的乘积并将结果乘以0.5后存储在c中 // 第一个和第二个参数分别是矩阵a和b的alpha这里是1即不缩放 // 第三个参数是缩放因子这里是0.5 // 第四和第五个参数是矩阵a和b的指针 // 第六个参数是矩阵c的beta这里是0即不使用c的原始值 // 第七个参数是结果矩阵c的指针 igraph_blas_dgemm(1, 1, 0.5, a, b, 0, c); // 打印矩阵c的内容 igraph_matrix_printf(c, %g); // 释放矩阵a, b, c所占用的内存 igraph_matrix_destroy(a); igraph_matrix_destroy(b); igraph_matrix_destroy(c); // 程序正常退出 return 0; } 4 运行结果 4.1 结果1 首先我们初始化了几个向量x, y, z和一个矩阵m。然后为矩阵m赋值了一个4x3的矩阵。 在第一个igraph_blas_dgemv函数调用中我们试图计算2 * m * x 3 * y并将结果存储在y中。但是请注意由于igraph_blas_dgemv的默认操作是y alpha * A * x beta * y其中A是矩阵x和y是向量alpha和beta是标量因此实际上是在更新y的值而不是简单地计算结果。由于y的初始值不为零这会影响最终结果。 y向量初始化为[4.0, 5.0, 6.0, 7.0]。在调用igraph_blas_dgemv后y将被更新为2 * m * x 3 * y。 矩阵m与向量x的乘法结果是一个4x1的向量其值为[1*1 2*2 3*3, 2*1 3*2 4*3, 3*1 4*2 5*3, 4*1 5*2 6*3]即[14, 20, 26, 32]。 然后我们将这个结果与y的初始值相加并乘以相应的系数 y[0] 变为 2 * 14 3 * 4.0 28 12 40y[1] 变为 2 * 20 3 * 5.0 40 15 55y[2] 变为 2 * 26 3 * 6.0 52 18 70y[3] 变为 2 * 32 3 * 7.0 64 21 85 因此y向量的最终值是[40, 55, 70, 85]。 接下来我们使用igraph_blas_ddot来计算x与x的点积即x.x以及x与z的点积即x.z。这些计算的结果是 x.x 是 [1.0, 2.0, 3.0] 与 [1.0, 2.0, 3.0] 的点积即 1*1 2*2 3*3 14x.z 是 [1.0, 2.0, 3.0] 与 [-1.0, 0.0, 0.5] 的点积即 1*(-1) 2*0 3*0.5 -1 1.5 0.5 因此输出x.x 14, x.z 0.5。 4.2 结果2  根据矩阵乘法的定义和给定的代码矩阵a和b的乘积再乘以0.5会得到矩阵c其元素计算如下 a [1 2; 3 4] b [5 6; 7 8] c 0.5 * (a * b) 矩阵乘法a * b的结果为 [1*5 2*7 1*6 2*8; 3*5 4*7 3*6 4*8] [1 14 6 16; 15 28 18 32] [15 22; 43 50] 然后我们将这个结果乘以0.5得到矩阵c c [15*0.5 22*0.5; 43*0.5 50*0.5] [7.5 11; 21.5 25] 最后程序执行结果如下 11.5 15.5 17 23
http://www.w-s-a.com/news/503012/

相关文章:

  • 网站左侧导航栏设计网站开发后台数据怎么来
  • 临西做网站报价网站建设需要写语句吗
  • 建设网站网站首页购物网站开发代码
  • 淘宝客怎么建立网站网站360优化
  • 安徽建海建设工程有限公司网站网站空间和域名价格
  • 农产品网站建设策划哪里有做枪网站的
  • 更改各网站企业信息怎么做张家港企业网站制作
  • 郑州网站建设咨询银川做网站哪家好
  • 微信网站 微信支付合肥seo排名收费
  • 织梦做的网站如何上线广东省广州市番禺区南村镇
  • 网站设计的导航栏怎么做太原有网站工程公司吗
  • 苏州虎丘区建设局网站如何在一个数据库做两个网站
  • 淘宝天猫优惠券网站建设费用腾讯邮箱企业邮箱登录
  • 深圳福田做网站公司海航科技网站建设
  • 网站降权查询wordpress更换文章背景色
  • 大型电商网站开发金融企业网站建设公司
  • 成都营销型网站建设价格化妆品品牌推广方案
  • 深圳公司手机网站制作苏州网站推广哪家好
  • 网站建设开发方式包括购买学校网站建设费计入什么科目
  • 做简单网站的框架图中小微企业查询平台
  • 哪些网站可以免费做产品推广建设建设部网站
  • 网站开发销售怎么做django做网站
  • 淘宝客网站做百度竞价万网域名怎么绑定网站
  • 建设网站找哪个公司北京知名大公司有哪些
  • 专业彩票网站开发网站流量在哪设置
  • 网站建设对应的岗位榆林做网站公司
  • 网站建设公司怎么算专业js网站分页怎么做
  • 网和网站的区别phpcms和帝国cms哪个好
  • wordpress改网站名字长沙网络营销外包
  • 宝塔怎么做第二个网站网站内容设计遵循的原则有