Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java -texnologiya.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
2.62 Mб
Скачать

1.4. Умножение матрицы на вектор

В примере осуществляется умножение матрицы порядка не выше шестого с вещественными элементами на вектор. При инициализации элементы матрицы и вектора принимаются равными единице.  Пользователь с помощью курсора меняет  нужным образом элементы матрицы А и вектора В.

 

Лабораторная работа № 6.

 

Листинг 6. Matrix.java - умножение матрицы на вектор

 ---------------------------------------------------------------

// Импортируем необходимые пакеты классов

 import java.awt.*;       //эл. граф. интерфейса

 import java.applet.*;    //поддержка апплета

 import java.awt.event.*; //обработчик событий

// Создаем класс Matrix, расширяющий класс Applet

public class Matrix extends Applet

        implements ActionListener {

  TextField tN, tM, A[][], B[], C[];

  Button bShow, bCalc; //Кнопки, генерирующие сообщение

  Color bgApplet, bgAB, bgC;

  int n, m;

// Метод инициализации апплета

  public void init()  {

// Устанавливаем цвета для рисования граф. примитивов

  bgApplet = new Color(6, 159, 242);

      bgAB = new Color(21, 208, 223);

       bgC = new Color(234, 159, 21);

// Устанавливаем цвет фона апплета

    setBackground(bgApplet);

// Устанавливаем абс. позиционирование

//  компонентов внутри апплета

    setLayout(null);

// Создаем метку N, устанавливаем ее расположение

// и добавляем в апплет

    Label lN = new Label("N:");

    lN.setBounds(10, 10, 20, 20);

    add(lN);

tN = new TextField(); //создаем поле для ввода текста

tN.setBounds(40, 10, 40, 20); //указываем расположение

tN.setBackground(bgAB); //задаем цвет фона поля

add(tN); // добавляем поле в апплет

// Создаем метку М, границы метки и добавляем ее в апплет

    Label lM = new Label("M:");

    lM.setBounds(90, 10, 20, 20);

    add(lM);

// Создание, определение границ, цвета поля для М и

// добавление текстового поля в апплет

    tM = new TextField();

    tM.setBounds(120, 10, 40, 20);

    tM.setBackground(bgAB);

    add(tM);

// Создаем кнопкe Show

    bShow = new Button("Show");

    bShow.setBounds(170, 10, 50, 20);

    add(bShow);

// Создаем кнопкe Calculate

    bCalc = new Button("Calculate");

    bCalc.setBounds(230, 10, 50, 20);

    add(bCalc);

// Регистрируем для кнопок "прослушивание" событий

      bShow.addActionListener(this);

      bCalc.addActionListener(this);

      n = 0; m = 0;

  }

// Метод вывода графики в апплет

  public void paint(Graphics g){}

// Метод реакции на нажатия кнопок Show и Calculate

  public void actionPerformed(ActionEvent ae){

            String str = ae.getActionCommand();

    if(str.equals("Show"))

   {int newn = Integer.parseInt(tN.getText());

    int newm = Integer.parseInt(tM.getText());

       if(newm > 6)

       {  newm = 6;

           tM.setText(String.valueOf(6));

       }

       if(newm != m || newn != n)

         {

// Чистка полей для ввода текста матрицы А и вектора С

       for(int i=0; i<n; i++)

           { for(int j=0; j<m; j++)

                   remove(A[i][j]);

               remove(C[i]);

           }

    for(int i=0; i<m; i++)

       remove(B[i]); //чистка полей для вектора В

      m = newm;

      n = newn;

      A = new TextField[n][m];

      B = new TextField[m];

      C = new TextField[n];

// Заполнение матрицы А, вектора С текстовыми "1"

    for(int i=0; i<n ;i++)

       { for(int j=0; j<m; j++){

            A[i][j] = new TextField("1");

            A[i][j].setBounds(10+j*35,40+i*25,30,20);

            A[i][j].setBackground(bgAB);

            add(A[i][j]);    }

       C[i] = new TextField(tM.getText());

       C[i].setBounds(155+m*35,40+i*25,90,20);

       C[i].setEditable(false);

       C[i].setBackground(bgC);

       add(C[i]);

      }

      for(int i=0; i<m; i++)

         {   B[i] = new TextField("1");

          B[i].setBounds(65+m*35, 40+i*25, 30, 20);

          B[i].setBackground(bgAB);

          add(B[i]);

         }

      }

  }

   if(str.equals("Calculate"))

   {  for(int i=0; i<n; i++)

     {   double e = 0;

         for(int j=0; j<m; j++)

            e+=Double.parseDouble(A[i][j].getText())*

               Double.parseDouble(B[j].getText());

           C[i].setText(String.valueOf(e));

       }

    }

 }

}

 

 

 Листинг Matrix.html

 ----------------------------------------------------------------

<!-- Файл Matrix.html                                >

 <!-- Умножение матрицы на вектор                     >

 <HTML> <BODY BGCOLOR="#069FF2">

 <APPLET CODE="matrix.class" WIDTH=700

         HEIGHT=500 HALIGN="CENTER"></APPLET>

 </BODY> </HTML>

 

Результатом работы программы будет:

 

 

 

 

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]