当前位置: 首页>>代码示例>>PHP>>正文


PHP Matrix::set_item方法代码示例

本文整理汇总了PHP中Matrix::set_item方法的典型用法代码示例。如果您正苦于以下问题:PHP Matrix::set_item方法的具体用法?PHP Matrix::set_item怎么用?PHP Matrix::set_item使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Matrix的用法示例。


在下文中一共展示了Matrix::set_item方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: solve

    public function solve()
    {
        if (!Matrix_Helper::is_symmetric_matrix($this->matrix_a))
            throw new MathException('Матрица не симметическая. Использовать метод квадратного корня нецелесообразно');

        if ($this->matrix_a->get_rows_count() != $this->vector_b->get_size())
            throw new MathException('Размеры матрицы и ветора должны быть одинаковыми');

        $n = $this->matrix_a->get_rows_count();
        
        
        // Находим D, S
        $matrix_d = new Matrix($n, $n);
        $matrix_s = new Matrix($n, $n);
        
        for ($i = 0; $i < $n; $i++)
        {
            $sum = new Scalar(Scalar::ZERO);
            
            for ($p = 0; $p <= $i-1; $p++)
                $sum = Scalar_Helper::sum(
                    $sum,
                    Scalar_Helper::multiply(
                        Scalar_Helper::sqr(
                            $matrix_s->get_item($p, $i)
                        ),
                        $matrix_d->get_item($p, $p)
                    )
                );
            
            // d[i, i]
            $matrix_d->set_item($i, $i,
                Scalar_Helper::sign(
                    Scalar_Helper::sub(
                        $this->matrix_a->get_item($i, $i),
                        $sum
                    )
                )
            );
            
            // s[i, i]
            $matrix_s->set_item($i, $i,
                Scalar_Helper::sqrt(
                    Scalar_Helper::abs(
                        Scalar_Helper::sub(
                            $this->matrix_a->get_item($i, $i),
                            $sum
                        )
                    )
                )
            );
            
            // s[i, j]
            for ($j = $i+1; $j < $n; $j++)
            {
                $sum = new Scalar(Scalar::ZERO);
                
                for ($p = 0; $p <= $i-1; $p++)
                    $sum = Scalar_Helper::sum(
                        $sum,
                        Scalar_Helper::multiply(
                            Scalar_Helper::multiply(
                                $matrix_s->get_item($p, $i),
                                $matrix_d->get_item($p, $p)
                            ),
                            $matrix_s->get_item($p, $j)
                        )
                    );
                
                // s[i, j]
                $matrix_s->set_item($i, $j,
                    Scalar_Helper::division(
                        Scalar_Helper::sub(
                            $this->matrix_a->get_item($i, $j),
                            $sum
                        ),
                        Scalar_Helper::multiply(
                            $matrix_d->get_item($i, $i),
                            $matrix_s->get_item($i, $i)
                        )
                    )
                );
            }
        }
        
        $matrix_b = Matrix_Helper::multiply(
            Matrix_Helper::transpose($matrix_s),
            $matrix_d
        );
        
        $vector_y = new Vector($n);
        
        for ($k = 0; $k < $n; $k++)
        {
            $sum = new Scalar(Scalar::ZERO);
            
            for ($s = 0; $s <= $k-1; $s++)
                $sum = Scalar_Helper::sum(
                    $sum,
                    Scalar_Helper::multiply(
//.........这里部分代码省略.........
开发者ID:noxt,项目名称:MChA_Course,代码行数:101,代码来源:square_method.class.php

示例2: swap_cols

    /**
     * Обмен столбцов местами
     *
     * @param Matrix $matrix_a Матрица, в которой нужно поменять столбцы
     * @param int $first_col Первый столбец
     * @param int $second_col Второй столбец
     *
     * @return Matrix
     */
    public static function swap_cols(Matrix $matrix_a, $first_col, $second_col)
    {
        // Проверяем индексы на корректность
        if (!is_int($first_col) || !is_int($second_col))
            throw new MathException('Индекс должен быть числом');

        if ($first_col < 0 || $second_col < 0)
            throw new MathException('Индекс не может быть отрицательным');

        if ($first_col >= $matrix_a->get_cols_count() || $second_col >= $matrix_a->get_cols_count())
            throw new MathException('Индекс выходит за пределы матрицы');

        // Создаем итоговую матрицу
        $res_matrix = new Matrix($matrix_a->get_rows_count(), $matrix_a->get_cols_count());

        // Производим заполнение итоговой матрицы
        for ($i = 0; $i < $matrix_a->get_rows_count(); $i++)
            for ($j = 0; $j < $matrix_a->get_cols_count(); $j++)
            {
                $cur_col = $j;

                if ($j == $first_col)
                    $cur_col = $second_col;

                if ($j == $second_col)
                    $cur_col = $first_col;

                $res_matrix->set_item($i, $j, $matrix_a->get_item($i, $cur_col));
            }

        // Возвращаем результат
        return $res_matrix;
    }
开发者ID:noxt,项目名称:MChA_Course,代码行数:42,代码来源:matrix.class.php


注:本文中的Matrix::set_item方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。