编写程序,实现矩阵(3行3列)的转置(即行列互换)

编写程序,实现矩阵(3行3列)的转置(即行列互换),第1张

#include<iostreamh>

void main()

{

int a[3][3],b[3][3];

int p=0;

for(int i=0;i<3;i++)

{

for(int j=0;j<3;j++)

{

cin>>a[i][j];

b[j][i]=a[i][j];

}

}

cout<<"原矩阵为:"<<endl;

for(int m=0;m<3;m++)

{

for(int n=0;n<3;n++)

{

cout<<a[m][n]<<" ";

p++;

if(p%3==0)

cout<<endl;

}

}

cout<<endl;

cout<<"转置后的矩阵为:"<<endl;

for(int c=0;c<3;c++)

{

for(int d=0;d<3;d++)

{

cout<<b[c][d]<<" ";

p++;

if(p%3==0)

cout<<endl;

}

}

}

根据代码内容和注释,似乎表达的是对于一个给定的参数组合,求出特定函数的雅可比矩阵并且算出其特值和特征向量,然后绘制特征值的实部与虚部的关系图。您的代码中有些错误。

1 第2行应该注意大小写,应该为clc而不是CLC。

2 第3行也应该注意大小写,应该为Close All而不是close all。

3 代码开头没有载入数据,因此其中的参数设置无效。您要使用代码,请首先定义这些参数的值,或者从文件中载入。

4 在构建Jacobian矩阵时,您涉及到若干个变量但却未定义,比如n、l1、Vm、C等等。请先确定它们的含义并赋值。

5 对应的A矩阵应该由4个分别为矩阵A11、A12、B11、B12的子矩阵按照行合并而成,而不是把它们放在两个方括号内的两行当中。

6 程序结尾调用的是Im1而非lm1数组,这会引起名字不存在的异常。

7 如果需要让程序顺利运行,最重要的是要保证所有符号、数字、标点等都是正确的,比如、、/、+、-等等。在您的代码中似乎有些错误的符号,所以这点需要检查。

下面是针对您的代码的修改建议,请注意审查:

```matlab

clc; close all;

%% 参数

n = 67239;

k1 = -67494;

l1 = 078 10^-3;

k2 = 1656;

l2 = 48 10^-3;

= 0447;

beta = 165 10^11;

l = 33296 10^-3;

VD = 1747;

R = 5000;

CC = linspace(1, 400, 400);

Vm = 10275;

X = 99004;

%% Initialize arrays to store real and imaginary parts of eigenvalues

Re1 = zeros(length(CC), 2);

lm1 = zeros(length(CC), 2);

%% 求雅可比矩阵

for i = 1:length(CC)

C = CC(i);

A11 = (beta / (n + X)^2) (k1 Vm sign(l1 - Vm / (n + X)) + k2 Vm sign(l2 - Vm / (n + X)) - n Vm A12 = -(beta / (n + X)) (X + k1 sign(l1 - Vm / (n + X)) + k2 sign(l2 - V / (n + X)));

B11 = Vm / (C (n + X)^2);

B12 = -(1 / C) (1 / (n + X) + 1 /);

A = [A11, A12; B11, B12];

[V, D] = eig(A);

%% 求矩阵的特征值特征向量

X = diag(D);

Re1(i, :) = real(X);

lm1(i, :) = imag(X);

end

%% Plot the real part vS the imaginary part

figure;

plot(Re1(:, 1), lm1(:, 1), 'o-', 'DisplayName', 'Eigenvalue 1');

hold on;

plot(Re1(:, 2), lm1(:, 2), 'x-', 'DisplayName', 'Eigenvalue 2');

xlabel('Real Part');

ylabel('lmaginary Part');

title('Real vs Imaginary Parts of Eigenvalues');

legend('show');

```

希望对您有帮助

你的错误是 在mat构造时没有为其分配内存空间,从而出错的, 现简单修改了一下,不过有个问题是,要把析构函数中的那句去掉, 在语句 mat=mat1mat2之后, 为什么对象就析构了呢,这个也不是很明白,因为main函数还没结束

#include<iostreamh>

#include<conioh>

#include<mathh>

#include<stringh>

#include<stdlibh>

template<class T>

class CMatrix

