導航:首頁 > 編程語言 > 矩陣計算java

矩陣計算java

發布時間:2024-09-21 07:39:41

A. 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;
}
}

B. 用java聲明Matrix類表示矩陣,使用二維數組存儲矩陣元素,實現以下方法:

public class Matrix {
private static String matrix_A;
private int mx[][], m, n;
public Matrix(int r, int c) {
m = r;
n = c;
mx = new int[m][n];
iniMatrix();
}
public Matrix() {
m = 3;
n = 3;
mx = new int[3][3];
iniMatrix();
}
public void iniMatrix()// 隨機取數
{
int i, j;
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mx[i][j] = (int) (Math.random() * 100);
}
public void tranMatrix()// 轉置矩陣
{
int i, j, t;
int mt[][] = new int[m][n];
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mt[i][j] = mx[i][j];
t = m;
m = n;
n = t;
mx = new int[m][n];
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mx[i][j] = mt[j][i];
}
public void printMatrix()// 輸出矩陣所有值
{
int i, j;
for (i = 0; i <= m - 1; i++) {
for (j = 0; j <= n - 1; j++)
System.out.print(" " + mx[i][j]);
System.out.println();
}
}
//判斷一個矩陣是否為上三角矩陣
public boolean isUpperTriangularMatrix() {
int i, j = 0;
int c = this.mx[1][0];

for(i=1; i<this.mx.length; i++)
for(j=0; j<i; j++)
if(this.mx[i][j] != c)
break;
if(i>=this.mx.length)
return true;
return false;
}
public void addMatrix(Matrix b)// 矩陣相加
{
int i, j;
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mx[i][j] = mx[i][j] + b.mx[i][j];
}
public static void main(String args[]) {
Matrix ma = new Matrix(4, 3);
Matrix mb = new Matrix(4, 3);
System.out.println("The matrix_A:");
ma.printMatrix();
System.out.println("The matrix_B:");
mb.printMatrix();
if(ma.isUpperTriangularMatrix())
System.out.println("上三角矩陣:\n" + ma.isUpperTriangularMatrix());
System.out.println("Matrix_A + Matrix_B:");
ma.addMatrix(mb);
ma.printMatrix();
System.out.println("Transpose Matrix_A:");
mb.tranMatrix();
mb.printMatrix();
System.out.println("Transpose Matrix_A+Matrix_B:");
mb.tranMatrix();
mb.printMatrix();
}
}

C. java怎麼輸出矩陣如輸入數字3,輸出3×3的矩陣

int number = 3;
for (int i = 0; i < number; i++) {
for (int k = 0; k < number; k++) {
Systrm.out.print("*");
}
System.out.println();
//或者System.out.print("\n");
}

D. java,輸入一個數n,輸出n*n的矩陣(正方形).例如:輸入5,輸出5*5的正方形

importjava.io.BufferedReader;
importjava.io.InputStreamReader;

publicclassJuZhen{
publicstaticStringformat(intsource,intlen){
StringsourceString=source+"";
if(sourceString.length()>=len){
returnsourceString;
}else{
Stringspace="";
for(inti=0;i<(len=sourceString.length());i++){
space+="";
}
returnspace+sourceString;
}
}
publicstaticvoidmain(String[]args)throwsException{
System.out.println("請輸入要輸出的矩陣長度");
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
StringnumString=br.readLine();
br.close();

intnum=0;
try{
num=Integer.parseInt(numString);
}catch(Exceptione){
System.out.println("輸入內容非數字");
}
if(num<=0){
System.out.println("輸入數字需為正整數");
}
intlen=Integer.toString(num*num).length();
for(inti=1;i<=num;i++){
for(intj=0;j<num;j++){
intsource=i+(j*num);
Stringprint=format(source,len);
if(j==0){
System.out.print(print);
}else{
System.out.print(""+print);
}
}
System.out.println();
}
}
}

輸出如下:

請輸入要輸出的矩陣長度

5

1 6 11 16 21

2 7 12 17 22

3 8 13 18 23

4 9 14 19 24

5 10 15 20 25

E. 用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&lt;a;i++){
for(int j=0;j&lt;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&lt;c;i++){
for(int j=0;j&lt;d;j++){
double sum = 0 ;
for(int k=0;k&lt;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&lt;x.length;i++){
for(int j=0;j&lt;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) ;
}
}

閱讀全文

與矩陣計算java相關的資料

熱點內容
java並發編程教程 瀏覽:319
江鈴寶典空調壓縮機工作時間過短 瀏覽:634
自製單片機玩具車 瀏覽:901
stm32單片機模塊電源電壓 瀏覽:187
pdf層次 瀏覽:735
電腦里找不到編譯器 瀏覽:842
明茨伯格pdf 瀏覽:442
把網頁存成pdf 瀏覽:267
如何對電腦的d盤加密 瀏覽:100
刀片式伺服器怎麼連接電腦 瀏覽:82
矩陣計算java 瀏覽:234
如何把各銀行app整合 瀏覽:879
方舟生存進化手游版如何建伺服器 瀏覽:290
哪裡購買黃金app 瀏覽:661
中國聯通app優惠購功能在哪裡 瀏覽:228
dream伺服器密碼是什麼 瀏覽:222
程序員自救 瀏覽:486
cmd殺死進程命令 瀏覽:237
ipad激活伺服器地址 瀏覽:453
單片機開始直流電機壓降問題 瀏覽:19