❶ java 题目:求一个3*3矩阵对角线元素之和
假设我们有一个3x3的矩阵`matrix`,可以通过以下代码求其对角线元素之和:
```
int sum = 0; // 初始化对角线元素之和为0
for (int i = 0; i < 3; i++) {
sum += matrix[i][i]; // 累加左上到右下对角线元素
sum += matrix[i][2 - i]; // 累加右上到左下对角线元素
}
```
在这个示例中,我们使用了一个循环来遍历矩阵的对角线元素。具体来说,我们累加了矩阵左上角到右下角和右上角到左下角两个方向上的对角线元素。
首先,我们从左上角到右下角遍历主对角线上的元素,即矩阵第一行第一列、第二行第二列、第三行第三列的元素。由于这些元素在矩阵中的索引都满足`rowIndex == columnIndex`的条件,因此我们可以使用`matrix[i][i]`来获取它们,然后将其添加到对角线元素之和中。
接下来,我们从右上角到左下角遍历副对角线上的元素,即矩阵第一行第三列、第二行第二列、第三行第一列的元素。由于这些元素在矩阵中的索引满足`rowIndex + columnIndex == 2`的条件,因此我们可以使用`matrix[i][2 - i]`来获取它们,然后将其添加到对角线元素之和中。
最终,我们得到的`sum`就是矩阵的对角线元素之和。
❷ Java编写一个程序实现矩阵的运算加减乘除,(并对其中的异常进行处理)
/**
*矩阵:由m×n个数Aij排成的m行n列的数表称为m行n列的矩阵,简称m×n矩阵
*说白了就是一个二维数组,下面的程序用整形作为数据类型,其他类型运算大同小异
*
*/
publicclassMatrixUtils{
/**
*矩阵运算:加(减法与之类似)
*/
publicstaticint[][]matrixAdd(int[][]addend,int[][]summand){
if(addend==null||addend.length==0){
("addendmatrixisempty!");
}
if(summand==null||summand.length==0){
("summandmatrixisempty!");
}
//矩阵加减要求两个矩阵类型一致,即行列数相同
introw=addend.length;
intcol=addend[0].length;
if(row!=summand.length||col!=summand[0].length){
("!");
}
int[][]sum=newint[row][col];
for(inti=0;i<row;i++){
for(intj=0;j<col;j++){
sum[i][j]=addend[i][j]+summand[i][j];
//sum[i][j]=addend[i][j]-summand[i][j];//减法
}
}
returnsum;
}
/**
*矩阵运算:乘法,没找到除法的运算规则
*/
publicstaticint[][]matrixMultiply(int[][]addend,int[][]summand){
if(addend==null||addend.length==0){
("addendmatrixisempty!");
}
if(summand==null||summand.length==0){
("summandmatrixisempty!");
}
//两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵
introw=addend.length;
intcol=summand[0].length;
if(addend[0].length!=summand.length){
("!");
}
int[][]sum=newint[row][col];
for(inti=0;i<row;i++){
for(intj=0;j<col;j++){
for(intz=0;z<addend[0].length;z++){
sum[i][j]+=addend[i][z]*summand[z][j];
System.out.println("sum["+i+"]["+j+"]="+sum[i][j]);
}
}
}
returnsum;
}
}
❸ 用java语言做矩阵运算,输入一个m×n的矩阵,再输入一个n×o的矩阵,求其乘积。
这应该是线性数学的矩阵
逻辑思路是:取A矩阵的每一行的各个项去乘以B矩阵每个列的各个项
为了测试,我现在假设A矩阵是4*3, B矩阵是3*2, 你要做的乘操作是4*3*2=24次
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
int[][]A=new int[][]{{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
int[][]B=new int[][]{{1,2},{3,4},{5,6}};
int len_A=A[0].length;//a每行元素数,这里是3
int col_A=A.length;//a每列元素数,这里是4
int len_B=B[0].length;//b每行元素数,这里是2
int col_B=B.length;//b每列元素数,这里是3
int len_a=0;
int col_a=0;
int len_b=0;
int col_b=0;
int sum=0;
while(len_b<len_B)//使B的下一列被A乘
{
col_a=0;
while(col_a<col_A)//使A可以移动至下一行
{
len_a=0;
col_b=0;
while(len_a<len_A)//使A的当前行乘以B的当前列
{
sum+=A[col_a][len_a]*B[col_b][len_b];
len_a++;
col_b++;
}
col_a++;
}
len_b++;
}
System.out.println(sum);
}
}
❹ 用java怎么写矩阵乘法
importjava.util.Scanner;
public class Matrix {
public double[][] create() {
Scanner sc = new Scanner(System.in) ;
System.out.print("请输入矩阵的行高:");
int a = sc.nextInt() ;
System.out.print("请输入矩阵的列宽:");
int b = sc.nextInt() ;
double[][] x = new double[a][b] ;
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
System.out.print("请输入元素x["+i+"]["+j+"]的值:" );
x[i][j] = sc.nextDouble() ;
}
}
return x ;
}
public double[][] multiply(double[][] x,double[][] y){
double[][] result = null ;
int a = x[0].length ;
int b = y.length ;
if(a != b){
System.out.println("输入的维数不匹配,不能进行运算");
}else{
int c = x.length ;
int d = y[0].length ;
result = new double[c][d] ;
for(int i=0;i<c;i++){
for(int j=0;j<d;j++){
double sum = 0 ;
for(int k=0;k<a;k++){
sum += x[i][k]*y[k][j] ;
}
result[i][j] = sum ;
}
}
}
return result ;
}
public void print(double[][] x){
System.out.println("矩阵为:");
for(int i=0;i<x.length;i++){
for(int j=0;j<x[i].length;j++){
System.out.print(x[i][j] + " ") ;
}
System.out.println();
}
}
}
测试类:
public class TestMatrix {
public static void main(String[] args) {
Matrix m = new Matrix() ;
//double[][] x = {{1,2},{3,2}} ;
//double[][] y = {{1,2,1},{2,3,3}} ;
System.out.println("创建第一个数组:") ;
double[][] x = m.create() ;
m.print(x) ; //用来验证输入的是否和你一样的,没啥作用
System.out.println("创建第二个数组:");
double[][] y = m.create() ;
m.print(y) ; //用来验证输入的是否和你一样的,没啥作用
double[][] result = m.multiply(x, y) ;
if(result == null){
return ; //如果输入的矩阵不能运算就不输出结果了。
}
m.print(result) ;
}
}