Math

prografix's picture

Программирование на C++ - Списки

Класс ShevList - это мой любимый класс. Я использую его давно и часто. Вначале, когда я его создал, у него было мало методов. Мне нравилось то обстоятельство, что оперируя небольшим количеством методов можно было делать довольно разнообразные манипуляции со списками. Но потом я заметил, что из-за этого страдает эффективность и стал добавлять новые методы до тех пор пока класс не принял существующий облик.

Your rating: None Average: 3.5 (2 votes)
prografix's picture

Программирование на C++ - Класс Matrix

Класс Matrix.


class Matrix
{
double ** p;
// Запрет оператора присваивания
void operator = ( const Matrix & );
public:
const int nRow; // к-во строк
const int nCol; // к-во столбцов

Matrix ( int r, int c );
Matrix ( int r, int c, const double * const * a );
Matrix ( const Matrix & );
~Matrix ();

void fill ( double );
Matrix & operator *= ( double );
operator double * const * () { return p; }
operator const double * const * () const { return p; }
};

No votes yet
prografix's picture

Программирование на C++ - Класс Complex

Несмотря на то, что в С++ есть стандартный шаблон complex для представления комплекных чисел, был сделан специальный класс Complex для того, чтобы было проще и понятнее:

No votes yet
prografix's picture

Программирование на C++ - Kласс File

Класс File.

Иногда нужно, чтобы функция одинаковым образом работала, как с файлом на диске, так и с выделенным фрагментом памяти или ещё с чем-нибудь. Т.е. файл должен быть не конкретным, а абстрактным понятием. В этом разделе описаны несколько классов для решения этой задачи.

Your rating: None Average: 2.5 (2 votes)
prografix's picture

Aлгебра - Метод Якоби вычисления собственных значений и векторов

Метод Якоби предназначен для вычисления собственных значений и векторов симметричных матриц. Этот алгоритм был взят из "Справочника алгоритмов на языке Алгол" ( Уилкинсон, Райнш ) и переписан на С++. В процессе работы наддиагональные элементы будут изменены, но их можно восстановить по поддиагональным. Функция возвращает количество проведённых вращений ( для интереса ).

No votes yet
prografix's picture

Алгебраические уравнения - Уравнения четвёртой степени

Вначале немного теории. Как обычно, будем рассматривать уравнение в котором коэффициент при x3 равен нулю:

x4 + px2 + qx + r = 0    (1)
Your rating: None Average: 5 (1 vote)
prografix's picture

Алгебраические уравнения - Кубические уравнения

Чаще всего кубические уравнения решают "тригонометрическим" методом, но там надо вычислять специальные функции, которые по сути являются подпрограммами, хотя и весьма оптимизированными. Можно поступить по другому - вначале найти один корень методом Ньютона, а затем, используя полученный корень, свести уравнение к квадратному для поиска остальных корней.

No votes yet
prografix's picture

Алгебраические уравнения - Уравнения второй степени (квадратные)

Квадратное уравнение решается по школьной формуле с небольшим изменением. Так находится только один корень ( у которого больше абсолютное значение ), а второй находится, как частное b / x. Таким образом получается больше правильных знаков.

No votes yet
prografix's picture

Алгебраические уравнения - Кубический корень

Иногда в программе нужно вычислить кубический корень. Раньше для этой цели я пользовался парой функций логарифм-экспонента, а потом (13.05.2004) решил сделать отдельную функцию и назвал её cbrt. В результате получилась функция, которая немного быстрей и немного точней, чем exp ( log ( x ) / 3 ).

Your rating: None Average: 1 (1 vote)