矩阵

矩阵求导

本小妞迷上赌 提交于 2020-01-18 13:49:04
文章目录 矩阵求导 向量对向量求导 标量对向量求导 几个常见的 矩阵求导 我喜欢Denominator layout 哼 向量对向量求导 ∂ A x ∂ x = A T \frac{\partial{\pmb{A}}{\pmb{x}}}{\partial{\pmb{x}}}=\pmb{A}^T ∂ x x x ∂ A A A x x x ​ = A A A T ∂ x T A ∂ x = A \frac{\partial{\pmb{x}^T}{\pmb{A}}}{\partial{\pmb{x}}}=\pmb{A} ∂ x x x ∂ x x x T A A A ​ = A A A 标量对向量求导 几个常见的 来源: CSDN 作者: fgh431 链接: https://blog.csdn.net/zhoutianzi12/article/details/104027928

剑指offer-二维数组中的查找

情到浓时终转凉″ 提交于 2020-01-18 05:44:25
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 static auto __=[](){ std::ios::sync_with_stdio(false); cin.tie(nullptr); return nullptr; }(); class Solution { public: bool Find(int target, vector<vector<int> > array) { int n = array.size(); int m = array[0].size(); if(m == 0) { return false; } int i = 0,j = m - 1; while(i < n && j >= 0) { if(array[i][j] == target) return true; else if(array[i][j] > target) { j--; } else { i++; } } return false; } }; 来源: https://www.cnblogs.com/Jawen/p/10960211.html

多元线性回归

吃可爱长大的小学妹 提交于 2020-01-18 04:44:42
一、多元线性回归 所谓的多元线性回归就是指在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。 二、多元线性回归模型 1.建立模型 以二元线性回归模型为例 ,二元线性回归模型如下: 类似的使用最小二乘法进行参数估计 : 2.拟合优度指标 标准误差:对y值与模型估计值之间的离差的一种度量。其计算公式为: 3.置信范围 置信区间的公式为:置信区间= 其中, 是自由度为 的 统计量数值表中的数值, 是观察值的个数, 是包括因变量在内的变量的个数。 三、估值方法 1.普通最小二乘法 普通最小二乘法(Ordinary Least Square, OLS)通过最小化误差的平方和寻找最佳函数。通过矩阵运算求解系数矩阵: 2.广义最小二乘法 广义最小二乘法(Generalized Least Square)是普通最小二乘法的拓展,它允许在误差项存在异方差或自相关,或二者皆有时获得有效的系数估计值。 四、推导过程 五、关于矩阵的计算的程序 我之前写了一个矩阵计算的轮子,详情请参考这篇文章: 《python实现矩阵操作(自造轮子)》 来源: CSDN 作者: M.Philip.Lu 链接: https://blog.csdn.net/qq_43029747/article/details/103758193

Java实现螺旋矩阵

