C++程序用于找到给定矩阵的迹和法线

c++程序用于找到给定矩阵的迹和法线

一些应用程序可以从二维数组或矩阵的使用中受益匪浅。数字存储在矩阵的行和列中。使用多维数组,我们也可以用 C++ 定义 2D 矩阵。在这篇文章中,我们将了解如何使用 C++确定给定矩阵的法线和迹线。

矩阵中元素总数的平方根就是所谓的普通的。迹线由构成主对角线的所有组件组成。让我们查看 C++ 代码中算法的表示。

矩阵迹

$begin{bmatrix}8 & 5& 3换行符6 & 7& 1换行2 & 4& 9换行符end{bmatrix},$

主对角线上所有元素的和:(8 + 7 + 9) = 24,这是给定矩阵的迹

在上一个示例中,使用了一个 3 x 3 矩阵,结果是各矩阵的总和主对角线中的元素数量。矩阵的迹可以在总和中找到。让我们看一下算法有助于我们理解。

算法

读取矩阵 M 作为输入假设 M 有 n 行 n 列总和:= 0对于从 1 到 n 的 i,执行sum := sum + M[ i ][ i ]​​i>结束返回总和

示例

#include #include #define N 7using namespace std;float solve( int M[ N ][ N ] ){   int sum = 0;      // read elements through major diagonal, where row index and column index are same, both are i   for ( int i = 0; i < N; i++ ) {      sum = sum + M[ i ][ i ];   }   return sum;}int main(){   int mat1[ N ][ N ] = {      {5, 8, 74, 21, 69, 78, 25},      {48, 2, 98, 6, 63, 52, 3},      {85, 12, 10, 6, 9, 47, 21},      {6, 12, 18, 32, 5, 10, 32},      {8, 45, 74, 69, 1, 14, 56},      {7, 69, 17, 25, 89, 23, 47},      {98, 23, 15, 20, 63, 21, 56},   };   cout << "The Trace of the first matrix is: " << solve( mat1 ) << endl;   int mat2[ N ][ N ] = {      {6, 8, 35, 21, 87, 8, 26},      {99, 2, 36, 326, 25, 24, 56},      {15, 215, 3, 157, 8, 41, 23},      {96, 115, 17, 5, 3, 10, 18},      {56, 4, 78, 5, 10, 22, 58},      {85, 41, 29, 65, 47, 36, 78},      {12, 23, 87, 45, 69, 96, 12}   };   cout << "The Trace of the second matrix is: " << solve( mat2 ) << endl;}

输出

The Trace of the first matrix is: 129The Trace of the second matrix is: 74

矩阵法线

$begin{bmatrix}8 & 5& 3换行符6 & 7& 1换行2 & 4& 9换行符end{bmatrix},$

所有元素的总和:(8 + 5 + 3 + 6 + 7 + 1 + 2 + 4 + 9) = 45

正态:(所有元素之和的平方根)= √45 = 6.708

在上一个示例中,使用了 3 x 3 矩阵。我们首先计算其所有条目的总和在求其平方根之前。让我们看一下算法来帮助我们理解。

算法

读取矩阵 M 作为输入假设 M 有 n 行 n 列总和初始化为 0对于从 1 到 n 的 i,执行对于范围从 1 到 n 的 j,执行sum := sum + M[ i ][ j ]​​i>结束结束res := 总和的平方根返回结果

示例

#include #include #define N 7using namespace std;float solve( int M[ N ][ N ] ){   int sum = 0;      // go through each element. Using outer loop, access ith row, using inner loop access column. For cell (i, j) read the element and add it to the sum   for ( int i = 0; i < N; i++ ) {      for ( int j = 0; j < N; j++ ) {         sum = sum + M[ i ][ j ];      }   }   return sqrt( sum );}int main(){   int mat1[ N ][ N ] = {      {5, 8, 74, 21, 69, 78, 25},      {48, 2, 98, 6, 63, 52, 3},      {85, 12, 10, 6, 9, 47, 21},      {6, 12, 18, 32, 5, 10, 32},      {8, 45, 74, 69, 1, 14, 56},      {7, 69, 17, 25, 89, 23, 47},      {98, 23, 15, 20, 63, 21, 56},   };   cout << "The Normal of the first matrix is: " << solve( mat1 ) <<       endl;   int mat2[ N ][ N ] = {      {6, 8, 35, 21, 87, 8, 26},      {99, 2, 36, 326, 25, 24, 56},      {15, 215, 3, 157, 8, 41, 23},      {96, 115, 17, 5, 3, 10, 18},      {56, 4, 78, 5, 10, 22, 58},      {85, 41, 29, 65, 47, 36, 78},      {12, 23, 87, 45, 69, 96, 12}   };   cout << "The Normal of the second matrix is: " << solve( mat2 ) <<       endl;}

