導航:首頁 > 編程語言 > java矩陣求逆

java矩陣求逆

發布時間:2022-04-29 06:52:08

java n*n矩陣求值及求逆矩陣

importjava.math.*;
importjava.util.*;
importjava.text.*;
publicclassmatrix{
staticintmap1[][]=newint[110][110];
staticintjust[][]=newint[110][110];
publicstaticvoidprintf(intn,intmap[][])
{
inti,j;
for(i=1;i<=n;i++)
{
for(j=1;j<n;j++)
System.out.print(map[i][j]+"");
System.out.println(map[i][j]);
}
}
publicstaticvoidget(intnumi,intnumj,intmap[][],intn)
{
inti,j,k,l;
for(i=0;i<n+10;i++)
for(j=0;j<n+10;j++)
just[i][j]=1;
for(i=1;i<=n-1;i++)//求餘子式矩陣
for(j=1;j<=n-1;j++)
{
if(i>=numi&&j<numj)
just[i][j]=map[i+1][j];
elseif(i>=numi&&j>=numj)
just[i][j]=map[i+1][j+1];
elseif(i<numi&&j>=numj)
just[i][j]=map[i][j+1];
elseif(i<numi&&j<numj)
just[i][j]=map[i][j];
}
}
//staticintmap[][]=newint[110][110];
publicstaticintgetans(intnn)
{
intmap[][]=newint[110][110];
for(inti=1;i<=nn;i++)
for(intj=1;j<=nn;j++)
map[i][j]=just[i][j];
if(nn==2)
returnmap[1][1]*map[2][2]-map[1][2]*map[2][1];
elseif(nn==1)
returnmap[1][1];
else
{
intcnb=0;
for(inti=1;i<=nn;i++)
{
get(1,i,map,nn);//得到當前餘子式just
//printf("payattention! ");
//print(map,nn);
//print(just,nn-1);
if(i%2==1)
cnb+=map[1][i]*getans(nn-1);
else
cnb-=map[1][i]*getans(nn-1);
}
returncnb;
}
}
publicstaticintgcd(intm,intn)
{
//if(m<n)
//matrix.gcd(n,m);
//if(n==0)
//returnm;
//
//else
//returnmatrix.gcd(n,m%n);
intmm=m;
intnn=n;
if(mm<nn)
{
intc=mm;
mm=nn;
nn=c;
}
intw=1;
while(w!=0)
{
w=mm%nn;
mm=nn;
nn=w;
}
returnmm;
}
publicstaticvoidans(intn,intm)
{
if(n*m<0)
{
System.out.print("-");
ans(Math.abs(n),Math.abs(m));
return;
}
if(m==1)
System.out.print(n+" ");
elseif(n%m==0)
System.out.print(n/m+" ");
else
System.out.print((n/matrix.gcd(m,n))+"/"+(m/matrix.gcd(m,n))+" ");
}
publicstaticvoidmain(String[]args){
//TODO自動生成的方法存根
Scannercin=newScanner(System.in);
inti,j,k,l,m,p;
while(true)
{
intn=cin.nextInt();
intans=0;
for(i=0;i<n+10;i++)
for(j=0;j<n+10;j++)
map1[i][j]=1;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
map1[i][j]=cin.nextInt();
just[i][j]=map1[i][j];

}
intans1=matrix.getans(n);
System.out.println("矩陣的值為:");
System.out.println(ans1);
intmap2[][]=newint[110][110];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
map2[i][j]=map1[j][i];
just[i][j]=map2[i][j];

}
System.out.println("轉置矩陣為:");
matrix.printf(n,map2);
inthelp2=matrix.getans(n);
System.out.println(help2);
if(help2==0)
{
System.out.println("Noinversematrix");
continue;
}
System.out.println("逆矩陣為:");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
matrix.get(i,j,map2,n);
//booleanb=((i+j)%2==0);
if((i+j)%2==0)
matrix.ans(matrix.getans(n-1),help2);
else
matrix.ans(matrix.getans(n-1)*-1,help2);
}
System.out.println();
}
System.out.println();
}
}

}

