Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >执行未知操作的矩阵操作代码

执行未知操作的矩阵操作代码
EN

Stack Overflow用户
提问于 2016-05-25 00:25:49
回答 1查看 25关注 0票数 1

我在理解以下所有代码时遇到了问题。我想我指出的代码的中间部分是在执行乘法,但我不确定,有人能给我解释一下代码的中间部分试图实现什么吗?

我理解数组元素的输入和输出部分,但不了解实际的操作。

我明白这点:

代码语言:javascript
运行
AI代码解释
复制
 #include "stdafx.h"
    #include<iostream>
    using namespace std;
    int main()
    {
       int i,j,k,n;
       float a[100][200],t;
       cout<<"Enter order of matrix-";
       cin>>n;
       cout<<"Enter elements of matrix"<<endl;
       for(i=0;i<n;i++)
          for(j=0;j<n;j++)
             cin>>a[i][j];

但是下面的几行代码让人感到困惑:

代码语言:javascript
运行
AI代码解释
复制
      for(i=0;i<n;i++)
       {
          for(j=n;j<2*n;j++)
          {
              if(i==j-n)
                 a[i][j]=1;
             else
                 a[i][j]=0;
           }
       }
       for(i=0;i<n;i++)
       {
          t=a[i][i];
          for(j=i;j<2*n;j++)
              a[i][j]=a[i][j]/t;
          for(j=0;j<n;j++)
          {
             if(i!=j)
             {
                t=a[j][i];
                for(k=0;k<2*n;k++)
                    a[j][k]=a[j][k]-t*a[i][k];
              }
          }
       }

同样,以下几行是可以理解的:

代码语言:javascript
运行
AI代码解释
复制
cout<<"\n\nInverse matrix\n\n";
       for(i=0;i<n;i++)
       {
          for(j=n;j<2*n;j++)
             cout<<"\t"<<a[i][j];
          cout<<"\n";
        }
    return 0;
    }
EN

回答 1

Stack Overflow用户

发布于 2016-05-25 01:29:41

您的代码正在尝试对矩阵求逆。下面是代码正在做的事情。

假设您有一个n×n矩阵A,我们可以创建一个新的nx2n矩阵

B= AI

其中i是nxn个单位矩阵。B的创建就是这些代码行要做的事情:

代码语言:javascript
运行
AI代码解释
复制
for(i=0;i<n;i++)
       {
          for(j=n;j<2*n;j++) // makes sure you are only accessing columns in the right hand part of the matrix
          {
              if(i==j-n)
                 a[i][j]=1;
             else
                 a[i][j]=0;
           }
       }

然后,在这个2n宽的矩阵上执行一系列行操作,以获得左侧的单位矩阵,从而得到第三个矩阵

C=ID

其中i又是nxn个单位矩阵。通过行操作创建C就是这部分代码要做的事情:(虽然我不会谈论正在使用的算法的正确性,因为我已经这样做了一段时间了,我通常只使用SVD算法进行求逆)

代码语言:javascript
运行
AI代码解释
复制
for(i=0;i<n;i++) //transform B matrix into C matrix
       {
          t=a[i][i];
          for(j=i;j<2*n;j++)
              a[i][j]=a[i][j]/t;
          for(j=0;j<n;j++)
          {
             if(i!=j)
             {
                t=a[j][i];
                for(k=0;k<2*n;k++)
                    a[j][k]=a[j][k]-t*a[i][k];
              }
          }
       }

现在,当您成功完成行操作并获得C矩阵左侧的单位矩阵时,就会发现组成C矩阵右侧的nxn D矩阵是A的逆矩阵。

AD =i

这就是为什么最后一段代码只抓住了我所说的C矩阵的右边。

这就是您的代码要做的事情。如果你想了解更多关于它背后的理论,我可以看看“C中的数值食谱”这本书。这是这类事情的黄金标准,并且可以在网上免费获得。http://www.nrbook.com/a/bookcpdf.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37425983