输出

The Normal of the first matrix is: 41.1947The Normal of the second matrix is: 49.4267

结论

法线和迹线操作属于矩阵。这两个过程需要方阵,这就是我们需要的(因为需要迹方)。迹线的总和是矩阵主对角线中包含的元素,而法线只是矩阵中包含的元素总数的平方根。在C++中,矩阵可以使用二维数组显示。在这里,我们选择了两个 5 行 5 列的矩阵示例(共 25 个元素)。必须通过循环语句访问矩阵和指数操纵。需要两个嵌套循环,因为要执行典型的计算时,我们必须迭代每个元素。而这个程序的复杂度是O(n2)。由于跟踪只需要主对角线,因此行索引和列索引将是相同的。因此,只需要一个for循环。在O(n)时间内确定。

以上就是C++程序用于找到给定矩阵的迹和法线的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 20:59:09
下一篇 2025年12月17日 20:59:16

相关推荐

  • 使用结构体编写的C程序,用于计算圆和圆柱体的面积

    在C编程语言中,我们可以利用结构体来找到圆的面积、圆柱体的面积和体积。 用于找到圆的面积的逻辑如下: s.areacircle = (float)pi*s.radius*s.radius; 用于计算圆柱体的面积的逻辑如下: s.areacylinder = (float)2*pi*s.radius*…

    2025年12月17日
    000
  • C程序打印所有ASCII值

    问题 打印 0 到 255 个字符的美国信息交换标准代码 (ASCII) 值,而不将字符初始化为整数类型变量。只需使用格式说明符即可。 解决方案 这里我们编写一个程序,仅打印 65 到 122。 如果您想查看所有 ASCII值,在 for 循环中你可以写如下 – For(i=0;i&lt…

    2025年12月17日
    000
  • 在C程序中,将一个数组中具有最大AND值的一对元素打印出来

    根据问题,我们给定了一个包含n个正整数的数组,我们需要从数组中找到具有最大AND值的一对。 示例 Input: arr[] = { 4, 8, 12, 16 }Output: pair = 8 12The maximum and value= 8Input:arr[] = { 4, 8, 16, 2…

    2025年12月17日
    000
  • C程序用于矩阵相减

    给定两个矩阵 mat1[行][列] 和 mat2[行][列],我们必须找到两个矩阵之间的差异并打印两个矩阵相减后获得的结果。两个矩阵相减为 mat1[n][m] – mat2[n][m]。 对于减法,两个矩阵的行数和列数应该相同。 示例 Input:MAT1[N][N] = { {1, 2, 3},…

    2025年12月17日
    000
  • 获取给定数字的大小的C++程序

    给定数字的大小意味着该特定数字之间的差异和零。它还可以表示一个数学对象相对于该数学对象中其他对象的大小同种。我们将遵循这里的第一个定义,以及大小或绝对值数字的表示为 |x|,其中 x 是实数。我们探索展示的方式给定实数的绝对值或大小。 朴素方法 我们可以自己编写一个程序来找出给定实数的大小。这下面解…

    2025年12月17日
    000
  • C程序计算3D空间中三个点之间的距离

    给定一个三维平面,因此有三个坐标,任务是找到给定点之间的距离并显示结果。 在三维平面上,有三个坐标轴,x轴的坐标为(x1,y1,z1),y轴的坐标为(x2,y2,z2),z轴的坐标为(x3,y3,z)。计算它们之间的距离有一个直接的公式如下所示 $$sqrt{lgroup x2-x1rgroup^{…

    2025年12月17日
    000
  • 编写一个C程序,将大写字母转换为小写字母,不使用字符串转换函数

    在了解如何在不使用字符串转换函数的情况下将大写字母转换为小写字母之前,让我们来看一下使用转换函数将大写字母转换为小写字母的程序,然后您将清楚我们在程序中所做的事情: 示例 #include #include int main(){ char string[50]; printf(“enter a s…

    2025年12月17日
    000
  • 将以下内容翻译为中文:在C程序中打印1/n的前k位小数,其中n是一个正整数

    输入数字 N,这样 1/N 将返回以十进制指定的形式生成的输出,直到达到限制。 使用浮点数很容易,但挑战在于不使用它们。 输入 − n=5 k=5 输出 − 20000 这意味着如果 n=5 且 k= 5 除以 1/5 后的输出应显示至小数点后 5 位。 算法 StartStep 1 -> D…

    2025年12月17日
    000
  • C++程序用于通过键更新字典的值

    许多计算机语言都提供字典,这是一种数据结构。字典是一种更快的数据结构,它基于键和值存储数据。它保留了键值组合,以便键可以几乎实时地轻松搜索某些组件。 C++ STL 语言标准包括类似字典的数据结构。术语“map”用于描述这种数据结构。该映射创建一对任意类型的键和值(由于我们使用的是 C++,因此必须…

    2025年12月17日
    000
  • 在C程序中,使用二分查找算法来搜索有理数,而不使用浮点数算术

    在这个问题中,我们得到了一个有理数的排序数组。我们必须使用二分搜索算法来搜索该有理数数组的给定元素,而不使用浮点运算。 有理数是以 p/q 形式表示的数字,其中p 和 q 都是整数。例如,⅔、⅕。 二分搜索是一种搜索技术,通过查找数组的中间来查找元素。 用于查找使用二分法搜索有理数排序数组中的元素,…

    2025年12月17日
    000
  • 寻找二次方程的根的C程序

    In this tutorial, we will be discussing a program to find the roots of the Quadratic equation. Given a quadratic equation of the form ax2 + bx + c. Ou…

    2025年12月17日
    000
  • C程序在一个单一数组上执行两个半部分的操作

    问题 编写一个程序来接受一个由N个元素组成的一维数组,并将其分成两半。稍后,将前半部分按升序排序,后半部分按降序排序。 解决方案 在单个数组中对两个半部分执行两次操作的解决方案C语言解释如下 – 前半部分升序排序的逻辑如下 – for (i=0; i<b; ++i){ …

    2025年12月17日
    000
  • 使用C程序进行线程同步,按顺序打印数字

    给定线程,程序必须根据它们的优先级从0到10打印线程。 什么是线程? 线程是在程序内部运行的轻量级进程。一个简单的程序可以包含n个线程。 与Java不同,C/C++语言标准不支持多线程,POSIX线程(Pthreads)是C/C++中多线程的标准。C语言不包含任何内置的多线程应用程序支持,而是完全依…

    2025年12月17日
    000
  • 使用正则表达式的C++程序打印每个单词的首字母

    A useful tool for string operations is regex. This may be found in virtually all high-level当前的编程语言,包括C++。正则表达式(Regex)被用作通用搜索模式。例如,通过构建一个简单的字符串被称为正则表达式…

    2025年12月17日
    000
  • 使用赋值运算符计算带税金额的C程序

    问题 编写一个 C 程序,输入美元金额,然后添加 18% 的税金来显示金额。 解决方案 让我们考虑餐厅人员在顾客的每张账单上加收 18% 的税。 用于计算税的逻辑是 – value=(money + (money * 0.18)); 这笔钱应该乘以18%并添加到钱中,然后餐厅人员可以从顾…

    2025年12月17日
    000
  • C++程序来计算给定弧度值的双曲正弦

    普通三角函数类似于双曲函数,它们是使用双曲线而不是圆来定义的。在双曲几何中,双曲函数用于计算角度和距离。此外,它们还出现在许多线性微分方程、三次方程等的答案中。对于给定的角度$theta$。双曲正弦函数 sinh$(theta)$ 如下所示。 $$mathrm{sinh(x):=:frac{e^x:…

    2025年12月17日
    000
  • C++程序以找到给定值的反正切

    我们在三角学中最常使用的比率包括正弦、余弦、正切等等。您可以使用角度来计算这些比率。如果我们知道比率值,我们还可以使用反三角函数计算角度。 本课程将向您展示如何使用 C++ 的反正切 (arctan) 函数,使用正切值(以弧度为单位)计算角度。 atan() 函数 使用 atan() 技术和反三角正…

    2025年12月17日
    000
  • C程序计算线性回归

    问题 编写一个程序来实现线性回归算法。 用户需要输入总共的数值个数。 解决方案 使用C编程语言计算线性回归的解决方案如下: 线性回归通过将线性方程与观测数据相连接来找到两个变量之间的关系。一个变量是解释变量,另一个是因变量。 关于线性回归的逻辑如下所述: for(i=0;i<n;i++){ p…

    2025年12月17日
    000
  • c程序是由什么构成

    c程序是由函数构成,是由一个main函数和若干个其他函数构成的。函数是C程序的基本单位,被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己定义的函数。 本教程操作环境:windows7系统、c99版本、Dell G3电脑。 C源程序是由函数组成的。函数是C程序的基本单位,被调用的函数可以是…

    2025年12月17日
    000
  • c程序如何编写x的y次方

    c程序编写x的y次方的方法:首先新建一个c语言的工程文件;然后定义两个参数n和k,分别表示输入的数和要求的次方数;最后用递归的方式将n乘以不断减小的k即可完成n次方的计算。 本文操作环境:windows7系统,Dell G3电脑/C11。 c程序怎么编写x的y次方? 新建一个c语言的工程文件,引入头…

    2025年12月17日 好文分享
    000

发表回复

登录后才能评论
关注微信