Автор работы: Пользователь скрыл имя, 03 Декабря 2011 в 13:26, курсовая работа
Описать класс, реализующий тип данных «квадратная вещественная матрица третьего порядка» и работу с ним. Класс должен реализовывать вычисление определителя матрицы, обратной матрицы, деление матриц и вывод матрицы на форму.
Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.
Задание 3
Описание классов 4
Текст программы 8
Вид приложения 15
JOptio
}
});
reserve.
public void actionPerformed(ActionEvent e) {
Matrix m = new Matrix(em.getArray()).reverse(
if (m!=null){
}else {
}
}});
mult.
public void actionPerformed(ActionEvent e) {
Matrix
}
});
div.
public void actionPerformed(ActionEvent e) {
Matrix
}
});
}
}
Листинг 3. Класс EnterMatrix
import java.awt.TextField;
import javax.swing.Box;
import javax.swing.JPanel;
public class EnterMatrix extends JPanel{
TextField[][] tfArray = new TextField[3][3];
EnterMatrix(){
Box panel = Box.createVerticalBox();
JPanel[] panel2 = new JPanel[3];
for (int i =0;i<3;i++){
panel2[i] = new JPanel();
for (int j =0;j<3;j++){
tfArra
tfArra
panel2
}
panel.add(
}
this.add(panel);
}
double[][] getArray(){
double[][] temp = new double[3][3];
for (int i =0;i<3;i++){
for (int j =0;j<3;j++){
if(
}else {
}
}
}
return temp;
}
}
Листинг 4. Класс Matrix
import java.awt.TextField;
import javax.swing.Box;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class Matrix {
private double[][] data ;
Matrix(double[][] a){
data = a;
}
double det (){
if (data.length == 3){
return data[0][0]*data[1][1]*data[2][
} else if (data.length==2){
return data[0][0]*data[1][1]-data[0][
}
return 0;
}
void show(){
Box panel = Box.createVerticalBox();
JLabel[] label = new JLabel[data.length];
for (int i =0 ; i<data.length; i++ ){
label[i] = new JLabel();
for (int j=0; j< data.length; j++){
System
label[
panel.
}
}
JOptionPane.
}
Matrix transposition(){
double [][] tempData = new double[3][3];
for (int i =0; i<3; i++){
for (int j =0; j<3; j++){
tempDa
}
}
return new Matrix(tempData);
}
static Matrix multiply(Matrix a, Matrix b){
double [][] dataA = a.data;
double [][] dataB = b.data;
double [][] dataC = new double[3][3];
for (int i =0; i<3; i++){
for (int j =0; j<3; j++){
double s = 0;
for (int k = 0; k<3; k++){
}
dataC[
}
}
return new Matrix(dataC);
}
Matrix minor(int i, int j){
double[][]
tempData = new double[data.length-1][data.
int k=0;
int l=0;
for (int I=0;I<3;I++){
l=0;
for (int J=0;J<3;J++){
if (!((i==I) || (j==J))){
}
}
if (I!=i){k++;}
}
return new Matrix(tempData);
}
Matrix reverse(){
if (det()==0){
return null;
}
double[][]
minorsData = new double[data.length][data.
for (int i =0; i<data.length; i++){
for (int j =0; j<data.length; j++){
if ((i+j)%2==0){
} else {
}
}
}
Matrix m = new
Matrix(minorsData).
double mDet = this.det();
double [][] mData = m.data;
for (int i =0; i<mData.length; i++){
for (int j =0; j<mData.length; j++){
mData[
}
}
m = new Matrix(mData);
return m;
}
static Matrix division(Matrix a, Matrix b){
return Matrix.multiply(b.reverse(), a);
}
}
Общий вид
Общий вид с добавленной второй матрицей
Результат перемножения матриц