本文整理汇总了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(
//.........这里部分代码省略.........
示例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;
}