/**
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、潼關(guān)網(wǎng)絡(luò)推廣、小程序制作、潼關(guān)網(wǎng)絡(luò)營(yíng)銷、潼關(guān)企業(yè)策劃、潼關(guān)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供潼關(guān)建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:vcdvsql.cn
*?矩陣:由?m?×?n?個(gè)數(shù)Aij排成的m行n列的數(shù)表稱為m行n列的矩陣,簡(jiǎn)稱m?×?n矩陣
*?說(shuō)白了就是一個(gè)二維數(shù)組,下面的程序用整形作為數(shù)據(jù)類型,其他類型運(yùn)算大同小異
*?
*/
public?class?MatrixUtils?{
/**
*?矩陣運(yùn)算:加(減法與之類似)
*/
public?static?int[][]?matrixAdd(int[][]?addend,?int[][]?summand)?{
if?(addend?==?null?||?addend.length?==?0)?{
throw?new?IllegalArgumentException("addend?matrix?is?empty!");
}
if?(summand?==?null?||?summand.length?==?0)?{
throw?new?IllegalArgumentException("summand?matrix?is?empty!");
}
//矩陣加減要求兩個(gè)矩陣類型一致,即行列數(shù)相同
int?row?=?addend.length;
int?col?=?addend[0].length;
if?(row?!=?summand.length?||?col?!=?summand[0].length)?{
throw?new?IllegalArgumentException("summand?and?summand?not?the?same?type!");
}
int[][]?sum?=?new?int[row][col];
for?(int?i?=?0;?i??row;?i++)?{
for?(int?j?=?0;?j??col;?j++)?{
sum[i][j]?=?addend[i][j]?+?summand[i][j];
//?sum[i][j]?=?addend[i][j]?-?summand[i][j];?//減法
}
}
return?sum;
}
/**
*?矩陣運(yùn)算:乘法,沒(méi)找到除法的運(yùn)算規(guī)則
*/
public?static?int[][]?matrixMultiply(int[][]?addend,?int[][]?summand)?{
if?(addend?==?null?||?addend.length?==?0)?{
throw?new?IllegalArgumentException("addend?matrix?is?empty!");
}
if?(summand?==?null?||?summand.length?==?0)?{
throw?new?IllegalArgumentException("summand?matrix?is?empty!");
}
//兩個(gè)矩陣的乘法僅當(dāng)?shù)谝粋€(gè)矩陣A的列數(shù)和另一個(gè)矩陣B的行數(shù)相等時(shí)才能定義。如A是m×n矩陣和B是n×p矩陣,它們的乘積C是一個(gè)m×p矩陣?
int?row?=?addend.length;
int?col?=?summand[0].length;
if?(addend[0].length?!=?summand.length)?{
throw?new?IllegalArgumentException("summand?and?summand?not?the?same?type!");
}?
int[][]?sum?=?new?int[row][col];
for?(int?i?=?0;?i??row;?i++)?{
for?(int?j?=?0;?j??col;?j++)?{
for?(int?z?=?0;?z??addend[0].length;?z++)?{
sum[i][j]?+=?addend[i][z]?*?summand[z][j];
System.out.println("sum["?+?i+??"]["+?j+"]=?"?+?sum[i][j]);
}
}
}
return?sum;
}
}
代碼編寫的順序有問(wèn)題,在沒(méi)有對(duì)matrix1,matrix2賦值的情況下計(jì)算matrix3的結(jié)果,那么matrix3的數(shù)據(jù)必然是空的。
應(yīng)該改為:
將double[][] matrix3 =Matrix(matrix1,matrix2);代碼放到
System.out.print("The multiplication of the matrices is"這行代碼的前面就可以了。
昨天剛幫一個(gè)網(wǎng)友改編的,輸出矩陣并且在矩陣求冪后輸出矩陣的一個(gè)類,直接可以運(yùn)行。
注釋都有的。希望你用的得到。import java.util.Scanner;
public class JuZhen {
//定義計(jì)算方法
public static int calc(int x, int y,int score){
if(x==0 y==0){
score = 0;
}else {
score = 1;
}
return score;
}
//輸入矩陣
public static void shuru(){
Scanner input = new Scanner(System.in);//Scanner是用來(lái)接納系統(tǒng)控制臺(tái)輸?shù)淖址?/p>
System.out.print("請(qǐng)輸入矩陣的階數(shù):");
int n = input.nextInt(); //取一個(gè)輸入的字符賦值給n
int M[][] = new int[n][n]; //定義數(shù)組維數(shù).初始化數(shù)組,定義了一個(gè)雙向的長(zhǎng)度為
//n的
System.out.print("請(qǐng)輸入矩陣的的值(0-1):");
for(int i=0;iM.length ;i++){ //不能以0開(kāi)始
for(int j=0 ;jM[i].length ; j++){
M[i][j] = input.nextInt();
}
}
System.out.println("你輸入的矩陣為:");
for(int i=0;iM.length ;i++){ //顯示矩陣
System.out.print("\n");
for(int j=0 ;jM[i].length ; j++){
System.out .print(M[i][j] + "\t") ;
}
}
}
//僅僅是一個(gè)求冪的遞歸。
int myPow(int x, int y) {
int pow = 0;
if (y 0) {
pow = x * myPow(x, y - 1);// 2,3//2*2,3-1
}
if (y 0) {
pow = 1 / x * myPow(x, y + 1);
}
if (y == 0) {
pow = 1;
}
return pow;
}
//程序入口
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("請(qǐng)輸入矩陣的階數(shù):");
int n = input.nextInt();//這個(gè)相當(dāng)于確定行數(shù)。
int M[][] = new int[n][n];
//定義數(shù)組維數(shù)
System.out.print("請(qǐng)輸入矩陣的的值(0-1):");
for(int i=0;iM.length ;i++){ //外循環(huán)表示行,在外循環(huán)已知的情況下去填內(nèi)循環(huán),內(nèi)循環(huán)表示列
for(int j=0 ;jM[i].length ; j++){
M[i][j] = input.nextInt();
}
}
int temp[][] =new int[n][n];
int m[][] =new int[n][n];
System.out.println("你輸入的矩陣為:");
for(int i=0;iM.length ;i++){ //顯示矩陣
System.out.print("\n"); //執(zhí)行完外循環(huán)也就是打印出一行后換行
for(int j=0 ;jM[i].length ; j++){
temp[i][j] = M[i][j] ; //賦給矩陣temp
System.out .print(M[i][j] + "\t") ;//執(zhí)行完內(nèi)循環(huán)也就是一列時(shí)空兩格。\t為tab鍵起退格作用
}
}
System.out.print("\n\n你想求幾次方:");
int c =input.nextInt(); //獲得冪次
for (int k=0; kc;k++){ //最外層的循環(huán)和里邊的兩層循環(huán)也就是二維數(shù)組里的每個(gè)都有交集,也就是每個(gè)都要求冪
for(int i=0 ; iM.length; i++){
for(int j=0; jM[i].length ;j++){
m[i][j]= new JuZhen().myPow(temp[i][j],c);
}
}
}//for k
for(int i=0;im.length ;i++){ //顯示矩陣
System.out.print("\n");
for(int j=0 ;jm[i].length ; j++){
System.out .print(m[i][j] + "\t") ;
}
}
}//main
}//class JuZhen
封裝性不用擔(dān)心,java正是以其良好的封裝性著稱。
小可獻(xiàn)丑了:
//沒(méi)有仔細(xì)調(diào)試,按照提示輸入數(shù)據(jù)
//每一行(Row)數(shù)據(jù)用空格隔開(kāi),結(jié)束后回車
import java.io.*;
import java.util.*;
public class Arrtest{
public static void main(String args[]){
try{
System.out.print("set the row of the arr:\n");
BufferedReader in=new BufferedReader(
new InputStreamReader(System.in));
String row=in.readLine();
System.out.print("set the line of the arr:\n");
BufferedReader in2=new BufferedReader(
new InputStreamReader(System.in));
String line=in2.readLine();
int R=Integer.parseInt(row);
int L=Integer.parseInt(line);
Arr arr=new Arr();
System.out.print("Great the first arr:\n");
double arr1[][]=arr.greatArr(R,L);
System.out.print("Great the second arr:\n");
double arr2[][]=arr.greatArr(R,L);
arr.showArr(arr.addArr(arr1,arr2,R,L),R,L);
}catch(Exception e){e.getMessage(); }
}
}
class Arr {
double[][] greatArr(int row,int line){
double arr[][]=new double[row][line];
for(int i=0;irow;i++){
try{
System.out.print("input the row("+(i+1)+") numbers:\n");
BufferedReader in=new BufferedReader(
new InputStreamReader(System.in));
String s=in.readLine();
StringTokenizer s_part=new StringTokenizer(s," ");
for(int j=0;jline;j++){
arr[i][j]=Double.parseDouble(s_part.nextToken());
}
}catch(Exception e){e.getMessage(); }
}
return arr;
}
double[][] addArr(double[][] arr1,double[][] arr2,int row,int line){
for(int i=0;irow;i++){
for(int j=0;jline;j++){
arr1[i][j]=arr1[i][j]+arr2[i][j];
}
}
return arr1;
}
void showArr(double[][] arr,int row,int line){
System.out.print("the result:\r\n");
for(int i=0;irow;i++){
for(int j=0;jline;j++){
System.out.print(arr[i][j]+" ");
}
System.out.print("\r\n");
}
}
}
借花獻(xiàn)佛
/**
*?實(shí)現(xiàn)二維數(shù)組的轉(zhuǎn)置
*?@author?HAN
*
*/
public?class?transposition_Arrays2D_ch6_4?{
final?static?double?PI=3.1415;
public?static?void?main(String[]?args)?{
/*StaticTest?st1=new?StaticTest();
StaticTest?st2=new?StaticTest();
st1.method2("HAN");*/
/*****定義要用于轉(zhuǎn)置的二維數(shù)組*******/
int?arr2D[][]={{1,2,3},{4,5,6},{7,8,9}};
/*****構(gòu)造結(jié)果新二維數(shù)組用于存放轉(zhuǎn)置結(jié)果*******/
/*定義結(jié)果數(shù)組變量,注意?一定要先開(kāi)辟一個(gè)內(nèi)存,
否則只是地址傳遞,也就是說(shuō)兩個(gè)數(shù)組名實(shí)際上指向的是同一塊內(nèi)存*/
//而構(gòu)造二維數(shù)組可以為維度來(lái)進(jìn)行,不一定是一個(gè)矩陣,即每一行的長(zhǎng)度不一定相同
int?result_arr[][]=new?int[arr2D.length][];//先實(shí)現(xiàn)第一維
for(int?i=0?;?iarr2D.length;i++){?//再實(shí)現(xiàn)第二維
result_arr[i]=new?int[arr2D[i].length];
}
// int?result_arr[][]=Arrays.copyOf(arr2D,?arr2D.length);
//上面這個(gè)命令行行不通!
/*****輸出用于轉(zhuǎn)置的二維數(shù)組*******/
for?(int?x[]:arr2D){
for(int?e:x){
System.out.print(e+"?");
}
System.out.println();
}
System.out.println();
/*******進(jìn)行元素倒置******/
for(int?i=0?;?iarr2D.length;i++){
for(int?j=0;?jarr2D[i].length;j++){
result_arr[j][i]=arr2D[i][j];?//轉(zhuǎn)置核心
}
}
/*****show?the?result?in?the?result?matrix*******/
for?(int?x[]:result_arr){
for(int?e:x){
System.out.print(e+"?");
}
System.out.println();
}
}
}
//import?java.util.Arrays;
//public?class?transposition_Arrays2D?{
//
// public?static?void?main(String[]?args)?{
// int?arr2D[][]={{1,2,3},{4,5,6},{7,8,9}};
// /*定義結(jié)果數(shù)組變量,注意?一定要先開(kāi)辟一個(gè)內(nèi)存,
// 否則只是地址傳遞,也就是說(shuō)兩個(gè)數(shù)組名實(shí)際上指向的是同一塊內(nèi)存*/
// int?result_arr[][]=new?int[arr2D.length][];
// for(int?i=0?;?iarr2D.length;i++){
// result_arr[i]=new?int[arr2D[i].length];
// }
//
//????????//?進(jìn)行元素倒置
//????????for(int?i=0?;?iarr2D.length;i++){
//???????? for(int?j=0;?jarr2D[i].length;j++){
//???????? result_arr[j][i]=arr2D[i][j];
//???????? }
//????????}
//????????
//????????//?show?the?result?in?matrix
//????????for?(int?x[]:result_arr){
//???????? for(int?e:x){
//???????? System.out.print(e);
//???????? }
//???????? System.out.println();
//????????}
//????????
// }
//
//}
網(wǎng)站標(biāo)題:矩陣和java代碼,矩陣和編程
文章分享:http://vcdvsql.cn/article2/heoiic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、做網(wǎng)站、網(wǎng)站導(dǎo)航、外貿(mào)建站、電子商務(wù)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)