Excel函数使用——求逆矩阵及矩阵值(Minverse及MDeterm).doc

Excel函数使用——求逆矩阵及矩阵值(Minverse及MDeterm).doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Excel函数使用——求逆矩阵及矩阵值(Minverse及MDeterm)

Excel函数使用——求逆矩阵及矩阵值(Minverse及MDeterm) // 定义测试数组 int arg2[3][3] = {1, 2, 1, 3, 4, -1, 0, 2, 0}; // 计算(这个方法没变) VARIANT varArg1; SAFEARRAY *psa; SAFEARRAYBOUND rgsabound[2]; rgsabound[0].lLbound = 0; // 该维的下界 rgsabound[0].cElements = 3; // 该维的元素个数 rgsabound[1].lLbound = 0; rgsabound[1].cElements = 3; long lIndex[2]; psa = SafeArrayCreate(VT_I4, 2, rgsabound); // 二维 for (long k = 0; k (long)3; k++) { lIndex[0] = k; for ( long num = 0; num (long)3; num++ ) { lIndex[1] = num; SafeArrayPutElement (psa, lIndex, arg2[k][num]); // } } varArg1.vt = VT_ARRAY | VT_I4; // 整型数组 varArg1.parray = psa; // 存储数据 VARIANT varRet = oFun.MInverse( varArg1 ); // 其实结果是正确的,只是开始没有找到提取逆矩阵的方法 // 我通过计算矩阵值的函数来计算逆矩阵,结果和Excel中的吻合 double varVal = oFun.MDeterm( varRet ); // 0.125,正确 // 于是寻找提取逆矩阵的方法 // 定义一个动态的二维数组 VARIANT** arg3; // 此处必须用VARIANT类型 // 根据逆矩阵的维数和大小分配空间 // 先获取逆矩阵的信息 UINT uDim = SafeArrayGetDim( varRet.parray ); UINT uEleSize = SafeArrayGetElemsize( varRet.parray ); long nDim1UBound; long nDim1LBound; SafeArrayGetUBound( varRet.parray, 1, nDim1UBound ); SafeArrayGetLBound( varRet.parray, 1, nDim1LBound ); long nDim2UBound; long nDim2LBound; SafeArrayGetUBound( varRet.parray, 2, nDim2UBound ); SafeArrayGetLBound( varRet.parray, 2, nDim2LBound ); long nDim1Count = nDim1UBound - nDim1LBound + 1; long nDim2Count = nDim2UBound - nDim2LBound + 1; // 分配空间 arg3 = new VARIANT *[nDim1UBound]; for ( int nn = 0; nn nDim1UBound; nn++ ) { arg3[nn] = new VARIANT[nDim2UBound]; } // 提取逆矩阵 int x = 0; int y = 0; for ( long nDim1 = nDim1LBound; nDim1 = nDim1UBound; nDim1++ ) { lIndex[0] = nDim1; y = 0; for ( long nD

文档评论(0)

htfyzc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档