`
lilisalo
  • 浏览: 1108464 次
文章分类
社区版块
存档分类
最新评论

Lu基于系统内置对象创建扩展数据类型,小矩阵乘效率测试

 
阅读更多

Lu基于系统内置对象创建扩展数据类型,小矩阵乘效率测试

本例中,我们将基于系统内置实数数组创建矩阵(matrix)类型,即:基本类型为luDynData_realarray(标识实数数组),扩展类型为matrix(标识矩阵)。为了简单,我们仅处理二维实数数组即矩阵类型。

基本要点:

(1)为扩展类型matrix编写运算符重载函数OpMatrix

(2)用函数LockKey将重载函数OpMatrix注册到Lu,锁定的键的类型即为matrix,要注册为常量,以便于使用。

(3)为扩展类型matrix编写其他操作函数(本例未提供)。

(4)用函数LockKey解锁键matrix(本例中,程序退出时会自动解锁,故可以不用)。


习题:

(1)自定义矩阵的加、减、左除、右除、点左除等运算,自编测试字符串代码,重新编译运行程序,观察计算结果。

(2)小矩阵乘效率测试。编译运行以下Lu字符串代码:

main(:a,b,c,d,t,i)=
a=new[matrix,2,2,data:1.,2.,2.,1.],
b=new[matrix,2,2,data:2.,1.,1.,2.],
c=new[matrix,2,2,data:2/3.,-1/3.,-1/3.,2/3.],
t=clock(),
d=a*b, i=0, while{i<1000000, d=d*c*b, i++},
o{d, "time=",[clock()-t]/1000.," seconds.\r\n"}

C/C++中的字符串定义为:

	wchar_t ForStr[]=L"main(:a,b,c,d,t,i)= a=new[matrix,2,2,data:1.1,2.,2.,1.], b=new[matrix,2,2,data:2.,1.,1.,2.], c=new[matrix,2,2,data:2/3.,-1/3.,-1/3.,2/3.], t=clock(), d=a*b, i=0, while{i<1000000, d=d*c*b, i++}, o{d, \"time=\",[clock()-t]/1000.,\" seconds.\r\n\"}";//字符串表达式

结果:

4. 5.
5. 4.
time=0.875 seconds.
请按任意键继续. . .

Matlab 2009a 代码:

a=[1.,2.;2.,1.];
b=[2.,1.;1.,2.];
c=[2/3.,-1/3.;-1/3.,2/3.];
tic,
d=a*b;
for i=1:1000000
d=d*c*b;
end
d,
toc

结果:

d =
     4     5
     5     4
Elapsed time is 2.903034 seconds.

本例矩阵乘效率测试,Lu的速度超过了Matlab,主要在于Lu有更高的动态对象管理效率。

分享到:
评论

相关推荐

    LU分解LU分解矩阵,LU分解矩阵,LU分解矩阵,

    LU分解矩阵,LU分解矩阵,LU分解矩阵,LU分解矩阵,LU分解矩阵,

    基于matlab的数值分析(矩阵的LU分解)实验报告.pdf

    基于matlab的数值分析(矩阵的LU分解)实验报告.pdf基于matlab的数值分析(矩阵的LU分解)实验报告.pdf基于matlab的数值分析(矩阵的LU分解)实验报告.pdf基于matlab的数值分析(矩阵的LU分解)实验报告.pdf基于matlab的数值...

    基于matlab的数值分析(矩阵的LU分解)实验报告.docx

    基于matlab的数值分析(矩阵的LU分解)实验报告.docx基于matlab的数值分析(矩阵的LU分解)实验报告.docx基于matlab的数值分析(矩阵的LU分解)实验报告.docx基于matlab的数值分析(矩阵的LU分解)实验报告.docx基于matlab的...

    LU矩阵分解代码

    根据LU矩阵分解来解方程。先对矩阵进行LU分解,然后根据分解结果求解方程。

    c++矩阵求逆的lu分解实现.cpp

    利用矩阵lu分解的优秀特性进行矩阵求逆的代码,减少求逆计算量,大约200行 求逆矩阵思路: 1.求矩阵的crout(LU)分解,其中L为下三角矩阵,U为上三角矩阵 2.求L,U矩阵的伴随阵,参考文献:三角形矩阵求伴随矩阵...

    矩阵LU分解求逆矩阵

    对n*n矩阵,通过at*a生成正定对称矩阵,然后通过LU分解,求逆矩阵;同时还可以通过LU分解求线性方程组的解

    LU 分解法求矩阵的逆

    LU分解是矩阵分解的一种,可以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。LU分解主要应用在数值分析中,用来解线性方程、求矩阵的逆或计算行列式。

    矩阵分解方法之一——LU分解方法

    matlab,矩阵分解方法之一——LU分解方法,用于学习交流。矩阵的三角分解是一个方阵分解为两个基本三角阵的乘积,其中一个三角阵为上三角阵,另一个是下三角阵。这种分解为LU分解。

    基于C++的矩阵LU分解及行列式计算

    //本程序运行环境为Visual Studio 2019,较低版本的VS一般也能运行,请读者自行测试 //本程序代码清晰,注释明确 //本程序能够对输入的任意方阵求其行列式、判断是否能进行LU分解(doolittle分解),进行LU分解 //本...

    矩阵的lu分解

    矩阵的LU分解,一般的例子及c语言编程实验

    矩阵求逆LU分解法_LU_矩阵求逆_源码

    C++编写LU分解法求逆矩阵,亲测可用。

    矩阵的LU分解_fortran版

    采用fortran代码编写的矩阵的LU分解及大型多元方程的计算

    矩阵 LU 分解 源程序

    矩阵 LU 分解 矩阵 LU 分解 矩阵 LU 分解 矩阵 LU 分解 矩阵 LU 分解 矩阵 LU 分解 矩阵 LU 分解

    基于LU分解法求解矩阵的逆

    由于之前需要一个矩阵逆的代码,在网上搜了下,结果发现没有符合自己要求的求逆运算,就自己实现了一个。已经过测试,可以和matlab中的计算结果对比。值得参考

    小型矩阵的LU分解(三到四阶矩阵方便使用)

    一个简单的LU分解小程序,闲着没事编的,希望能够帮到一些人。 这个是小型矩阵的LU分解,方便从键盘键入3—4阶的矩阵,超过四阶的不建议使用。 程序语言C++,编译环境VS2017,其实挺简单的,只是用了嵌套vector,...

    LU矩阵分解/矩阵三角分解

    实现了矩阵的LU分解,也称三角分解,输入为n阶方阵A,输出为L和U,同时会自动进行矩阵是否可以进行LU分解的判断,注释翔实,有一定基础的一定可以轻松看懂。

    Matlab 矩阵LU分解

    使用MATLAB实现矩阵的LU分解,MATLAB自带的函数是无法实现计算方法中的LU分解的;

    大型矩阵LU分解,一个简单的LU分解小程序

    这个是大型矩阵的LU分解,可以将excel表中的数据直接复制粘贴到相应的txt文件中,可实现大型矩阵的LU分解。 程序语言C++,编译环境VS2017,其实挺简单的,只是用了嵌套vector,如果自己掌握的较好的,我建议用map...

    LU变换求解矩阵的解

    本文档使用的是LU变换求解矩阵的解,LU变换又称杜利特尔变换,具体的实现方法请参照西安交通大学版数值分析课程

    基于LU分解的矩阵求逆算法-LU_decomp.zip

    基于LU分解的矩阵求逆算法-LU_decomp.zip 基于LU分解的矩阵求逆算法,这是我自己编写的,需要的自己看吧,不懂得可以问我:lol

Global site tag (gtag.js) - Google Analytics