复制
相关文章
numpy矩阵操作
广播 for循环计算 a = np.array([1,2,3,4]) b = np.array([10,20,30,40]) c = a * b 输出[ 10 40 90 160] 切片 取值[0,0],[1,1],[2,0] import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = x[[0,1,2], [0,1,0]] print (y) start: end:step 切片范围,end默认-1 [1,2]
sofu456
2021/12/06
3750
【MATLAB】矩阵操作 ( 矩阵构造 | 矩阵运算 )
设置一个已经给定的矩阵的行列重复次数 , 根据给定的矩阵 , 进行指定的重复 , 生成新矩阵 ;
韩曙亮
2023/03/29
1.3K0
【MATLAB】矩阵操作 ( 矩阵构造 | 矩阵运算 )
opencv 矩阵操作函数
简介OpenCV 矩阵类的成员函数可以进行很多基本的矩阵操作内容列表序号函数描述1cv2.phase()计算二维向量的方向2cv2.polarToCart()已知角度和幅度,求出对应的二维向量3cv2.pow()对矩阵内的每个元素求幂4cv2.randu()用均匀分布的随机数填充给定的矩阵5cv2.randn()用正态分布的随机数填充给定的矩阵6cv2.randShuffle()随机打乱矩阵元素7cv2.reduce()通过特定的操作将二维矩阵缩减为向量8cv2.repeat()将一个矩阵的内容复制到另一个
用户10118114
2022/10/18
4210
【MATLAB】矩阵操作 ( 矩阵下标 | 矩阵下标排列规则 )
文章目录 一、矩阵构造 1、获取指定位置的矩阵元素 2、获取指定行的元素 3、获取指定列的元素 二、矩阵下标排列顺序 一、矩阵构造 ---- 1、获取指定位置的矩阵元素 获取矩阵指定行列元素的方法 : % 生成 5 阶幻方矩阵 A = magic(5) % 从 A 矩阵中获取第 2 行第 3 列元素 B = A(2,3) 2、获取指定行的元素 冒号表示全部 , 在下标中使用冒号 , 表示获取指定行 / 列的所有元素 ; % 取出 A 矩阵的第 3 行所有元素 % : 表示全部 C = A(3,:)
韩曙亮
2023/03/29
3.4K0
【MATLAB】矩阵操作 ( 矩阵下标 | 矩阵下标排列规则 )
OpenCV - 矩阵操作 Part 3
对二维矢量场计算笛卡尔一极坐标转换的方位角(角度)部分。该矢量场是由两个独立的单通道矩阵组成。当然这两个输入矩阵的尺寸相同。(如果你有一个二通道的矩阵,那么调用cv2.phase()将会做你所需要的。)然后,dst中的每一个元素都从x和y的相应元素中计算两者的反正切值得到。
为为为什么
2022/08/09
1.9K0
OpenCV - 矩阵操作 Part 3
OpenCV - 矩阵操作 Part 1
参数说明src1图像1alpha图像1 权重 (例如 0.5)src2图像2beta图像2 权重 (例如 0.5)gamma附加偏置
为为为什么
2022/08/09
1.6K0
OpenCV - 矩阵操作 Part 1
OpenCV - 矩阵操作 Part 2
当应用于矩阵时,src的每个元素都与upperb和lowerb中的对应元素进行校验。如果src中的元素在由upperb和lowerb给出的值之间,则dst的相应元素设置为255;否则设置为0。
为为为什么
2022/08/09
2.3K0
OpenCV - 矩阵操作 Part 2
MATLAB矩阵的基本运算及操作
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152988.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/12
3440
MATLAB矩阵的基本运算及操作
opencv学习(二)-矩阵的掩码操作
根据掩码矩阵(也称作核)重新计算图像中每个像素的值。掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响。从数学观点看,我们用自己设置的权值,对像素邻域内的值做了个加权平均。
ACK
2020/01/14
1.1K0
opencv学习(二)-矩阵的掩码操作
VBA操作VBA——代码操作
有了前面VBA工程对象的基础,要操作代码就容易了,只要找到对象对应的属性、方法就可以。
xyj
2020/07/28
2.5K0
VBA操作VBA——代码操作
Matlab矩阵基本操作(定义,运算)
最简单的建立矩阵的方法是从键盘直接输入矩阵的元素,输入的方法按照上面的规则。建立向量的时候可以利用冒号表达式,冒号表达式可以产生一个行向量,一般格式是: e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。还可以用linspace函数产生行向量,其调用格式为:linspace(a,b,n) ,其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
全栈程序员站长
2022/07/31
2.8K0
3 数学运算 矩阵操作
这里说一下向量运算,跟MATLAB的操作完全相同,比如向量的点乘,就是说对向量的元素一一操作
猫叔Rex
2020/06/30
7780
3 数学运算 矩阵操作
python+numpy:基本矩阵操作
# 参考网站:http://cs231n.github.io/python-numpy-tutorial/
用户7886150
2021/01/03
7300
matlab—基本操作与矩阵输入
还有一个月就美赛了,本系列文章适用于完全没有任何matlab基础,但是有别的编程语言基础的人看,我会结合自己的理解,有的放矢的讲,不会掺杂很多废话,各位读者轻喷~
mathor
2018/07/24
1.3K0
matlab—基本操作与矩阵输入
R语言中矩阵常用的操作(笔记)
发现好久没有更新微信文了, 所谓才思枯竭, 黔驴技穷就是我现在的状态. 记得看过这样一句话: "如果你不知道写什么东西, 那就写不知道写什么事情这件事吧". 深得我心.
邓飞
2019/07/05
2.8K0
R语言中矩阵常用的操作(笔记)
Mybatis如何执行批量操作?
Mybatis常会出现批量操作,如批量查询,批量插入,批量修改(replace into)。批量操作要比循环执行效率提升很多,这里对mybatis的批量操作做一个总结讲解。
程序狗
2021/09/06
1.2K0
Mybatis如何执行批量操作?
具有依赖关系的并行操作执行
今天看到看到一篇MSDN文章《Parallelizing Operations With Dependencies》,作者是微软Parallel Computing Platform团队的一个开发经理。文中提供出一种用于并行执行一组具有依赖关系的操作的解决方案,这不由得想起我在一年之前写的一个具有相同的功能的组件。于是翻箱倒柜找了出来,进行了一些加工,与大家分享一下。 一、问题分析 我们知道,较之串行化的操作,并行计算将多个任务同时执行,从而充分利用了资源,提高了应用的整体性能。对于多个互不相干的操作,我们
蒋金楠
2018/01/16
2.8K0
具有依赖关系的并行操作执行
操作系统:程序的并发执行
在早期无操作系统及单道批处理系统时,程序都是按照顺序进行执行的。先进入内存的先执行,在执行的过程中不能执行其他的程序。程序中的指令也是按照顺序执行,一条指令正在执行时不能开始执行另一条指令。所以程序顺序执行有以下几个特点。
平也
2020/04/03
9360
具有依赖关系的并行操作执行
今天看到看到一篇MSDN文章《Parallelizing Operations With Dependencies》,作者是微软Parallel Computing Platform团队的一个开发经理。文中提供出一种用于并行执行一组具有依赖关系的操作的解决方案,这不由得想起我在一年之前写的一个具有相同的功能的组件。于是翻箱倒柜找了出来,进行了一些加工,与大家分享一下。
javascript.shop
2019/09/04
6.2K0
具有依赖关系的并行操作执行
点击加载更多

相似问题

始终同步执行未知操作

11

对未知类型执行foreach操作

22

对矩阵的分组列执行操作

30

未知操作

13

如何执行Dalvik操作代码

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档