用 GSL 求解超定方程组及矩阵的奇异值分解(SVD) 最近在学习高动态图像(HDR)合成的算法,其中需要求解一个超定方程组,因此花了点时间研究了一下如何用 GSL 来解决这个问题. GSL 里是有最小二乘法拟合(Least-Squares Fitting)的相关算法,这些算法的声明在 gsl_fit.h 中,所以直接用 GSL 提供的 gsl_fit_linear 函数就能解决这个问题.不过我想顺便多学习一些有关 SVD 的知识.所以就没直接使用 gsl_fit_linear 函数. SVD…
接上一篇... 下面我们将 SVD 相关的功能封装成一个类,以方便我们提取 S 和 V 的值. 另外,当我们一个 A 有多组 x 需要求解时,也只需要计算一次 SVD 分解,用下面的类能减少很多计算量. 头文件如下: #ifndef GSLSINGULARVALUEDECOMPOSITION_H #define GSLSINGULARVALUEDECOMPOSITION_H #include <gsl/gsl_matrix.h> #include <gsl/gsl_vector.h>…
求解非线性超定方程组,网上搜到的大多是线性方程组的最小二乘解法,对于非线性方程组无济于事. 这里分享一种方法:SciPy库的scipy.optimize.leastsq函数. import numpy as np from scipy.optimize import leastsq from math import sqrt def func(i): x,y,z = i return np.asarray(( x**2-x*y+4, x**2+y**2-x*z-25, z**2-y*x+4, x…
Author : Evensgn  Blog Link : http://www.cnblogs.com/JoeFan/ Article Link : http://www.cnblogs.com/JoeFan/p/4338003.html   游戏介绍 Lights Out (关灯)是一款据说在20世纪90年代就已经被设计出的小游戏,游戏的玩法十分简单. 首先,给定一个 n 行 m 列的矩形方格阵,每个格子上都有一盏灯. 初始时,有些灯是开着的,有些灯是关着的. 玩家每次进行一次操作,选中一盏…
高斯消元求解异或方程组: 比较不错的一篇文章:http://blog.sina.com.cn/s/blog_51cea4040100g7hl.html cojs.tk  539. 牛棚的灯 ★★☆   输入文件:lights.in   输出文件:lights.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 贝希和她的闺密们在她们的牛棚中玩游戏.但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了.贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊…
第一道高斯消元题目~ 题目:有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关,如果为关就变为开.你的目标是经过若干次开关操作后使得最后N个开关达到一个特定的状态.对于任意一个开关,最多只能进行一次开关操作.你的任务是,计算有多少种可以达到指定状态的方法.(不计开关操作的顺序)0<=N<=29 我们用样例来模拟一下: 我的高斯消元求解异或方程组模版: int gauss()…
机器学习降维方法概括   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014772862/article/details/52335970 最近刷题看到特征降维相关试题,发现自己了解的真是太少啦,只知道最简单的降维方法,这里列出了常见的降维方法,有些算法并没有详细推导.特征降维方法包括:Lasso,PCA,小波分析,LDA,奇异值分解SVD,拉普拉斯特征映射,SparseAutoEncoder,局部线性嵌入LLE,等距映射Isomap. 1…
机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用(好文) [简化数据]奇异值分解(SVD) <数学之美> 第15章 矩阵运算和文本处理中的两个分类问题…
矩阵的奇异值分解(Singular Value Decomposition,SVD)是数值计算中的精彩之处,在其它数学领域和机器学习领域得到了广泛的应用,如矩阵的广义逆,主分成分析(PCA),自然语言处理(NLP)中的潜在语义索引(Latent Semantic Indexing),推荐算法等. 鉴于实际应用,本次分享中的数域为实数域,即我们只在实数范围内讨论.我们假定读者具有大学线性代数的水平.那么,矩阵的奇异值分解定理如下: (定理)(奇异值分解定理)任意一个$m \times n$矩阵A可…
奇异值分解,是在A不为方阵时的对特征值分解的一种拓展.奇异值和特征值的重要意义相似,都是为了提取出矩阵的主要特征. 对于齐次线性方程 A*X =0;当A的秩大于列数时,就需要求解最小二乘解,在||X||=1的约束下,其最小二乘解为矩阵A'A最小特征值所对应的特征向量. 假设x为A'A的特征向量的情况下,为什么是最小的特征值对应的x能够是目标函数最小?具体证明如下: 齐次线性方程组的最小二乘问题可以写成如下:min ||Ax||  s.t:    ||x||=1 目标函数:||Ax|| = x'A…
1.      solve函数 ①求解单个一元方程的数值解 syms x; x0 = double(solve(x +2 - exp(x),x)); 求x+2 = exp(x)的解,结果用double显示. 使用过程中,也可以写作x+2 == exp(x),注意是'=='. 另外,若有多个解,该函数只返回一个的解. ②求解含有符号变量方程的解 syms x a b c; x0 = solve(a*x^2+b*x+c,x); 可以求得两个解. ③求解方程组 syms x y z; e1 = 2*x…
考虑一个向量值函数$R^m \rightarrow R^n$,即$\textbf{y} = f(\textbf{x})$,它的雅各比(Jacobian)矩阵定义如下. 下面记录下一段使用python求向量值函数Jacobian矩阵的代码,只有向量值函数可用,如果为标量函数则会报错. import torch # 定义函数 x = torch.tensor([1, 3, 5.], requires_grad=True) A = torch.tensor([[1., 0, 1], [0, 1, 0]…
题意:给出一个5*6的图,每个灯泡有一个初始状态,1表示亮,0表示灭.每对一个灯泡操作时,会影响周围的灯泡改变亮灭,问如何操作可以使得所有灯泡都关掉. 题解: 这题和上一题几乎完全一样..就是要输出解.. 然后我发现我回代的过程错了TAT 已修改上一题代码和模版 因为回代的过程合!并!了! #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<iost…
在R中可以用函数matrix()来创建一个矩阵,应用该函数时需要输入必要的参数值. > args(matrix) function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) data项为必要的矩阵元素,nrow为行数,ncol为列数,注意nrow与ncol的乘积应为矩阵元素个数,byrow项控制排列元素时是否按行进行,dimnames给定行和列的名称. a<-c(3,4,9,8,3,55,2,334) m&l…
版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gmail.com 前言: 上一次写了关于PCA与LDA的 文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的.在上篇文章中便是基于特征值分解的一种解释.特征值和奇异值在 大部分人的印象中,往往是停留在纯粹的数学计算中.而且线性代数或者矩阵论里面,也很少讲任何跟特征值与…
转自:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gmail.com 前言: 上一次写了关于PCA与LDA的文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实…
版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gmail.com 前言: 上一次写了关于PCA与LDA的文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的.在上篇文章中便是基于特征值分解的一种解释.特征值和奇异值在大部分人的印象中,往往是停留在纯粹的数学计算中.而且线性代数或者矩阵论里面,也很少讲任何跟特征值与奇异…
转自:https://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html  (感谢,讲解的太好了) 在机器学习领域,有相当多的应用与奇异值都可以扯上关系,比如做feature reduction的PCA,做数据压缩(以图像压缩为代表)的算法,还有做搜索引擎语义层次检索的LSI(潜语义分析Latent Semantic Indexing) 一.奇异值与特征值基础知识: 特征值分解和奇异值分解在机器学习领域…
版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gmail.com.也可以加我的微博: @leftnoteasy 前言: 上一次写了关于PCA与LDA的 文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的.在上篇文章中便是基于特征值分解的一种解释.特征值和奇异值在 大部分人的印象中,往往是停留在纯粹的数学计算中.而且…
矩阵SVD 奇异值分解(Singular Value Decomposition)是一种重要的矩阵分解方法,可以看做是对方阵在任意矩阵上的推广.Singular的意思是突出的,奇特的,非凡的,按照这样的翻译似乎也可以叫做矩阵的优值分解. 假设矩阵A是一个m*n阶的实矩阵,则存在一个分解使得: 其中,是一个对角阵,只有对角线上面有元素,对角先上面的元素称为矩阵A的奇异值,通常将其进行从大到小排列,在numpy中的api返回的是一个奇异值的向量,我们可以将其转换为对角阵.U和V都是单位正交阵,U和V…
转:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 前言: PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的.在上篇文章中便是基于特征值分解的一种解释.特征值和奇异值在大部分人的印象中,往往是停留在纯粹的数学计算中.而且线性代数或者矩阵论里面,也很少讲任何跟特征值与奇异值有关的应用背景.奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的…
原文:Matlab随笔之求解线性方程 理论知识补充: %矩阵除分为矩阵右除和矩阵左除. %矩阵右除的运算符号为“/”,设A,B为两个矩阵,则“A/B”是指方程X*B=A的解矩阵X. %矩阵A和B的列数必须是相等. % 矩阵左除的运算符号为“\”,设A,B为两个矩阵,则“B\A”是指方程B*X=A的解矩阵X. %矩阵A和B的行数必须是相等. %求解多项式的解,用roots函数 %求解定解方程组(未知数个数等于方程总数) %A*x=b A=[,; ,]; b=[;]; y=A\b z=inv(A)*…
转自:http://silencethinking.blog.163.com/blog/static/911490562008928105813169/ AX=B或XA=B在MATLAB中,求解线性方程组时,主要采用前面章节介绍的除法运算符"/"和"\".如: X=A\B表示求矩阵方程AX=B的解: X=B/A表示矩阵方程XA=B的解. 对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A的列数,方程X=B/A同理. 如果矩阵A不是方阵…
概述 线性回归拟合一个因变量与一个自变量之间的线性关系y=f(x).       Spark中实现了:       (1)普通最小二乘法       (2)岭回归(L2正规化)       (3)Lasso(L1正规化).       (4)局部加权线性回归       (5)流式数据可以适用于线上的回归模型,每当有新数据达到时,更新模型的参数,MLlib目前使用普通的最小二乘支持流线性回归.除了每批数据到达时,模型更新最新的数据外,实际上与线下的执行是类似的. 本文采用的符号: 拟合函数   …
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的文章,个人非常喜欢,也列出来了. 18. Image Stitching图像拼接,另一个相关的词是Panoramic.在Computer Vision: Algorithms and Applications一书中,有专门一章是讨论这个问题.这里的两面文章一篇是综述,一篇是这方面很经典的文章.[20…
1.优化变量 优化变量就是vertex,也就是pose,pose-graph的优化目标就是,调整所有vertex的位置来尽量满足所有边的约束. 上述的还是表层的理解,深一步理解: pose-graph的边就是残差函数(哎,刚哥说的对呀),vertex就是优化变量,G2O封装残差函数比较好,直接封装成了边的形式,但是用ceres,残差函数就得自己构建,所以pose-graph的优化目标也就是一般优化问题的目标——残差函数尽可能小. 2.优化函数 可以参考白巧克力的介绍,假如有n个vertex,根据…
Python 矩阵(线性代数) 这里有一份新手友好的线性代数笔记,是和深度学习花书配套,还被Ian Goodfellow老师翻了牌. 笔记来自巴黎高等师范学院的博士生Hadrien Jean,是针对"花书"的线性代数一章,初来乍到的小伙伴可以在笔记的辅佐之下,了解深度学习最常用的数学理论,加以轻松的支配. 把理论和代码搭配食用,疗效更好.笔记里列举的各种例子,可以帮初学者用一种更直观实用的方式学好线代.开始前,你需要准备好Numpy和Python. 然后来看一下,要走怎样一个疗程--…
可参见这两个页面: 1. http://www.culatools.com/dense/lapack/ 2. http://www.netlib.org/lapack/lug/node1.html 根据实际需要,找到相应的程序,再去lapack中搜索该程序的源码来调用即可. 以求解超定线性方程组为例,它采用最小二乘法(Least Squares Routines)求解,使 最小,相应的程序有: Table 2.3: Driver routines for linear least squares…
@.如果线性方程组无解,则称该方程组是不相容的(inconsistent). @.如果线性方程组至少存在一个解,则称该方程组是相容的(consistent). @.等价方程组(equivalent systems). @.定义:若两个含有相同变量的方程组具有相同的解集,则称它们是等价的(equivalent). @.得到等价的方程组: 1.交换任意两个方程的顺序. 2.任一方程两边同乘一个非零的实数. 3.任一方程的倍数加到另一方程上. @.定义:若方程组中,第k个方程的前k-1个变量的系数均为…
eye(n)创建n阶单位矩阵 zeros(n)创建n阶0方阵 rand(m,n)创建m*n阶元素为从0到1的均匀分布的随机数矩阵 round(A)对矩阵A中所有元素进行四舍五入运算 A^-1用幂运算求解矩阵A的逆 \左除,/右除, .(点号)群运算 已知:PA=B,AQ=B P=B/A(右除), Q=A\B(左除) U = rref(A)对矩阵A进行初等行变换,矩阵U为矩阵A的最简行阶梯矩阵 u = rref([a, eye(size(a))])通过初等行变换的方式得到a的逆 n = input…