Matrici
This commit is contained in:
parent
6903e571a0
commit
9f7395e187
BIN
src/Matrici/Matrice.class
Normal file
BIN
src/Matrici/Matrice.class
Normal file
Binary file not shown.
143
src/Matrici/Matrice.java
Normal file
143
src/Matrici/Matrice.java
Normal file
@ -0,0 +1,143 @@
|
||||
import java.io.*;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Matrice{
|
||||
|
||||
public Matrice(int a, int b){
|
||||
matrice = new double[a][b];
|
||||
this.a=a;
|
||||
this.b=b;
|
||||
}
|
||||
|
||||
public double getElement(int a, int b){
|
||||
return matrice[a][b];
|
||||
}
|
||||
|
||||
public void setElement(int a, int b, double c){
|
||||
this.matrice[a][b]=c;
|
||||
}
|
||||
|
||||
public int getA(){
|
||||
return a;
|
||||
}
|
||||
|
||||
public int getB(){
|
||||
return b;
|
||||
}
|
||||
|
||||
public String toString(){
|
||||
int i, j;
|
||||
String string = "";
|
||||
for(i=0; i<a; i++){
|
||||
string+="| ";
|
||||
for(j=0; j<b; j++)
|
||||
string+=getElement(i,j) + " ";
|
||||
string+="|\n";
|
||||
}
|
||||
return string;
|
||||
}
|
||||
|
||||
public void print(PrintStream ps){
|
||||
ps.println(toString());
|
||||
}
|
||||
|
||||
public static Matrice read(Scanner sc) throws Exception{
|
||||
int a, b, i, j;
|
||||
Matrice m1;
|
||||
|
||||
if(!sc.hasNextInt()) return null;
|
||||
a=sc.nextInt();
|
||||
if(!sc.hasNextInt()) return null;
|
||||
b=sc.nextInt();
|
||||
|
||||
m1 = new Matrice(a, b);
|
||||
|
||||
for(i=0; i<a; i++)
|
||||
for(j=0; j<b; j++){
|
||||
if(!sc.hasNextDouble()) return null;
|
||||
m1.setElement(i, j, sc.nextDouble());
|
||||
}
|
||||
|
||||
return m1;
|
||||
}
|
||||
|
||||
private boolean isSummable(Matrice m2){
|
||||
return this.a==m2.getA() && this.b==m2.getB();
|
||||
}
|
||||
|
||||
private boolean isMoltiplicabile(Matrice m2){
|
||||
return getB()==m2.getA();
|
||||
}
|
||||
|
||||
private boolean isSquare(){
|
||||
return this.a==this.b;
|
||||
}
|
||||
|
||||
public boolean equlas(Matrice m2){
|
||||
int i, j;
|
||||
boolean equals = true;
|
||||
|
||||
if(!isSummable(m2)) return false;
|
||||
for(i=0;i<a && equals;i++)
|
||||
for(j=0;j<b && equals;j++)
|
||||
equals &= this.getElement(i, j)==m2.getElement(i, j);
|
||||
|
||||
return equals;
|
||||
}
|
||||
|
||||
public Matrice transposed(){
|
||||
Matrice m2 = new Matrice(b, a);
|
||||
int i, j;
|
||||
for(i=0; i<a; i++)
|
||||
for(j=0; j<b; j++)
|
||||
m2.setElement(j, i, getElement(i, j));
|
||||
|
||||
return m2;
|
||||
}
|
||||
|
||||
/*
|
||||
public static double det(m){
|
||||
if(this.a==2 && this.b==2)
|
||||
return m.getElement(0,0)*m.getElement(1,1)-m.getElement(1,0)*m.getElement(0,1);
|
||||
else{
|
||||
|
||||
}
|
||||
|
||||
}*/
|
||||
|
||||
public Matrice product(Matrice m2){
|
||||
int a=this.a;
|
||||
int b=m2.getB();
|
||||
int c=m2.getA();
|
||||
int i, j, k;
|
||||
double element;
|
||||
Matrice m3 = new Matrice(a, b);
|
||||
|
||||
if(!isMoltiplicabile(m2)) return null;
|
||||
|
||||
for(i=0;i<a;i++)
|
||||
for(j=0;j<b;j++){
|
||||
element=0;
|
||||
for(k=0;k<c;k++)
|
||||
element+=getElement(i, k)*m2.getElement(k, j);
|
||||
m3.setElement(i, j, element);
|
||||
}
|
||||
|
||||
return m3;
|
||||
}
|
||||
|
||||
public Matrice sum(Matrice m2){
|
||||
Matrice m3 = new Matrice(getA(), getB());
|
||||
int i, j;
|
||||
|
||||
if(!isSummable(m2)) return null;
|
||||
for(i=0; i<getA(); i++)
|
||||
for(j=0; j<getB(); j++)
|
||||
m3.setElement(i, j, getElement(i, j)+m2.getElement(i, j));
|
||||
|
||||
return m3;
|
||||
}
|
||||
|
||||
private double[][] matrice;
|
||||
private int a, b;
|
||||
}
|
BIN
src/Matrici/Test.class
Normal file
BIN
src/Matrici/Test.class
Normal file
Binary file not shown.
25
src/Matrici/Test.java
Normal file
25
src/Matrici/Test.java
Normal file
@ -0,0 +1,25 @@
|
||||
import java.util.Scanner;
|
||||
import java.io.*;
|
||||
|
||||
public class Test{
|
||||
public static void main(String [] args) throws Exception{
|
||||
Scanner sc = new Scanner(new File("matrici.dat"));
|
||||
Matrice m = Matrice.read(sc);
|
||||
Matrice m2 = Matrice.read(sc);
|
||||
Matrice m3;
|
||||
|
||||
m3=m.transposed();
|
||||
|
||||
System.out.print("Le matrici m e m3 sono: ");
|
||||
if(m.equals(m3))
|
||||
System.out.println("Uguali\n");
|
||||
else
|
||||
System.out.println("Diverse\n");
|
||||
|
||||
System.out.println("Somma tra m2 e m3");
|
||||
m2.sum(m3).print(System.out);
|
||||
|
||||
System.out.println("Prodotto tra m e m2");
|
||||
m.product(m2).print(System.out);
|
||||
}
|
||||
}
|
7
src/Matrici/matrici.dat
Normal file
7
src/Matrici/matrici.dat
Normal file
@ -0,0 +1,7 @@
|
||||
2 3
|
||||
1 0 2
|
||||
0 3 -1
|
||||
3 2
|
||||
4 1
|
||||
-2 2
|
||||
0 3
|
Loading…
Reference in New Issue
Block a user