安稳与你 提交于 2020-01-18 03:08:05
螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大, 向左变大,向上变大,如此循环。如下图, 故,实现螺旋矩阵的思路也就跟上图所示,依次从外层向里层循环,当n为偶数时,循环n/2次;n为奇数时,循环n/2+1次。具体实现看以下代码: import java.util.Scanner; public class Snake { public void snake(int n) { int[][] data = new int[n][n]; int intA; int value = 1; if(n % 2 != 0) //奇数循环n/2+1次 { intA = n/2 + 1; }else{ intA = n/2; //偶数循环n/2次 } for(int i = 0; i < intA; i++) //从外向里循环 { //从左到右循环 for(int j = i; j < n - i; j++) { data[i][j] = value++; } //右列从上向下循环 for(int k = i + 1; k < n - i; k++) { data[k][n-i-1] = value++; } //从右到左 for(int l = n-i-2; l >= i; l--) { data[n-i-1][l] = value++; } //从下到上 for

打印 N*N 螺旋矩阵

China☆狼群 提交于 2020-01-18 03:07:05
VIA和EMC都曾经笔过这个试题 输入N, 打印 N*N 矩阵 比如 N = 3,打印: 1 2 3 8 9 4 7 6 5 N = 4,打印: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 /*螺旋矩阵*/ #include <stdio.h> #include <conio.h> #define RIGHT 0 #define DOWN 1 #define LEFT 2 #define UP 3 //N*N矩阵 #define N 5 void printMatrix(int *a[], int n) { int i, j; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%4d", a[i][j]); } printf("/n"); } } void spiralMatrix(int *a[], int n) // int *a[]注意接口的设计 { int i, j; //坐标 int count; //计数器 int k; //循环变量,控制每条边上的点数 int direct; //方向指示,控制行列增减 i = 0; //起点(0,0) j = 0; count = 1; direct = RIGHT; while (n > 1) //为方形才有下列代码 { for

pta7-2-2,二维数组,矩阵运算

故事扮演 提交于 2020-01-18 00:08:52
本人菜鸟,还望诸位大佬多多指点!!! 给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入格式: 输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。 输出格式: 在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。 输入样例: 4 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1 输出样例: 35 代码 #include<stdio.h> int main() { int n,m,d; scanf("%d",&n); int i,j,c,a[20][20]; for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%d",&a[i][j]); } } d=0; for(i=0;i<n-1;i++) { c=0; for(j=0;j<n-1;j++) { if(i!=n-1||j!=n-1) { if(j!=n-1-i) { c=c+a[i][j]; } } } d=d+c; } printf("%d",d); return 0; } 来源: CSDN 作者: 哦我的天! 链接: https://blog.csdn.net/weixin_45981413/article/details/104024454

线性代数学习笔记——矩阵

陌路散爱 提交于 2020-01-17 23:39:25
1.引出 在利用Gauss消元法求解线性方程组的过程中,参与运算的只是其中的系数和常数项,将这些系数和常数项写成"表格"的形式来表示求解的过程,于是引入矩阵的概念。 2.定义 矩阵及其初等行变换  ①矩阵 ( a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋮ ⋮ a s 1 a s 2 ⋯ a s n ) (1) \left( \begin{matrix} a11 &a12 &\cdots &a1n \\ a21 &a22 &\cdots &a2n \\ \vdots &\vdots &\vdots &\vdots \\ as1 &as2 &\cdots &asn \end{matrix} \right)\tag{1} ⎝ ⎜ ⎜ ⎜ ⎛ ​ a 1 1 a 2 1 ⋮ a s 1 ​ a 1 2 a 2 2 ⋮ a s 2 ​ ⋯ ⋯ ⋮ ⋯ ​ a 1 n a 2 n ⋮ a s n ​ ⎠ ⎟ ⎟ ⎟ ⎞ ​ ( 1 ) a ij 称为矩阵的 元素 。元素为实数的矩阵称为 实矩阵 ,元素为复数的矩阵称为 复矩阵 。如果s=n,则(1)式中的矩阵称为 n阶矩阵 或 n阶方阵 两个矩阵完全相同时(行数相同,列数相同,对应元素相同),称他们 相等 两个或两个以上矩阵,行数相同,列数相同,称它们为 同型矩阵  ②初等行变换

蛇形矩阵

大兔子大兔子 提交于 2020-01-17 23:18:50
蛇形矩阵 输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。 具体矩阵形式可参考样例。 输入格式 输入共一行,包含两个整数n和m。 输出格式 输出满足要求的矩阵。 矩阵占n行,每行包含m个空格隔开的整数。 数据范围 1≤n,m≤100 输入样例: 3 3 输出样例: 1 2 3 8 9 4 7 6 5 解法: # include <iostream> using namespace std ; int main ( ) { int n , m , a [ 110 ] [ 110 ] , i , j , x = 0 , y = 0 , dir = 1 ; //dir表示方向,1右,2下,3左,4上 cin >> n >> m ; for ( i = 1 ; i <= n * m ; i ++ ) //因为共有n*m个数字要填,所以循环n*m次 { a [ x ] [ y ] = i ; //x为纵坐标,y为横坐标 switch ( dir ) { case 1 : if ( y + 1 < m && a [ x ] [ y + 1 ] == 0 ) y ++ ; else { dir = 2 ; x ++ ; } break ; //如果没有越界则按照方向继续,否则转向走 case 2 : if ( x + 1 < n && a [ x +

数据结构之稀疏数组

[亡魂溺海] 提交于 2020-01-17 08:02:06
稀疏数组介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组,最大的优势是节点计算机的空间. 稀疏数组的处理方法: (1)记录数组一共有几行几列,有多少个不同的值. (2)把具有不同值的元素的行及值记录在一个小规模的数组中,从为减少程序的规模. 稀疏数组结构 以下用图片来说明,记录的原始数组为11行,11列,有效值为2个 二维数组转稀疏数组的思路 (1)遍历原始的二维数组,得到有效数据的个数sum (2)根据sum就可以创建稀疏数组 (3)将二维数组的有效数据存入到稀疏数组. 稀疏数组转二维数组 (1)先读取稀疏数组的第一行,根据第一行的数据,创建二维数组. (2)读取稀疏数组的后几行,依次赋值给二维数组. 代码demo package com.dataStructure; public class sparseArr { public static void main(String[] args) { //创建原始二维数组 int[][] chessArr = new int[4][8]; chessArr[1][2] = 1; chessArr[2][3] = 2; //统计原始数组非0的个数 int sum = 0; for (int i = 0; i < chessArr.length; i++) { //获取二维数组的行数 for

Android 变形矩阵——Matrix

荒凉一梦 提交于 2020-01-17 06:49:19
对于图像的色彩处理,Android系统提供了ColorMatrix颜色矩阵来帮助我们进行图像处理。而对于图像的图形变化,Android系统也是通过来进行处理的,每个像素点都表达了其坐标的X、Y信息。Android的图形变换矩阵是一个3x3的矩阵,如图(1)所示。 当使用变换矩阵去处理每一个像素点的时候,与颜色矩阵的矩阵乘法一样,计算公式如下所示。 X1 = a * X + b * Y + c Y1 = d * X + e * Y + f l = g * X + h * Y + i 通常情况下,会让g=h=0,i=1,这是使 l = g * x + h *y + i恒成立。因此,只需要关注上面几个参数就可以了。 与色彩变换矩阵的初始矩阵一样,图像变换矩阵也有一个初始矩阵。很明显,就是对直角元素a、e、i我1,其他元素我0的矩阵,如图(2)所示。 图像的变化处理通常包含以下四类基本变化 ● Translate——平移变换 ● Rotate——选择变换 ● Scale——缩放变换 ● Skew——错切变换 ▶ 平移变换 平移变换的坐标值变换过程如图(3)所示,即将每个像素点都进行平移变换。 当从p(X0,Y0)平移到p(X,Y),坐标值发送了如下所示的变换 X = X0 + △X Y = Y0 + △Y 如果写成矩阵形式就是如图(4)所示。 通过技计算可发现如下等式。 X = X0 +