② java有沒有專門的求矩陣乘積和轉置的函數

標准類庫里應該沒有, 應該會有人寫過矩陣的類, 可以拿來用
網上也有矩陣計算器這種圖形界面的小程序, 都可以實現諸如乘積, 轉置, 求逆等等功能

③ java中怎樣求矩陣的逆

演算法搞清楚然後一步一步的寫

④ 跪求!!!! java 編寫求復數矩陣的逆、模、轉置、減、乘、特徵值、特徵向量 10號之前,拜託了

同求~~

⑤ 編寫求矩陣的逆矩陣用java實現

import java.io.*;
import java.util.StringTokenizer;

public class Test {
private int N;
private double[][] src;
private double[][] result;

public Test() {

}
public static void main(String[] args) throws Exception {
new Test().exec();
}

private void exec() throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print( "Input N: ");
System.out.flush();
String line = reader.readLine();
N = Integer.parseInt(line);

src = new double[N][];
result = new double[N][];

for(int i = 0; i < N; i++) {
line = reader.readLine();
src[i] = new double[N];
result[i] = new double[N];
result[i][i] = 1;

StringTokenizer st = new StringTokenizer(line, ", ");
int index = 0;
while(st.hasMoreTokens()) {
src[i][index] = Double.parseDouble(st.nextToken());
index++;
}
}
calCol(0);
calColBack(N - 1);
reInit();

for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
System.out.print(src[i][j] + ", ");
}
System.out.print( "\t ");
for (int j = 0; j < N; j++) {
System.out.print(result[i][j] + ", ");
}
System.out.println();
}
}

private void reInit() {
for(int i = 0; i < N; i++) {
double coefficient = 1 / src[i][i];
src[i][i] = 1;
for(int j = 0; j < N; j++)
result[i][j] *= coefficient;
}
}

private void calColBack(int col) {
for(int i = col - 1; i >= 0; i--) {
double coefficient = -1 * src[i][col] / src[col][col];
for(int z = 0; z < N; z++) {
src[i][z] += coefficient * src[col][z];
result[i][z] += coefficient * result[col][z];
}
}
if(col > 0)
calColBack(col - 1);
}

private void calCol(int col) {
for(int i = col + 1; i < N; i++) {
double coefficient = -1 * src[i][col] / src[col][col];
for(int z = 0; z < N; z++) {
src[i][z] += coefficient * src[col][z];
result[i][z] += coefficient * result[col][z];
}
}
if(col + 1 < N)
calCol(col + 1);
}
}

⑥ java 矩陣求逆怎麼用java矩陣包

1、分子分母都為 0 的說法,是不對的。無論在什麼年級,無論讀什麼程度的書,分母永遠不可以為 0。這一點是沒有任何模糊的可能的。.2、極限的分子分母可以趨近於0,但分母不能為 0;趨近於 0, 跟等於 0 不是一回事。極限計算的趨勢 = tendency,如果分子分母都趨向於 0 ,那就是不定式,計算最後的比值是多少,必須用到各色各樣的方法。.分子分母都趨向於 0 ,結果可能是 0,可能是一個非零的常數,也可能是無窮大,要看具體題目,才能確定。

⑦ 如何用java程序利用二維數組創建一個矩陣,編寫方法完成該矩陣的逆轉,兩個矩陣之和。

兩個類,一個是矩陣對象類Matrix,另一個是測試類MatrixTest
可以實現矩陣創建,賦值,轉置,加法,支持行列數不同的矩陣
注1,轉置方法將輸出一個新的矩陣,並不改變原有矩陣的內容
注2:加法方法是a.add(b),b不發生變化,a發生變化,加法將改變a矩陣的內容,不會產生新矩陣

public class Matrix {
private int rows;
private int columns;
private Integer[][] m;

// 行列構造法
public Matrix(int rows, int columns) {
this.rows = rows;
this.columns = columns;
this.m = new Integer[rows][columns];
}

// 二維數組構造法
public Matrix(Integer[][] m) {
this.m = m;
this.rows = m.length;
this.columns = m[0].length;
}

// 轉置
public Matrix exchange() {
Integer[][] result = new Integer[columns][rows];

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
result[j][i] = m[i][j];
}
}

