Beispiel #1
0
void Max::init()
{
    int i, j;
    func = 0;
    sv = new double *[num_l];
    for (int i(0); i < num_l; i++)
    {
        if (sign[i]==2)
        {
            fm[i] *= -1;
            for (int j(0); j < num_v; j++)
            {
                system[i][j] = system[i][j] * -1;
            }

        }
    }
    for (i = 0; i < num_l; i++)
        sv[i] = new double [num_v + num_l];
    for (i = 0; i < num_l; i++) {
        for (j = 0; j < num_v; j++)
            sv[i][j] = system[i][j];
        for (; j < num_v + num_l; j++)
            if (i + num_v == j)
                    sv[i][j] = 1;
            else
                sv[i][j] = 0;
    }
    istr = new double [num_v + num_l];
    bv = new double *[num_l];
    for (i = 0; i < num_l; i++)
    {
        bv[i] = new double [2];
        bv[i][0] = i + num_v;
        bv[i][1] = fm[i];
    }
    for (i = 0; i < num_v + num_l; i++)
        if (i < num_v)
            istr[i] = function[i] * -1;
        else
            istr[i] = 0;
     th = new double [num_l];
    alm = findalm();
  //  cout << "Ведущий елемент:" << alm << " .Ведущая строка: " << i_lrow << "Ведущий столбец: " << i_lcol << endl;
    print_result_to_file(0);
}
Beispiel #2
0
SBMLSIM_EXPORT void write_csv(myResult* result, const char* file) {
    char delimiter = ',';
    print_result_to_file(result, file, delimiter);
}
Beispiel #3
0
void Max::gen_plane()
{

         cout << "get plane вызов" << endl;
    int i, j, it_num = 0;
    double A, B;

    while (!plane_is_valid() && function_is_undefined()) {
    A = bv[i_lrow][1];
    B = istr[i_lcol];
    func -= A * B / alm;
    double *tmp_bv = new double [num_l];
    bv [i_lrow][0] = i_lcol;
    A = bv[i_lrow][1];
    for (i = 0; i < num_l; i++) {
        B = sv[i][i_lcol];
        tmp_bv[i] = bv[i_lrow][1];
        if (i != i_lrow)
            tmp_bv[i] = bv[i][1] - A * B / alm;
        else
            tmp_bv[i] /= alm;

    }
    for (i = 0; i < num_l; i++)
        bv[i][1] = tmp_bv[i];
    double *tmp_istr = istr;
    B = istr[i_lcol];
    for (i = 0; i < num_v + num_l; i++) {
        A = sv[i_lrow][i];
        tmp_istr[i] = istr[i] - A * B / alm;
    }
    istr = tmp_istr;
    double **tmp_sv = new double *[num_l];
    for (i = 0; i < num_l; i++)
        tmp_sv[i] = new double [num_v + num_l];
    for (i = 0; i < num_l; i++)
        for (j = 0; j < num_v + num_l; j++) {
            tmp_sv[i][j] = sv[i][j];
            A = sv[i_lrow][j];
            B = sv[i][i_lcol];

            if (i == i_lrow)
                tmp_sv[i][j] /= alm;             
            else
                tmp_sv[i][j] = sv[i][j] - A * B / alm;

        }
       tmp_sv[i_lrow][i_lcol] = 1/alm;
        sv = tmp_sv;
        alm = findalm();
        cout << "Ведущий елемент:" << alm << " .Ведущая строка: " << i_lrow << ". Ведущий столбец: " << i_lcol << endl;

        it_num++;
        print_result_to_file(it_num);

    }

    if (!function_is_undefined())
            cout << "\nЦелевая фукнция не ограничена, данная задача решений не имеет\n" << endl;
    else {
        cout << "\nf(x) = " << func << "\n" << endl;
        cout << "\nВсе вычисления были записаны в файл max.txt\n" << endl;
    }
}