NewQuant的设计——MatrixComputation的领域分析

  MatrixComputation是NewQuant中最重要也是最大的一个模块,这个模块的领域分析要从回答几个问题开始。

一、矩阵的用途?

1.矩阵可以作为一个二维表充当容器;

2.矩阵用来表征一个线性方程组或LS问题;

3.矩阵作为特定模型的参数,例如多元正态分布的协方差矩阵

二、关于矩阵的计算有哪些?

1.基本运算例如相加、相减、相乘和转置,多元统计中的拉直,不同矩阵的拼接等等

2.高级矩阵分解运算,例如LU分解、QR分解和SVD分解(通常矩阵分解为解方程服务)

3.高级运算,例如求逆、求秩等。

  翻开《Matrix Computation》这本书(MatrixComputation模块的主要参考文献),研究过里面的算法之后可以发现,绝大部分解方程的算法(非迭代算法)需要做矩阵分解,将一个一般化的矩阵分解成若干特殊化的矩阵的乘积,然后依次解决相应的方程。

三、特殊的矩阵有哪些?

上下三角阵、上下带状阵、对称阵、对称带状阵、正交阵、置换阵、对角阵等等。

  下面再来看第一个问题,作为容器的矩阵行为和功能相对简单,如果要表征线性方程组的话,就必须考虑矩阵分解的问题。矩阵分解是将一般化的矩阵分解成一系列特殊矩阵的乘积。如此一来关于解方程的领域分析清晰了,解方程先做矩阵分解,不同的矩阵分解的方法产生不同形状的特殊矩阵,特殊矩阵对应的方程有特殊的解法。

  在来看第二个问题,高级计算的领域分析被前面的论述解决了,留下了基本计算的领域分析问题。从理论上讲,一个矩阵的转置或两个矩阵相加将产生一个新的矩阵,但是如果从数值计算效率的角度看,产生的新矩阵是一个“临时对象”,对于矩阵这种数据密集型对象来讲,临时对象的产生会严重影响性能。为了避年产生临时对象,基本计算只能是“形式上的”,例如矩阵相加产生一个轻量级的对象,该对象是矩阵,但是只是形式上表示两个矩阵相加。这也就是“延迟赋值”的技巧。

  下面总结MatrixComputation的领域分析结论,除了一般矩阵之外还要实现若干特殊矩阵,这些矩阵都有容器的功能,存储着矩阵数据。每一种特殊矩阵都有着自己的特殊解法,一般矩阵在做矩阵分解之后将解方程的工作委托给特殊矩阵。为了避免临时对象的产生,矩阵的基本运算只是形式上的,并不产生一个新矩阵作为计算结果。