return new Matrix(result);
}

// 加法
public void add(Matrix obj) {
if (obj.getRows() != rows || obj.getColumns() != columns) {
System.out.println("不同行列的矩陣不能相加");
} else {
Integer[][] objarray = obj.toArray();

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
m[i][j] += objarray[i][j];
}
}
}
}

// 矩陣賦值
public void setValue(int row, int column, int value) {
if (row < rows && column < columns) {
m[row][column] = value;
} else {
System.out.println("索引超出邊界");
}
}

public int getRows() {
return rows;
}

public int getColumns() {
return columns;
}

public Integer[][] toArray() {
return m;
}

public String toString() {
String result = "";

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
result = result + m[i][j] + " ";
}

result += "\r\n";
}

return result;
}
}

public class MatrixTest {

public static void main(String[] args) {
Matrix m1 = new Matrix(2, 3);

for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
m1.setValue(i, j, i + j);
}
}

System.out.println(m1.toString());

System.out.println(m1.exchange().toString());

Matrix m2 = new Matrix(2, 3);

for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
m2.setValue(i, j, (i + 1) * (j + 1));
}
}

System.out.println(m2.toString());

m1.add(m2);

System.out.println(m1.toString());
}
}

⑧ java:1.用一維數組實現二維數組的加法和乘法 2. 求解線性方程組 3.求矩陣的逆矩陣

public class Matrix {

/**
* @param args
*/

public static void main(String[] args) {
// TODO Auto-generated method stub

int[][] A={{1,5,7,3},
{3,6,3,9},
{1,2,8,7},
{0,3,1,9},
{3,2,5,4}};

int [][]B={{3,9,1,4,1,4},
{5,6,7,9,0,3},
{3,2,7,2,5,6},
{9,7,4,7,8,0}};

int [][]C= new int [5][6];
int i,j,k;

for(i=0;i<5;i++){
for(j=0;j<6;j++){
C[i][j]=0;
}
}

for(i=0;i<5;i++){
for(j=0;j<6;j++){
for(k=0;k<4;k++){
C[i][j]+=A[i][k]*B[k][j];
}
}
}

for(i=0;i<5;i++){
for(j=0;j<6;j++){
System.out.print(" "+C[i][j]+" ");
}
System.out.println();
}

}

}

⑨ 求一個求N階矩陣的逆的JAVA源程序

建議你看數值分析,裡面有很多關於矩陣運算的演算法。

⑩ java里怎麼求一個矩陣的逆

1,2,3,1,0,0
4,5,6,0,1,0
7,8,9,0,0,1
經過變換成
1,0,0,*,*,*
0,1,0,*,*,*
0,0,1,*,*,*就可以了,右邊星號表示的矩陣就是你要求的逆
簡單的說(A,E)變換成(E,A的逆)

閱讀全文

與java矩陣求逆相關的資料

熱點內容
數學奇跡神奇運演算法 瀏覽:359
大廠的程序員的水平如何 瀏覽:700
遺傳演算法入門經典書籍 瀏覽:878
源碼炮台腳本 瀏覽:620
在位編輯命令 瀏覽:347
曲式分析基礎教程pdf 瀏覽:14
php生成靜態html頁面 瀏覽:964
怎麼分割pdf 瀏覽:812
壓縮垃圾報警器 瀏覽:628
小公司一般都用什麼伺服器 瀏覽:967
java獲取時間gmt時間 瀏覽:820
為什麼csgo一直連接不到伺服器 瀏覽:504
安卓登ins需要什麼 瀏覽:836
機器人演算法的難點 瀏覽:226
全自動化編程 瀏覽:726
程序員高薪限制 瀏覽:693
壓縮圖片壓縮 瀏覽:75
美國發明解壓魔方 瀏覽:302
電腦怎麼備案網上伺服器 瀏覽:515
旅行商問題Python寫法 瀏覽:952