{

T Mat;

int nRow;

int nCol;

public:

/添加了一个赋值运算符 运算/

CMatrix<T> operator = (CMatrix<T> mat)

{

nRow = matnRow;

nCol = matnCol;

Mat = new T [nRow];

for(int i=0; i<nRow; i++)

{

Mat[i] = new T;

for(int j=0; j<nCol; j++)

{

Mat[i][j] = matMat[i][j];

}

}

return this;

}

CMatrix(int n,int b, int c, int d){}

CMatrix(T mat,int row,int col)

{

nRow=row;

nCol=col;

for(int i=0;i<row;i++)

for(int j=0;j<nCol;j++)

Mat[i][j]=mat[i][j];

}

CMatrix(int row=0,int col=0,int k=0)

{

nRow=row;

nCol=col;

cout<<"请输入数据:\n";

Mat=new T [row];

for(k;k<col;k++)

Mat[k]=new T;

for(int i=0;i<nRow;i++)

for(int j=0;j<nCol;j++)

{

cout<<"第["<<i+1<<"]["<<j+1<<"]个数据";

cin>>Mat[i][j];

}

}

void show()

{

int i,j;

for(i=0;i<nRow;i++)

for(j=0;j<nCol;j++)

{

cout<<Mat[i][j]<<'\t';

if(j==(nCol-1))cout<<endl;

}

}

friend CMatrix<T> operator (CMatrix<T> &mat1,CMatrix<T> &mat2)

{

CMatrix mat3(1,1,1,1);//添加了一个默认构造函数, 不起其他的作用

mat3 = mat1;

for(int i=0;i<mat1nRow;i++)

for(int j=0;j<mat2nCol;j++)

{

mat3Mat[i][j]=0;

for(int k=0;k<mat1nCol;k)

{

mat3Mat[i][j] += mat1Mat[i][k]mat2Mat[k][j];

k++;

}

}

return mat3;

}

~CMatrix(){/delete []Mat;/}

};

void main()

{

int m,n,i,j,k=0;

cout<<"请输入矩阵行列数:\n";

cout<<"m=";

cin>>m;

cout<<"n=";

cin>>n;

cout<<"i=";

cin>>i;

cout<<"j=";

cin>>j;

cout<<endl;

while(n!=i)

{

cout<<"输入的矩阵不满足条件\n"<<"请重新输入:\n";

cout<<"m=";

cin>>m;

cout<<"n=";

cin>>n;

cout<<"i=";

cin>>i;

cout<<"j=";

cin>>j;

cout<<endl;

}

CMatrix<int> mat1(m,n,k),mat2(i,j,k),mat;

mat1show();

cout << "======================================" << endl;

mat=mat1mat2;

matshow();

cin>>j;

exit(0);

}

描述程序设计语言中的单词字,进一步为词法分析程序的自动构造寻找特殊的方法和工具。主要内容:确定有限自动机DFA 确定有限自动机DFA的实现 非确定有限自动机NFA NFA到DFA的转换 DFA的化简 确定有限自动机DFA 确定有限自动机(DFA:Deterministric Finite Automata ) 为一个五元组(∑,SS,S0,f,TS),其中:■∑是一个有穷字母表,它的每个元素称为一个输入字符;■SS是一个有穷集,它的每个元素称为一个状态;■S0∈ SS是唯一的一个初始状态;■f是在SS× ∑→ SS上的转换函数■TSSS,是一个终止状态集,又称为接受状态集

1、矩阵类

public class Matrix {

/      矩阵相乘          /

public static double[][] multiplyMatrix(double[][] a,double[][] b){

 if(a[0]length != blength) {

        return null;

 }

 double[][] c=new double[alength][b[0]length];

        for(int i=0;i<alength;i++) {

            for(int j=0;j<b[0]length;j++) {

              for(int k=0;k<a[0]length;k++) {            

            c[i][j] += a[i][k]  b[k][j]; 

           } 

         }

       }

return c;

}

2、测试函数(main函数)

public static void main(String[] args) {

Scanner input=new Scanner(Systemin);

     int m = n = k = 6;

     

     double [][]a=new double[m][n];  //定义一个mn的矩阵

     double [][]b=new double[n][k];  //定义一个nk的矩阵 

     Systemoutprintln("输入连续的数构成数组a:");

     for(int i=0;i<m;i++)

      for(int j=0;j<n;j++)

      a[i][j]=10;

     Systemoutprintln("输入连续的数构成数组b:");

     for(int i=0;i<n;i++)

      for(int j=0;j<k;j++)

      b[i][j]=10;

        double [][]c=multiplyMatrix(a, b);

        Systemoutprintln("Matrix a:");

        printMatrix(a);    //打印a

        Systemoutprintln("Matrix b:");

printMatrix(b);    //打印b

Systemoutprintln("Matrix c:");

printMatrix(c);    //打印c

inputclose(); 

}

}

3、打印函数(可以放到main函数所在类中)

public static void printMatrix(double[][] c) {

if (c!=null) {

for(int i=0;i<clength;i++) {

for(int j=0;j<c[0]length;j++) {

Systemoutprintf("%-81f",c[i][j]);  //保留1位小数;

}

Systemoutprintln();

}

} else {

Systemoutprintln("无效");

}

Systemoutprintln();

}

这矩阵按键是怎么接的?把开发板的原理图发上来。还有开发版上最右边的4个LED灯指示是怎么接的,不知道也不好写程序的。用仿真图实现你的要求,用了4X4的矩阵按键,接在P3口,4个LED灯接在P0口了,仿真效果如下所示。

以上就是关于编写程序,实现矩阵(3行3列)的转置(即行列互换)全部的内容,包括:编写程序,实现矩阵(3行3列)的转置(即行列互换)、matlab编成问题,输入的矩阵看着没什么问题,但是报错说不是方阵,可以帮我看一下程序么、c++程序设计问题,关于矩阵的~ 拜托高手了~谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9647582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存