
- •22. Численное решение дифференциального уравнения порядка выше 1-го
- •24. Нелинейные дифференциальные уравнения. Устойчивость метода решения.
- •25. Дифференциальные уравнения в частных производных
- •27. Типы граничных условий и их постановка в численном дифференцировании
- •Скаляр (от лат. Scalaris — ступенчатый) — величина (возможно переменная, то есть функция), каждое значение которой может быть выражено одним числом (чаще всего подразумевается действительное число).
- •29. Численное дифференцирование. Постановка задачи. МетодЭйлера
21.Системы дифференциальных уравнений |
Линейной однородной системой с постоянными коэффициентами называется система дифференциальных уравнений вида:
где
коэффициенты Систему (11) можно коротко записать в виде одного матричного уравнения
где
Теорема. Если
система частных решений однородного
уравнения (12) является фундаментальной,
то общее решение этого уравнения имеет
вид где Рассмотрим решение систем дифференциальных уравнений на примере:
Решение
этой системы ищем в виде
Система
(14) имеет ненулевое решение, когда ее
определитель равен нулю: Это уравнение называется характеристическим. 1.
Пусть корни Соответственно, получаем три частных решения:
Общее решение системы (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 nx.
Значения параметра, при которых уравнение
имеет особые решения, называются
характеристическими или собственными
значениями; они играют важную роль во
многих задачах.
Уравнение простого гармонического движения служит примером важного класса уравнений, а именно: линейных дифференциальных уравнений с постоянными коэффициентами. Более общий пример (также второго порядка) – уравнение
где 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;
}