Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_3.docx
Скачиваний:
8
Добавлен:
15.08.2019
Размер:
335.9 Кб
Скачать

Аналітичний розв’язок

0.3

0.2

0

0

0.5

0

0

0.5

0.4

0.1

0

0

0

0.3

0

0.7

0

0

0

0

0

0

1

0

0

0

0

0

0.4

0.6

0.5

0

0.3

0.2

0

0

C=c*

C= (C1,C2,C3,C4);

C1=0.3C1+0.5C6;

C2=0.2C1+0.5C2+0.3C3;

C3=0.4C2+0.3C6;

C4=0.1C2+0.7C3+0.2C6;

C5=0.5C1+C4+0.4C5;

C6=0.6C5;

Отже,

C1=0,1378476420798065;

C2=0,1182587666263603;

C3=0,1051995163240629;

C4=0,1240628778718259;

C5=0,3216444981862152;

C6=0,1929866989117292.

Текст програми:

Main.java

package lab3;

public class Main {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

new Window();

}

}

Window.java

package lab3;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.SpringLayout;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;

public class Window implements ActionListener,KeyListener, ChangeListener {

public static int t=1;

JTextField takt;

public static JLabel b1l,resLbl= new JLabel();

public static String b1s;

JLabel per,im1,im2;

JButton ok;

JFrame wnd;

static String resStr [][]=new String [1][7], resStr1[][]=new String [7][8];

Window() {

wnd=new JFrame("Асіїв Андріани, КН-31");

wnd.setLayout(null);

wnd.setResizable(false);

wnd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

wnd.setBounds(100, 100, 1000,550);

String path = "C://graf.jpg";

ImageIcon image = new ImageIcon(path);

JLabel imlbl = new JLabel(image);

imlbl.setBounds(0, 0, 500,500);

JLabel ttakt = new JLabel("Кількість тактів:");

ttakt.setBounds(620, 10, 100, 20);

takt = new JTextField();

takt.setBounds(720, 10, 80, 20);

takt.addKeyListener(this);

ok = new JButton("OK");

ok.setBounds(805, 10, 80, 20);

ok.addActionListener(this);

per = new JLabel("Таблиця переходів");

per.setBounds(655, 35, 200, 20);

im1 = new JLabel("Кількість переходів між відповідними станами автомата");

im1.setBounds(600, 200, 400, 20);

im2 = new JLabel("Імовірності перебування автомата у станах");

im2.setBounds(600, 380, 400, 20);

b1s = new String("");

b1s="";

b1l = new JLabel();

b1l.setBounds(620, 80, 600, 40);

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

resStr[0][i]="0";

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

resStr1[i][j]="0";

}

new Avtomat(1);

String tmpArr[][] = new String [7][8];

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

tmpArr[i][0]="Z"+i;

for (int j=1;j<8;j++)

tmpArr[i][j]=Double.toString(lab3.Avtomat.pm[i][j-1]);

}

//Створення панелі, яка буде містити матрицю P

String[] names = new String []{"P","Z0","Z1","Z2","Z3","Z4","Z5","Z6"};

JTable table = new JTable(tmpArr,names);

JScrollPane sp= new JScrollPane(table);

//SpringLayout layout = new SpringLayout();

JPanel panel = new JPanel(new SpringLayout());

panel.add(sp);

panel.setBounds(500, 60, 580, 130);

wnd.add(panel);

//Створення панелі, яка буде містити матрицю B

String[] namesP = new String []{"B","Z0","Z1","Z2","Z3","Z4","Z5","Z6"};

JTable tableP = new JTable(resStr1,namesP);

JScrollPane spP= new JScrollPane(tableP);

JPanel panel1 = new JPanel(new SpringLayout());

panel1.add(spP);

panel1.setBounds(500, 240, 500, 130);

wnd.add(panel1);

//B1:

String[] namesB = new String []{"Z0","Z1","Z2","Z3","Z4","Z5","Z6"};

JTable tableB = new JTable(resStr,namesB);

JScrollPane spB= new JScrollPane(tableB);

JPanel panel2 = new JPanel(new SpringLayout());

panel2.add(spB);

panel2.setBounds(500, 410, 500, 35);

wnd.add(panel2);

resLbl.setBounds(500, 450, 500, 50);

wnd.add(new JLabel());

wnd.add(imlbl);

wnd.add(ttakt);

wnd.add(takt);

wnd.add(ok);

wnd.add(b1l);

wnd.add(resLbl);

wnd.add(per);

wnd.add(im1);

wnd.add(im2);

wnd.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent arg0) {

// TODO Auto-generated method stub

wnd.setVisible(false);

new Avtomat(t);

wnd.setVisible(true);

}

@Override

public void stateChanged(ChangeEvent arg0) {

// TODO Auto-generated method stub

}

@Override

public void keyPressed(KeyEvent arg0) {

// TODO Auto-generated method stub

}

@Override

public void keyReleased(KeyEvent arg0) {

// TODO Auto-generated method stub

try {

t=Integer.parseInt(takt.getText());

ok.setEnabled(true);

}catch (Exception e) {

ok.setEnabled(false);

}

}

@Override

public void keyTyped(KeyEvent arg0) {

// TODO Auto-generated method stub

}

}

Avtomat.java

package lab3;

import java.text.DecimalFormat;

import java.util.Random;

public class Avtomat {

public double b1[] = new double [7];

int z=0,b[][],sumst[];

static double pm[][];

public Avtomat(int t){

//Матриця рядків для формування табиці вхідних даних

pm = new double [][]{

{0, 0.4, 0, 0, 0.5, 0 ,0.1},

{0, 0.3, 0.2, 0, 0, 0.5 ,0},

{0, 0, 0.5, 0.4, 0.1, 0 ,0},

{0, 0, 0.3, 0, 0.7, 0 ,0},

{0, 0, 0, 0, 0, 1,0},

{0, 0, 0, 0, 0, 0.4 ,0.6},

{0, 0.5, 0, 0.3, 0.2, 0,0}};

b = new int [7][7];

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

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

b[i][j]=0;

}

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

double p=0;

//Генерація випадкового числа

Random r = new Random();

double vch = r.nextDouble(); //Випадкове число

System.out.printf(" %.2f",vch);

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

p=0;

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

p+=pm[z][k]; //Сума р

if(vch<p){

b[z][j]++; //Заповнюємо матрицю b

z=j; //Стане поточним значенням z

break;

}

}

}

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

lab3.Window.resStr1[i][0]="Z"+i;

for (int j=1;j<8;j++)

lab3.Window.resStr1[i][j]=Integer.toString(b[i][j-1]);

}

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

b1[i]=0;

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

for(int z=0; z<7; z++)

b1[j]+=b[j][z];

b1[j]/=t;

lab3.Window.resStr[0][j]=Double.toString(b1[j]);

}

DecimalFormat df = new DecimalFormat("0.00");

lab3.Window.resLbl.setText("<html>Ймовірність перебування <br> на виході автомата 1: "+df.format(b1[3]+b1[5]+b1[6])+"</html>");

}

}

Результат виконання програми

Висновок. На даній лабораторній роботі я вивчила процес функціонування дискретного скінченого стохастичного автомата та знайшла його ймовірності характеристики за даними експерименту.

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