NewQuant的设计(二)——MatrixComputation的领域分析的更多相关文章

  1. NewQuant的设计(一)——整体的领域设计

    NewQuant的设计思路——整体的领域分析 “领域驱动设计(DDD)”是著名软件工程建模专家Eric Evans提出的一个重要概念,是“面向对象分析设计(OOAD)”的深化.当业务逻辑变得复杂,系统 ...

  2. (数字IC)低功耗设计入门(二)——功耗的分析

    前面学习了进行低功耗的目的个功耗的构成,今天就来分享一下功耗的分析.由于是面向数字IC前端设计的学习,所以这里的功耗分析是基于DC中的power compiler工具:更精确的功耗分析可以采用PT,关 ...

  3. .NET应用架构设计—面向查询的领域驱动设计实践(调整传统三层架构,外加维护型的业务开关)

    阅读目录: 1.背景介绍 2.在业务层中加入核心领域模型(引入DomainModel,让逻辑.数据有家可归,变成一个完整的业务对象) 3.统一协调层Application Layer(加入协调层来转换 ...

  4. julia应用于自动驾驶汽车、机器人、3D 打印、精准医疗、增强现实、基因组学、能源交易、机器学习、金融风控和太空任务设计等多个领域

    编程界的新宠 Julia 发布 1.0 正式版本,多种优势集于一身2018-08-14 14:14 公司Julia 的累积下载次数超过 200 万,已被应用于自动驾驶汽车.机器人.3D 打印.精准医疗 ...

  5. 基于ABP落地领域驱动设计-06.正确区分领域逻辑和应用逻辑

    目录 系列文章 领域逻辑和应用逻辑 多应用层 示例:正确区分应用逻辑和领域逻辑 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落 ...

  6. JavaScript 框架设计(二)

    JavaScript 高级框架设计 (二) 上一篇,JavaScript高级框架设计(一)我们 实现了对tag标签的选择 下来我们实现对id的选择,即id选择器. 我们将上一篇的get命名为getTa ...

  7. iOS开发CoreAnimation解读之二——对CALayer的分析

    iOS开发CoreAnimation解读之二——对CALayer的分析 一.UIView中的CALayer属性 1.Layer专门负责view的视图渲染 2.自定义view默认layer属性的类 二. ...

  8. 游戏UI框架设计(二) : 最简版本设计

    游戏UI框架设计(二) --最简版本设计 为降低难度决定先讲解一个最简版本,阐述UI框架的核心设计理念.这里先定义三个核心功能: 1:UI窗体的自动加载功能. 2:缓存UI窗体. 3:窗体生命周期(状 ...

  9. Redis缓存项目应用架构设计二

    一.概述 由于架构设计一里面如果多平台公用相同Key的缓存更改配置后需要多平台上传最新的缓存配置文件来更新,比较麻烦,更新了架构设计二实现了缓存配置的集中管理,不过这样有有了过于中心化的问题,后续在看 ...

随机推荐

  1. Oracle计算时间函数(对时间的加减numtodsinterval、numtoyminterval) (转)

    原文来自:http://blog.itpub.net/756652/viewspace-697256/ 11g interval分区,按天分区,需要用到函数numtodsinterval.   cre ...

  2. LRU Cache实现

    最近在看Leveldb源码,里面用到LRU(Least Recently Used)缓存,所以自己动手来实现一下.LRU Cache通常实现方式为Hash Map + Double Linked Li ...

  3. js⑦

    立即执行函数or自执行函数 为了避免全局变量的产生.(function(){ //var a = 10; //var b = 20;//console.log(a,b); -------------v ...

  4. js限制文本框只能输入数字方法小结(转)

    这篇文章主要分享下js代码限制文本框中只能输入数字的多个实例,学习下js控制文本框中输入数字的方法,需要的朋友可以参考下   有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数 ...

  5. 学习opencv之路(一)

    先看一下<学习opencv> 找几个demo 学会相机标定 我做的是单目相机的标定.

  6. ios开发之网络php

    接着前面的学习,几天上午学习了数据库网络值php用户的注册与登录,感觉代码与ios上的oc太相似了,因此学习下来没什么障碍了,下面是代码: 首先是javascript.html文件中: <!DO ...

  7. android densityDpi 的由来

    ---恢复内容开始--- 今天做屏幕适配的时候,发现一个奇怪的现象: HTC D820u/ 红米Note/HONOR H30-L02 /Coolpad 8297-T01 4款手机的分辨率均为 1280 ...

  8. iOS学习之观察者模式

    观察者模式: 观察者具体应用有两个:通知机制(notification)和KVO(key-value-observing)机制 通知机制: 谁要监听值的变化,谁就注册通知 ,特别要注意,通知的接受者必 ...

  9. Java—从文件中读取数据

    1.FileInputStream() // 构建字节输入流对象,参数为文件名 FileInputStream fin = new FileInputStream("message" ...

  10. 远程联机linux主机

    远程联机linux主机 推荐使用 ssh  如 ssh user@www.abc.com(ssh使用公钥+私钥非对称加密,数据传输安全,不要使用telnet) 传输文件:sftp 或者 scp 若想使 ...