Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
21.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
112.86 Кб
Скачать

21.Системы дифференциальных уравнений

Линейной однородной системой с постоянными коэффициентами называется система дифференциальных уравнений вида:

i=1,2,…,n,                            (11)

где коэффициенты  - постоянные,  - искомые функции от t.

Систему (11) можно коротко записать в виде одного матричного уравнения

(12)

где

.

Теорема. Если система частных решений однородного уравнения (12) является фундаментальной, то общее решение этого уравнения имеет вид  ,

где   – произвольные постоянные.

Рассмотрим решение систем дифференциальных уравнений на примере:

(13)

Решение этой системы ищем в виде  , где l,m,n,r-const. Подставляем решения в систему уравнений для определения  :

(14)

Система (14) имеет ненулевое решение, когда ее определитель равен нулю: 

Это уравнение называется характеристическим.

1. Пусть корни   характеристического уравнения вещественные и различны. Подставим в (14) вместо число   и, решив систему (14), получим  . Затем положим в (14)  и получим   и, наконец, при   получим  .

Соответственно, получаем три частных решения:

Общее решение системы (13) имеет вид:

22. Численное решение дифференциального уравнения порядка выше 1-го

Дифференциальное уравнение порядка выше первого можно преобразовать в систему уравнений первого порядка, в которой число уравнений равно порядку исходного уравнения

Многие дифференциальные уравнения, с которыми сталкиваются физики, это уравнения второго порядка (т.е. уравнения, содержащие вторые производные) Таково, например, уравнение простого гармонического движения из примера (3), md 2x/dt 2 = –kx. Вообще говоря, можно ожидать, что уравнение второго порядка имеет частные решения, удовлетворяющие двум условиям; например, можно потребовать, чтобы кривая-решение проходила через данную точку в данном направлении. В случаях, когда дифференциальное уравнение содержит некоторый параметр (число, величина которого зависит от обстоятельств), решения требуемого типа существуют только при определенных значениях этого параметра. Например, рассмотрим уравнение md 2x/dt 2 = –kx и потребуем, чтобы y(0) = y(1) = 0. Функция y  0 заведомо является решением, но если   – целое кратное числа , т.е. k = m2n22, где n – целое число, а в действительности только в этом случае, существуют другие решения, а именно: y = sin nx. Значения параметра, при которых уравнение имеет особые решения, называются характеристическими или собственными значениями; они играют важную роль во многих задачах.

Уравнение простого гармонического движения служит примером важного класса уравнений, а именно: линейных дифференциальных уравнений с постоянными коэффициентами. Более общий пример (также второго порядка) – уравнение

где a и b – заданные постоянные, f(x) – заданная функция. Такие уравнения можно решать различными способами, например, с помощью интегрального преобразования Лапласа. То же можно сказать и о линейных уравнениях более высоких порядков с постоянными коэффициентами

23. Создание и использование функций пользователя в С++

Функция пользователя – группа команд, имеющая уникальное имя, объявлена в заголовке файлов или в основной программе, а так же описанная в модуле или в основной программе.

Перед вызовом функции её нужно объявить, для этого:

<тип функции><название функции> (<список формальных параметров>);

Тип функции – тип возвращаемого значения, если функция не возвращает результат, то она объявляется типом void .

В списке формальных параметров для каждой переменной нужно отдельно указывать тип. Указывать имена переменных не обязательно (например,  (float, float, int);). Переменным при их перечислении можно сразу присваивать исходные значения.

Описание функции пользователя

<тип функции><название функции>(<список формальных параметров>)

{

<тело функции>;

Return (<название переменной, значение которой нужно вернуть>):

}

Функцию можно описать и до основной функции, тогда объявлять ее не обязательно

Вызов функции

<название функции>(<список фактических параметров>);

Типы фактических переменных должны совпадать с типами формальных переменных.

Прототипы функции

Так же можно использовать прототип функции, это объявление функции без их определения. Т.е. перед главной функцией идет объявление функции, в главной функции ее использование, а после главной функции само описание.

В общем случае она задается своим именем. Операнды функции, или формальные параметры, задаются в списке параметров, через запятую. Такой список заключается в круглые скобки. Результатом функции может быть значение, которое называют возвращаемым. Об отсутствии возвращаемого значения сообщают ключевым словом void. Действия, которые производит функция, составляют ее тело; оно заключено в фигурные скобки. Тип возвращаемого значения, ее имя, список параметров и тело составляют определение функции. Вот несколько примеров:

inline int abs( int obj )

{

// возвращает абсолютное значение iobj

return( iobj < 0 ? -iobj : iobj );

}

inline int min( int p1, int p2 )

{

// возвращает меньшую из двух величин

return( pi < p2 ? pi : p2 );

}

int gcd( int vl, int v2 )

{

// возвращает наибольший общий делитель

while ( v2 )

{

int temp = v2;

v2 = vl % v2;

vl = temp;

}

return vl;

}

Выполнение функции происходит тогда, когда в тексте программы встречается оператор вызова. Если функция принимает параметры, при ее вызове должны быть указаны фактические параметры, аргументы. Их перечисляют внутри скобок, через запятую. В следующем примере main() дважды вызывает abs() и по одному разу min() и gcd(). Функция main() определяется в файле main.C.

#include

int main()

{

// прочитать значения из стандартного ввода

cout << "Введите первое значение: ";

int i;

cin >> i;

if ( !cin ) {

cerr << "!? Ошибка ввода - аварийный выход!\n";

return -1;

}

cout << "Введите второе значение: ";

int j;

cin >> j;

if ( !cin ) {

cerr << "!? Ошибка ввода - аварийный выход!\n";

return -2;

}

cout << "\nmin: " << min( i, j ) << endl;

i = abs( i );

j = abs( j );

cout << "НОД: " << gcd( i, j ) << endl;

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]