Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Кто умеет переводить с C# на Delphi 7 ? 
:(
    Опции темы
MeSasuke
Дата 6.5.2012, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.5.2012

Репутация: нет
Всего: нет




Код

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;
                }
            }

           
        }
    }



Это сообщение отредактировал(а) MeSasuke - 6.5.2012, 14:28
PM MAIL   Вверх
Rrader
Дата 8.5.2012, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 14
Всего: 191



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.