Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.05.2012, 14:43
Me_Sasuke Me_Sasuke вне форума
Прохожий
 
Регистрация: 04.05.2012
Сообщения: 4
Репутация: 10
По умолчанию Помогите пожалуйста разобраться с программой!

Помогите перевести в Delphi!!

Код:
public partial class Form1 : Form
    {
        static int m = 19;
        double[,] a;
        DataTable dtable;
        double l1;
        double l2 ;
        double mu1;
        double mu2;
        double mu2p;
        double del;
        double tetha12;
        double tetha21;
        double beta;

        public Form1()
        {
            InitializeComponent();
            reset();
            dtable = new DataTable();

            dtable.Columns.Add("Вероятность");
            dtable.Columns.Add("Значение");
            for (int i = 0; i < m+1; i++)
            dtable.Rows.Add();
            dtable.Rows[0][0] = "P_001";
            dtable.Rows[1][0] = "P_101";
            dtable.Rows[2][0] = "P_121";
            dtable.Rows[3][0] = "P_1*11";
            dtable.Rows[4][0] = "P_1*31";
            dtable.Rows[5][0] = "P_021";
            dtable.Rows[6][0] = "P_011";
            dtable.Rows[7][0] = "P_031";
            dtable.Rows[8][0] = "P_11*1";
            dtable.Rows[9][0] = "P_13*1";
            dtable.Rows[10][0] = "P_002";
            dtable.Rows[11][0] = "P_102";
            dtable.Rows[12][0] = "P_122";
            dtable.Rows[13][0] = "P_1*12";
            dtable.Rows[14][0] = "P_1*32";
            dtable.Rows[15][0] = "P_022";
            dtable.Rows[16][0] = "P_012";
            dtable.Rows[17][0] = "P_032";
            dtable.Rows[18][0] = "P_11*2";
            dtable.Rows[19][0] = "P_13*2";
            //dataGridView1.RowCount = 19;
            //dataGridView1.ColumnCount = 2;
            dataGridView1.DataSource = dtable;
            
            lam1TB.Text="0,07";
            lam2TB.Text="0,05";
            mu1TB.Text="0,3";
            mu2TB.Text="0,5";
            mu2pTB.Text="0,2";
            delTB.Text="0,1";
            tetha12TB.Text="0,3";
            tetha21TB.Text="0,3";
            betaTB.Text = "0,6";
        }

        void reset()
        {
            a = new double[m + 1, m + 2];
            for (int i = 0; i < m + 1; i++)
                for (int j = 0; j < m + 2; j++)
                    a[i, j] = 0;
            for (int j = 0; j < m + 2; j++)
                a[m, j] = 1;
        }

        void populate()
        {
            l1 = Convert.ToDouble(lam1TB.Text);
            l2 = Convert.ToDouble(lam2TB.Text);
            mu1 = Convert.ToDouble(mu1TB.Text);
            mu2 = Convert.ToDouble(mu2TB.Text);
            mu2p = Convert.ToDouble(mu2pTB.Text);
            del = Convert.ToDouble(delTB.Text);
            tetha12 = Convert.ToDouble(tetha12TB.Text);
            tetha21 = Convert.ToDouble(tetha21TB.Text);
            beta = Convert.ToDouble(betaTB.Text);

            a[0, 0] = -(l1 + (1 - beta) * l2 + beta * l2);
            a[1, 1] = -(mu1 + (1 - beta) * l2 + beta * l2 + tetha12);
            a[2, 2] = -(del);
            a[3, 3] = -(mu1);
            a[4, 4] = -(mu1);
            a[5, 5] = -(del);
            a[6, 6] = -(mu2 + l1);
            a[7, 7] = -(mu2p + l1);
            a[8, 8] = -(mu2);
            a[9, 9] = -(mu2p);
            a[10, 10] = -(l1 + (1 - beta) * l2 + beta * l2);
            a[11, 11] = -(mu1 + (1 - beta) * l2 + beta * l2);
            a[12, 12] = -(del);
            a[13, 13] = -(mu1);
            a[14, 14] = -(mu1);
            a[15, 15] = -(del);
            a[16, 16] = -(mu2 + l1 + tetha21);
            a[17, 17] = -(mu2p + l1 + tetha21);
            a[18, 18] = -(mu2);
            //a[19, 19] = -(mu2p);

            a[0, 1] = mu1; a[0, 6] = mu2; a[0, 7] = mu2p;
            a[1, 0] = l1; a[1, 8] = mu2; a[1, 9] = mu2p;
            a[2, 1] = (1 - beta) * l2;
            a[3, 1] = beta * l2;
            a[4, 2] = del;
            a[5, 0] = (1 - beta) * l2;
            a[6, 0] = beta * l2; a[6, 3] = mu1; a[6, 16] = tetha21;
            a[7, 4] = mu1; a[7, 5] = del; a[7, 17] = tetha21;
            a[8, 6] = l1;
            a[9, 7] = l1;
            a[10, 11] = mu1; a[10, 16] = mu2; a[10, 17] = mu2p;
            a[11, 1] = tetha12; a[11, 10] = l1; a[11, 18] = mu2; a[11, 19] = mu2p;
            a[12, 11] = (1 - beta) * l2;
            a[13, 11] = beta * l2;
            a[14, 12] = del;
            a[15, 10] = (1 - beta) * l2;
            a[16, 10] = beta * l2; a[16, 13] = mu1;
            a[17, 14] = mu1; a[17, 15] = del;
            a[18, 16] = l1;
            //a[19,17] = l1;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            reset();
            populate();

            GaussSLAU GSLAU = new GaussSLAU();
            GSLAU.m = m;
            GSLAU.solve(a);

            double kg = a[0, m + 1] + a[10, m + 1] + a[6, m + 1] + a[7, m + 1] + a[5, m + 1] + a[15, m + 1] + a[11, m + 1];
            KgTB.Text = kg.ToString();
            double ppot = a[6, m + 1] * (mu2 / (l1 + mu2)) + a[7, m + 1] * (mu2p / (l1 + mu2p)) + a[11, m + 1] * (mu1 / (l2 + mu1)) +
                          a[16, m + 1] * (mu2 / (l1 + mu2 + tetha21)) + a[17, m + 1] * (mu2p / (l1 + mu2p+tetha21)) +
                          a[11, m + 1] * (mu1 / (l2 + mu1 + tetha12)) + a[3, m + 1] + a[4, m + 1] + a[8, m + 1] + a[9, m + 1] +
                          a[13, m + 1] + a[14, m + 1] + a[18, m + 1] + a[19, m + 1];
            
            PpotTB.Text = ppot.ToString();

            dtable.Rows[0][1] = a[0,m+1];
            dtable.Rows[1][1] = a[1,m+1];
            dtable.Rows[2][1] = a[2,m+1];
            dtable.Rows[3][1] = a[3,m+1];
            dtable.Rows[4][1] = a[4,m+1];
            dtable.Rows[5][1] = a[5,m+1];
            dtable.Rows[6][1] = a[6,m+1];
            dtable.Rows[7][1] = a[7,m+1];
            dtable.Rows[8][1] = a[8,m+1];
            dtable.Rows[9][1] = a[9,m+1];
            dtable.Rows[10][1] = a[10,m+1];
            dtable.Rows[11][1] = a[11,m+1];
            dtable.Rows[12][1] = a[12,m+1];
            dtable.Rows[13][1] = a[13,m+1];
            dtable.Rows[14][1] = a[14,m+1];
            dtable.Rows[15][1] = a[15,m+1];
            dtable.Rows[16][1] = a[16,m+1];
            dtable.Rows[17][1] = a[17,m+1];
            dtable.Rows[18][1] = a[18,m+1];
            dtable.Rows[19][1] = a[19, m + 1];
            
        }


    }


class GaussSLAU
    {
        public int m;
        public void solve(double[,] a)
        {
            int i, j, k;
            for (k = 0; k <= m - 1; k++)
            {
                for (j = 0; j <= m + 1; j++)
                    if (k != j) a[k, j] /= a[k, k];
                a[k, k] = 1;
                for (i = k + 1; i <= m; i++)
                {
                    for (j = 0; j <= m + 1; j++)
                        if (k != j) a[i, j] -= a[i, k] * a[k, j];
                    a[i, k] = 0;
                }
            }
            k = m;
            for (j = 0; j <= m + 1; j++)
                if (k != j) a[k, j] /= a[k, k];
            a[k, k] = 1;

            for (k = m; k >= 1; k--)
            {
                for (i = k - 1; i >= 0; i--)
                {
                    for (j = 0; j <= m + 1; j++)
                        if (j != k) a[i, j] -= a[i, k] * a[k, j];
                    a[i, k] = 0;
                }
            }

           
        }
    }

Последний раз редактировалось Me_Sasuke, 06.05.2012 в 15:04.
Ответить с цитированием
  #2  
Старый 06.05.2012, 14:50
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

ТЫК
И используй тег [ CODE ] [ /CODE ] для кода.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:48.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025