Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения
 

Исследование решений дифференциальных уравнений

Работа из раздела: «Математика»

/

Введение

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

1. Вводные замечания

1.1 Степенные ряды. Радиус сходимости

Наиболее простыми будут ряды, сходящиеся не только абсолютно, но и равномерно. К таким рядам относятся и степенные, чем и обусловлено то особо важное значение, которое они имеют в самых различных областях математики и ее приложениях.

Определение. Степенным рядом (точнее, целым степенным) называется бесконечный ряд вида

(1.1)

где сk и z0 - заданные комплексные числа, не зависящие от z. Число z0 для краткости называют центром ряда. В частности, может быть z0 = 0.

Выясним прежде всего область сходимости степенного ряда, для чего докажем следующую теорему.

Первая теорема Абеля (1826).

Если степенной ряд

сходится в некоторой точке z=z1, то он сходится, и притом абсолютно и равномерно, во всяком круге с центром z0 и радиусом < | z - z0|, т.е. радиусом, меньшим, чем расстояние от z1 до z0 (рис. 1).

Переходя к доказательству теоремы, предположим, что z - произвольная точка круга | z - z0| < р < | z1 - z0|, и представим n-й член ряда (1.1) в виде

Из сходимости ряда в точке z1, которая имеет место по условию теоремы, вытекает, что

| cn(z1 - z0)n | M

для всех n, где М - некоторое положительное число. Кроме того, в силу нашего предположения

Следовательно, для всех n

откуда и вытекает по признаку Вейерштрасса абсолютная и равномерная сходимость ряда внутри круга | z - z0 | р < | z1 - z0 |, так как члены рассматриваемого ряда по модулю меньше членов убывающей геометрической прогрессии, составленной из положительных чисел.

В частности, ряд сходится абсолютно (но, вообще говоря, не равномерно) во всех точках круга | z - z0 | < | z1 - z0 |. Отсюда вытекает, что если степенной ряд расходится при некотором значений z = z1 то он расходится и при всяком значении z, для которого

| z - z0 | > | z1 - z0 |,

Теорема, сформулированная выдающимся норвежским математиком Нильсом Генриком Абелем (1802-1829), играет в теории степенных рядов исключительно важную роль, и, в частности, из этой теоремы следует, что степенной ряд сходится в некотором круге, радиус которого будем обозначать через R, причем ряд сходится

абсолютно при

| z - z0 | < R,

расходится при

| z - z0 | > R,

и равномерно сходится в любом круге

| z - z0 | р < R

На самом же круге | z - z0 | = R ряд может быть сходящимся или расходящимся, и установление этого факта требует дополнительных исследований, иногда очень сложных.

Радиус этого круга R называется радиусом сходимости степенного ряда, а сам круг - кругом его сходимости. Для определения радиуса сходимости R служит формула

(1.2)

где lim обозначает верхний предел.

Эта формула была получена Огюстом Луи Коши в 1821 г. и со всей строгостью доказана в 1893 г. Жаком Адамаром (1865-1963). Она называется формулой Коши - Адамара.

Радиус сходимости можно также определять по формуле, вытекающей из признака сходимости рядов Даламбера;

(1.3)

если только указанный предел существует.

В частности, R может равняться нулю (тогда сумма ряда сводится к его первому члену c0) или бесконечности (тогда ряд сходится во всей комплексной плоскости z).

На основании теорем о сумме ряда и доказанной равномерной сходимости степенного ряда внутри его круга сходимости вытекают весьма важные свойства степенных рядов, которые мы сформулируем в виде следующих теорем.

Теорема 1. Сумма степенного ряда есть непрерывная функция от z внутри круга сходимости ряда.

Этот результат дополняется второй теоремой Абеля (1826): если степенной ряд сходится в точке z окружности | z - z0 | = R, то его сумма s(z) есть функция, непрерывная в точке z1 самой окружности вдоль радиуса, идущего из центра z0 в точку z1.

А. Прингсхейм доказал, что при условиях этой теоремы s(z) непрерывна в точке z1 вдоль любой линии, которая не касается окружности в точке z1.

Теорема 2. Степенной ряд внутри круга его сходимости можно почленно интегрировать, и сумма полученного ряда будет представлять собой интеграл от суммы данного ряда:

(1.4)

Теорема 3. Степенной ряд внутри круга его сходимости можно почленно дифференцировать, и его сумма будет представлять собой производную от суммы данного степенного ряда:

(1.5)

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

Пусть z - некоторая точка внутри круга сходимости и R - число, удовлетворяющее неравенству | z - z0 | < R1 < R. Так как ряд

сходится абсолютно, то существует такое положительное число М, что

при всех значениях n.

Тогда для модуля общего члена ряда, полученного дифференцированием, имеем:

т.е. модули членов ряда (1.5) меньше соответствующих членов сходящегося по признаку Даламбера ряда. Следовательно, ряд (1.5) сходится абсолютно во всех точках внутри круга сходимости исходного степенного ряда

Если | z - z0 | > R, то cn(z - z0)n, а благодаря этому и ncn(z - z0)n-1 не стремится к нулю и ряд расходится.

Таким образом, ряд (1.5) и ряд

имеют один и тот же круг сходимости.

Следствие 2. Ряд

,

полученный почленным интегрированием степенного ряда

имеет тот же радиус сходимости R, что и исходный ряд.

Действительно, если бы это было не так, то, дифференцируя почленно ряд

,

мы бы получили исходный ряд

с радиусом сходимости R1 R, что противоречит теореме 3.

Следует, однако, отметить, что из факта равенства радиусов сходимости данного степенного ряда и рядов, полученных почленным дифференцированием или интегрированием, нельзя сделать никаких выводов относительно характера сходимости этих рядов и на самой границе области сходимости, т.е. на самой окружности | z - z0 | = R.

Так, например, ряд

расходится во всех точках границы | z | = 1, тогда как после интегрирования получается ряд

сходящийся при z = - 1. Действительно, при z = - 1 имеем:

Аналогично ряд

радиус сходимости которого R= 1, абсолютно сходится во всех точках границы области сходимости | z | = 1, так как при | z |= 1

а ряд справа, как известно, сходящийся.

Продифференцировав же этот ряд, получим ряд

который на окружности | z | = 1 является расходящимся, по крайней мере в точке z = 1, как гармонический ряд

1 + 1 / 2 + 1 / 3 + 1 / 4 + …

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

Следствие 2. Степенной ряд

в круге его сходимости | z - z0 | < R можно дифференцировать (и интегрировать) произвольное число раз. В результате получим новые степенные ряды, которые будут иметь тот же самый радиус сходимости R, суммы которых будут равны последовательным производным (или интегралам от) суммы ряда s (z).

2. Ряды Лорана. Полюса и особые точки

Рассмотрим два ряда:

(2.1)

(2.2)

Область сходимости первого ряда (если она существует) определяется неравенством | z - a | < r. Если существует область сходимости второго ряда, то она определяется неравенством |z - a | < R. Тогда при условии r < R для ряда

полученного сложением рядов (2.1) и (2.2), областью сходимости служит кольцо r < | z - a| < R, ограниченное концентрическими окружностями с центром в точке а и радиусами r и R (рис. 2).

Пусть (z) - однозначная и аналитическая функция в кольце r < | z - a| < R. Эта функция в указанном кольце может быть представлена в виде суммы ряда:

(z)=

Ряд в правой части равенства называется рядом Лорана функции (z). Коэффициенты этого ряда можно вычислить по формуле:

Ряд (2.1) называется главной частью ряда Лорана, а ряд (2.2) - правильной частью ряда Лорана.

Если ряд Лорана содержит главную часть, то а называется изолированной особой точкой. Коэффициент А-1 называется вычетом функции (г) относительно изолированной особой точки z = a.

Особая точка называется устранимой, если функция (г) - аналитическая в окрестности z = а и ограничена по модулю в этой окрестности, т.е. существует конечный предел

.

Особая точка называется полюсом функции (г), если (г) - аналитическая функция вблизи z = а и стремится к бесконечности при z а.

Особая точка z = a называется существенно особой, если при z, близких к а, модуль | (z) | не остается ограниченным, но функция не стремится к при z а, предел не существует.

Изолированная особая точка является:

устранимой, если главная часть разложения в ряд Лорана отсутствует. Например, для функции точка z = 0 служит устранимой особой точкой, так как

полюсом n - го порядка, если главная часть содержит конечное число членов, т.е. имеет вид

Например, для функции точка z = 0 есть полюс первого порядка, так как

существенно особой, если главная часть содержит бесконечное число членов. Например, функция в точке z = 0 имеет существенно особую точку, так как

Между нулем и полюсом функции существует следующая связь. Если z = а - нуль кратности k функции (z), то z = а - полюс того же порядка функции 1/(z); обратно, если z=b - полюс порядка k функции (z), то z = b - нулъ той же кратности функции 1/(z).

Следует заметить, что если то z = а - полюс k-го порядка функции (z).

3. Интегрирование дифференциальных уравнений при помощи степенных рядов. Задача Коши

Рассмотрим задачу Коши для уравнения -го порядка, разрешенного относительно старшей производной

y()=(х, у, у',…, y( -1)); (3.1)

; j = 0, 1, 2,…, - 1. (3.2)

Будем искать формальное решение задачи (3.1) - (3.2) в виде степенного ряда

, (3.3)

так что в каждом конкретном случае необходимо дополнительно исследовать, может ли данная задача Коши быть решена при помощи ряда (3.3).

Обозначим k-ю степень ряда (3.3) соответственно

, k = 1, 2, 3,… (3.4)

и выведем рекуррентную формулу для вычисления введенных коэффициентов

Так как для произвольного k=l+m имеет место тождество,

,

то воспользовавшись формулой Коши для умножения степенных рядов

аn=b0 cn +b1cn-1+b2 cn-2+ … +bn-1 c1+bn c0.

непосредственно получаем искомую рекуррентную формулу:

(3.5)

где l= 1, 2, 3,…; m= 1, 2, 3,…; n = 0, 1, 2, 3,…

В частности, при k = 1 ряд (1.4) тождественно совпадает с рядом (3.3), так что

; п =0.1, 2,…, (3.6)

и тогда при помощи формулы (3.5) легко определить коэффициенты а(k)n для произвольной целой степени ряда yk через коэффициенты исходного ряда (3.3).

Для удобства выкладок представим производные у', у»,… в виде таких рядов

(3.7)

где введены обозначения

(3.8)

В таком случае и все степени от производных у', у»,… легко выразить рядами

(3.9)

коэффициенты которых

определим при помощи формулы (3.5), если в этой формуле an заменим соответственно на

Если мы теперь подставим ряды (3.3), (3.4), (3.7), (3.9) в исходное уравнение (1.1) и приравняем коэффициенты при одинаковых степенях (x - x0) то после соответствующих упрощений, получим рекуррентную формулу вида:

(3.10)

где функция F полностью определяется заданной функцией (х, у, у',…, y(v-1)), а первые v коэффициентов, согласно начальным условиям (3.2), будут такими:

(3.11)

В том случае, когда существует предел

радиус сходимости ряда (3.3) можно определить численно, если вычислить достаточное количество членов последовательности

(3.12)

до такого значения n включительно, начиная с которого будет иметь место равенство

(3.13)

с необходимой для данной задачи точностью.

В отдельных частных случаях радиус сходимости ряда (3.3) можно найти, исходя из самой рекуррентной формулы (3.10).

Рассматриваемый метод позволяет также построить аналитическое продолжение ряда (3.3) и выявить особые точки найденного решения. Для этого в любой точке х1, где [x1-x0] < R, вычисляем при помощи ряда (3.3) новые начальные значения

(3.14)

и, подставив их в ту же самую рекуррентную формулу (3.10), находим коэффициенты а*n нового ряда

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

Особые точки решения находим как точки пересечения двух или трех окружностей сходимости соответствующих аналитических продолжений. Если найденная особая точка есть полюс, то его легко выделить, перестроив соответствующим образом ряд (3.13).

Все полученные результаты имеют место также и в комплексной области.

Для пояснения методики вычислений рассмотрим пример.

Пример. Решим с семью десятичными знаками на сегменте [-1; +1] задачу Коши для нелинейного уравнения третьего порядка:

5y'''=2y'+y3-(x); (х)=sh(x) (1/x). (3.16)

при следующих начальных условиях:

x0=0; y(0)=1; y' (0)=1; y'' (0)=1/2. (3.17)

Решение. Подставив в исходное уравнение (3.16) ряды (3.13), (3.14), (3.17) при x0 = 0, k = 3, в результате сравнения коэффициентов при хn имеем:

(3.18)

n есть коэффициенты ряда Маклорена для заданной функции

в данном случае

Заменив теперь по формуле (3.8)

и учтя, что согласно начальным условиям (3.17)

a0=1; a1=1; a2=1/4,

находим из (3.18) рекуррентную формулу (3.10) для уравнения (3.16);

(3.19)

Коэффициенты a*n вычисляем по формуле (1.8), а коэффициенты аn(3) - по формуле (1.5), в которой надо вначале положить l=m= 1, а затем l= 1, т = 2, в результате чего получим

Все вычисления (с одним запасным знаком) приведены в табл. 1, и окончательным решением будет ряд

Согласно (3.13), радиус сходимости полученного ряда

так что при п = 15 заданная точность для |x|1 будет выполнена.

Методика вычислений по формулам (3.20) - (3.20') очень проста.

По известным а0, а1, а2 вычисляем а*11 и а*22, а также а0(2), а1(2), а2(2), после чего, перемножив столбец аn на столбец аn(2), находим соответствующий коэффициент аn(3).В результате получаем все необходимые данные для вычисления по рекуррентной формуле (1.19) а3 и а4, что позволяет продолжить дальше этот процесс и определить любое количество коэффициентов аn искомого ряда (3.21).

Для удобства ориентировки каждый из сомножителей, который используется в данный момент, отмечаем какими-либо марками. Столбец аn(2) вычисляем, умножив столбец аn сам на себя. Например,

an(2) = 1.00000000 * 0,25000000 + (1.00000000)2 + 0,25000000 *1,00000000 = 1,50000000.

an(3) = 1,00000000 * 1,50000000 + 1,00000000 * 2,00000000 + 0,25000000 * 1,00000000 = =3,75000000.

Ход дальнейших вычислений ясен из табл. 1, в которой все величины, необходимые для определения очередного аn+3, размещены в одной строке.

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

a12=5,7341*10-6; a13=1,8765*10-6;… по которым в табл. 1 найдены соответствующие аn/an+1

4. Уравнение Риккати

Уравнение Риккати (1676-1754) - одно из простейших нелинейных дифференциальных уравнений первого порядка.

4.1 Общее дифференциальное уравнение Риккати

y'=P(x) y2+ Q(x) y+R(x) (4.1)

за исключением некоторых частных случаев, не сводится к квадратурам и не может быть выражено в конечном виде через элементарные функции (Лиувилль).

Для четырех частных решений этого уравнения y1, y2, y3, y4 двойное отношение постоянно:

Поэтому, если известны три частных решения y1, y2, y3, то получаем общее решение

с произвольной постоянной С. Если известны лишь два решения y1 и y2, то будем иметь:

(4.3)

Располагая только одним известным частным решением y1, при помощи подстановки

y=y1+1/v (4.4)

уравнение Риккати можно привести к линейному уравнению:

v'+ [2P(x) y1+ Q(x)] v + P(x)=0 (4.5)

Подстановкой

y= - u'/[P(x) u] (4.6)

уравнение (4.1) можно свести к однородному линейному уравнению второго порядка:

(4.7)

Если положить y=1/z, (4.8)

то для z получим снова уравнение Риккати

z'= - [P(x) z2+ Q(x) z+R(x)] (4.9)

нули которого будут являться полюсами исходного уравнения (4.1) и наоборот.

Заменой переменных

(4.10)

общее уравнение Риккати (4.1) можно привести к канонической форме:

(4.11)

, (4.12)

а функция (х) определяется из условия: P'+2P2+PQ=0

т.е. (4.13)

5. Исследование решений в окрестности полюса и существенно особой точки

лоран дифференциальный рикатти уравнение

При решении дифференциальных уравнений степенными рядами каждый полученный ряд является только элементом искомого решения, определенным в его области сходимости. Область сходимости степенного ряда есть круг, на границе которого должна находиться по крайней мере одна особая точка решения исходного дифференциального уравнения. Поэтому для того, чтобы распространить полученные результаты на всю комплексную область, нам прежде всего надо найти 'методику исследования поведения решений в окрестности полюса и существенно особой точки, которые на практике встречаются наиболее часто. С этой целью обратимся к характерному примеру, рассматривая при этом искомую функцию = и +iv и аргумент z =x+iy как комплексные величины.

Пример. Определим все полюсы решения задачи Коши для уравнения Риккати

(5.1)

Решение. Представим исходное уравнение в виде:

(5.2)

Тогда для определения коэффициентов его решения

(5.3)

рекуррентная формула будет иметь следующий вид:

или

(5.4)

Значение коэффициентов n для заданной функции

находим, представив ее в виде ряда с тем же центром z0= 0.

При n= 0 мы должны положить

a-1=0; a-1(2)=a-2(2)=0; a*0=0 (так как a*n=nan); 0 = - 1,

и тогда, согласно формулам (5.4), находим

a*1=0=-1; a1=a*1

При n=1 имеем:

и, следовательно,

Вычисление остальных коэффициентов a*n и an до (n = 12 включительно) ясно из табл. 2, в которой приведены все необходимые данные. При этом вначале по известным уже аn вычисляем an(2) =[anan] и

a*n+1, после чего, разделив найденное a*n+1 на его номер, определяем an+1

Проанализировав результаты, видим, что все нечетные коэффициенты

an=a2v+1= - 1; v=0,1,2,…

а все четные с ростом n стремятся к +1. Поэтому из решения (5.3) целесообразно вычесть ряд

1/(1+ z)=1-z + z 2 - z3 + …

в результате чего получим

(5.5)

где коэффициенты bп определяются по формуле

bn=an - (- 1)n

и их значения приведены в последней колонке табл. 2

Так как

b2v+1=0; b2v=(- 1)v/2v+1; v=0,1,2,… то, просуммировав каждый из полученных рядов (5.5), находим решение уравнения (5.1) в замкнутом виде:

(5.6)

Подставив это значение в (5.1), после несложных преобразований убеждаемся, что оно удовлетворяет и самому дифференциальному уравнению, и начальному условию (0)=3/2.

Таким образом, искомое решение имеет три полюса

z= - 1; z=2

благодаря чему радиус сходимости ряда (5.3) есть единица.

Формула (5.6), которую мы получили, исходя из ряда (5.3) полностью решает поставленную задачу. Однако просуммировать в явном виде полученный ряд удается лишь в простейших случаях, редко встречающихся на практике. Поэтому решим поставленную задачу, не прибегая к процессу суммирования ряда (5.3), а воспользовавшись его аналитическим продолжением и, кроме того, при помощи перехода к инверсной функции, что можно выполнить в случае любого получаемого ряда, суммируемого в явном виде или не суммируемого.

Ряд (5.3) является только элементом решения уравнения (5.1), определенным в круге с центром z0= 0 и проходящим через ближайшую к z0 особую точку z= - 1. Но этот элемент мы можем аналитически продолжить на полную область его определения, которой чаще всего является вся комплексная область, за исключением сколь угодно малых окрестностей изолированных особых точек. (Могут встретиться и такие случаи, когда окружность сходимости исходного элемента состоит из всюду плотного множества особых точек, так что исходный ряд за нее нельзя аналитически продолжить, но мы такие исключительные случаи рассматривать не будем.)

Для того чтобы аналитически продолжить исходный элемент (5.3), необходимо только вычислить для нового центра z0 значение функции 0=(z0) и в случае необходимости перестроить рекуррентную формулу (5.4). В качестве нового центра z0 можно, вообще говоря, взять любую точку комплексной плоскости, лежащую внутри круга сходимости исходного ряда (5.3). Однако не любой выбранный центр z0 будет приводить к расширению круга сходимости исходного ряда, так что мы должны предварительно испытать ряд проб и найти такую последовательность центров z0(I), z0(II), z0(III), которая ведет к поставленной цели.

В качестве первой пробы возьмём z0=z0(1)=+

Тогда, выполнив в уравнении (5.2) замену независимой переменной

z=t+z0(1)=t+;

(5.7)

приходим к уравнению

2,

или после очевидных преобразований

, (5.8)

где

Следовательно, коэффициенты an=an* ряда I

(5.9)

будут определяться рекуррентной формулой

(5.10)

В табл. 3 по формулам (5.10) вычислены с семью десятичными знаками 17 коэффициентов аn= аn* ряда I. Значение a*0= 1,1111111…, без знания которого нельзя начать рекуррентный процесс (5.10), мы определили при помощи исходного ряда (5.3)

положив в нем z=z0(I)=1/2. При этом для обеспечения требуемой точности выполненное в табл. 2 вычисление коэффициентов аn надо продолжить до n = 24. Для контроля найденных коэффициентов an* ряда I определяем (t) при t= - 0,5, т.е. при z=t + 0,5 =0, и в результате получаем

(t) t=-0.5=(z) z=0= 1,5000000,

что в пределах точности вычислений полностью совпадает с исходным начальным значением (5.1)

(z) z=0=(z0)=3/2

Вычислив с помощью ряда I по тем же коэффициентам an* значение (t) при t= + 0,5, т.е. при

Z=t + 0,5 =1, получаем новое начальное значение

(z) z=z0=1=(z0(II))= 0,8333333,

определяющее собой ряд II с центром z0=z0(II)= + 1:

(5.11)

который является аналитическим продолжением ряда I (рис. 3). Рекуррентная формула для определения коэффициентов an =an** ряда II будет иметь следующий вид:

(5.12)

Действительно, произведя в (5.1) подстановку

(5.12)

Первые 16 коэффициентов an = an** ряда II вычислены в табл. 4, а для контроля этих вычислений умножим найденные аn** на n для = - 0.5, т.е. для z = + 1 = 0.5, стоящие в тех же строках, и, просуммировав результаты, получаем

() =-0.5=(z) z=0.5= 1,1111111,

Что полностью совпадает с начальным значением (z0(I))=a0*=1,1111111 ряда I.

Вычислив аналогичным путем

() =0.5=(z) z=1.5= 0,6352941.

мы можем использовать этот результат для построения ряда III. Однако сходимость ряда II значительно лучше сходимости ряда I, в чем легко убедиться, проанализировав быстроту убывания коэффициентов an* и an**, а также сравнив результаты, полученные в табл. 3 для t = 1 и = 1 с соответствующими точными значениями. Поэтому мы можем с помощью ряда II вычислить (при п = 15 с пятью десятичными знаками) начальное значение

() =1=(z) z=2 =0,50000,

соответствующее центру z0=z0(III) = + 2, и построить затем ряд III, сходящийся еще быстрее.

Продолжая этот процесс, мы будем получать ряды, сходящиеся все быстрее и быстрее, так что, определив по формуле (3.12) § 3 радиусы сходимости для двух из них, найдем затем полюсы z=, как точки пересечения окружностей сходимостей этих рядов. Но это процесс довольно трудоемкий, а потому более целесообразно перейти к инверсной функции.

(5.14)

нули которой будут являться полюсами исследуемой функции (и наоборот).

Переход к инверсной функции проще всего осуществить при помощи подстановки

(5.15)

Тогда из (5.1) получаем уравнение

или, умножив обе части на (1 + z) 2 и поменяв знаки,

(5.16)

Решение этого уравнения ищем в виде ряда

(5.17)

и для коэффициентов n получаем рекуррентную формулу

(5.18)

0=1/a0=2/3; 0=0; 1=2; 2=4; 3=2; n=0 при n4Нули функции находим, определяя корни уравнения по формуле Ньютона

(5.19) При этом производную (z) находим, пользуясь коэффициентами *n которые были уже вычислены в процессе определения коэффициентов n по формуле (5.18).

В табл. 5 вычислены первые 24 коэффициента n по которым затем, исходя из нулевого приближения z0(0) =-0,8, после двух уточнений по формуле Ньютона находим один из нулей z2(0)= - 1,00001 инверсной функции (z). Выполнив еще один шаг, получаем

z(0)=z3(0)= - 1,000000.

Следовательно, одним из полюсов исследуемой функции =1/(z) будет точка z= - 1,000000.

Выделив этот полюс из исходного ряда (5.3), аналогичным путем определяем два других полюса, на чем и заканчиваем решение поставленной задачи.

Коэффициенты n для инверсной функции можно также непосредственно найти по коэффициентам исходного ряда (5.3), так как, согласно (5.14), имеем

(5.20)

Тогда, представив единицу в следующем виде:

при n 2

И воспользовавшись формулами:

получаем:

n= - 0(0an+1an-1+ … +n-1a1); 0=1/a0=2/3. (5.21)

где an - коэффициенты исходного ряда (5.3).

Приложение А

Исследование решений дифференциальных уравнений в окрестности полюсов и особых точек

Программа

ФОРМА - ЗАСТАВКА

Private Sub Command1_Click()

End

End Sub

Private Sub Command2_Click()

Form1. Visible = False

Form4. Visible = True

End Sub

Private Sub Ex_Click()

End

End Sub

Private Sub Form_Load()

Form1. Visible = True

End Sub

Private Sub prog_Click()

Form1. Visible = False

Form2. Visible = True

End Sub

ФОРМА - ВВОД ЗНАЧЕНИЙ

Private Sub Command1_Click()

If Text1 = «0» Or Text1 = «» Or Text2 = «» Or Text3 = «» Or Text4 = «» Or Text5 = «» Or Text6 = «» Then

Beep

Label1. Caption = «Введите все коэффициенты, первый не должен равняться 0»

ElseIf Text1 = «0» Or Text1 = «» Or Text2 = «» Or Text3 = «» Or Text4 = «» Or Text5 = «» Or Text6 = «» Then

Beep

Label1. Caption = «Введите все коэффициенты, первый не должен равняться 0»

Else

k1 = Text1

k2 = Text2

k3 = Text3

k4 = Text4

k5 = Text5

w0 = Text6

z0 = 0

Label1. Caption = «»

Form4. Visible = False

Form3. Visible = True

End If

End Sub

ФОРМА - ИНФОРМАЦИЯ

Dim num As Integer

Dim num2 As Integer

Dim num1 As Integer

Dim ds1 As Double

Dim ds2 As Double

Private Sub Command1_Click()

Form3. Visible = False

Form1. Visible = True

End Sub

Private Sub Command4_Click()

Form3. Visible = False

Form6. Visible = True

End Sub

Private Sub Command5_Click()

Form3. Visible = False

Form4. Visible = True

End Sub

Private Sub Form_Load()

Form1. Visible = True

Form3. Visible = False

If k1 = 0 Then k1 = 1

Grid1. ColAlignment(0) = 3

Grid1. ColAlignment(4) = 3

Grid1. ColAlignment(1) = 3

Grid1. ColAlignment(2) = 3

Grid1. ColAlignment(3) = 3

Grid1. ColWidth(0) = 500

Grid1. ColWidth(4) = 1300

Grid1. ColWidth(2) = 1300

Grid1. ColWidth(3) = 1300

Grid1. ColWidth(1) = 1300

a(-2) = 0

a(-1) = 0

a(0) = w0

ny(0) = -1

a2 (-2) = 0

a2 (-1) = 0

at(0) = 0

For i% = 0 To 25

If i > 0 And i / 2 = Int (i / 2) Then ny(i) = 1 Else ny(i) = -1

For j% = 0 To i

a2 (i) = a2 (i) + a(j) * a (i - j)

Next j

at (i + 1) = (k5 * a (i - 1) + (k4 * a2 (i - 1) + k3 * a2 (i - 2)) - k2 * at(i) + ny(i)) / k1

a (i + 1) = at (i + 1) / (i + 1)

If i / 2 = Int (i / 2) Then wan% = 1 Else wan = -1

b(i) = a(i) - wan

Next i

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = a (i - 1)

Grid1. TextMatrix (i, 2) = a2 (i - 1)

Grid1. TextMatrix (i, 3) = at (i - 1)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub HS1_Change()

num = HS1. Value

If num1 > num Then

For i = num + 1 To num1 + 1

Grid1. TextMatrix (i, 0) = «»

Grid1. TextMatrix (i, 1) = «»

Grid1. TextMatrix (i, 2) = «»

Grid1. TextMatrix (i, 3) = «»

Grid1. TextMatrix (i, 4) = «»

Next i

End If

Label1. Caption = num

Label2. Caption = «Нажмите <обновить>»

num1 = num

End Sub

Private Sub Command3_Click()

Label2. Caption = «»

a(0) = w0

For i% = 0 To 50

If i > 0 And i / 2 = Int (i / 2) Then ny(i) = 1 Else ny(i) = -1

a2 (i) = 0

For j% = 0 To i

a2 (i) = a2 (i) + a(j) * a (i - j)

Next j

at (i + 1) = (k5 * a (i - 1) + (k4 * a2 (i - 1) + k3 * a2 (i - 2)) - k2 * at(i) + ny(i)) / k1

a (i + 1) = at (i + 1) / (i + 1)

If i / 2 = Int (i / 2) Then wan% = 1 Else wan = -1

b(i) = a(i) - wan

Next i

For i = 0 To 25

For j = 1 To 10

ds1 = Format (a(i) / a (i + j), «0.000»)

ds2 = Format (a(i + j) / a (i + 2 * j), «0.000»)

If ds1 < 0 Then ds1 = ds1 * (-1)

If ds2 < 0 Then ds2 = ds2 * (-1)

If ds1 = ds2 Then Label7. Caption = ds1

Next j

Next i

radius1 = Label7. Caption

If num2 = 0 Then num2 = 1

Select Case num2

Case 1

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a(i - 1), «0.0»)

Grid1. TextMatrix (i, 2) = Format (a2 (i - 1), «0.0»)

Grid1. TextMatrix (i, 3) = Format (at(i - 1), «0.0»)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

Case 2

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a(i - 1), «0.00»)

Grid1. TextMatrix (i, 2) = Format (a2 (i - 1), «0.00»)

Grid1. TextMatrix (i, 3) = Format (at(i - 1), «0.00»)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

Case 3

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a(i - 1), «0.000»)

Grid1. TextMatrix (i, 2) = Format (a2 (i - 1), «0.000»)

Grid1. TextMatrix (i, 3) = Format (at(i - 1), «0.000»)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

Case 4

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a(i - 1), «0.0000»)

Grid1. TextMatrix (i, 2) = Format (a2 (i - 1), «0.0000»)

Grid1. TextMatrix (i, 3) = Format (at(i - 1), «0.0000»)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

Case 5

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a(i - 1), «0.00000»)

Grid1. TextMatrix (i, 2) = Format (a2 (i - 1), «0.00000»)

Grid1. TextMatrix (i, 3) = Format (at(i - 1), «0.00000»)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

Case 6

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a(i - 1), «0.000000»)

Grid1. TextMatrix (i, 2) = Format (a2 (i - 1), «0.000000»)

Grid1. TextMatrix (i, 3) = Format (at(i - 1), «0.000000»)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

Case 7

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a(i - 1), «0.0000000»)

Grid1. TextMatrix (i, 2) = Format (a2 (i - 1), «0.0000000»)

Grid1. TextMatrix (i, 3) = Format (at(i - 1), «0.0000000»)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

Case 8

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a(i - 1), «0.00000000»)

Grid1. TextMatrix (i, 2) = Format (a2 (i - 1), «0.00000000»)

Grid1. TextMatrix (i, 3) = Format (at(i - 1), «0.00000000»)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

Case 9

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a(i - 1), «0.000000000»)

Grid1. TextMatrix (i, 2) = Format (a2 (i - 1), «0.000000000»)

Grid1. TextMatrix (i, 3) = Format (at(i - 1), «0.000000000»)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

Case 10

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a(i - 1), «0.0000000000»)

Grid1. TextMatrix (i, 2) = Format (a2 (i - 1), «0.0000000000»)

Grid1. TextMatrix (i, 3) = Format (at(i - 1), «0.0000000000»)

Grid1. TextMatrix (i, 4) = ny (i - 1)

Next i

End Select

End Sub

Private Sub HS2_Change()

num2 = HS2. Value

Label4. Caption = num2

Label2. Caption = «Нажмите <обновить>»

End Sub

ФОРМА - ИНФОРМАЦИЯ О ПРОГРАММЕ

Private Sub Command1_Click()

Form1. Visible = True

Form2. Visible = False

End Sub

Private Sub Form_Load()

Label1. Caption = «Данный программный продукт составил студент КнАГТУ группы 6ПМ-1 Давыдов Андрей Анатольевич. Программа позволяет решить дифференциальное уравнение, а также исследовать полученные полюса и особенно существенные точки»

End Sub

ФОРМА - ВЫБОР МЕТОДА

Private Sub Command1_Click()

If Option1. Value = True Then

Form7. Visible = True

Form6. Visible = False

ElseIf Option1. Value = True Then

Form7. Visible = True

Form6. Visible = False

Else

End If

If Option2. Value = True And Text1 <> «» Then

Form5. Visible = True

z1 = Text1

Label2 = «»

Option1. Value = True

Label1 = «»

Label3 = «»

Label4 = «»

Form5. Label6. Caption = z1

Form6. Visible = False

ElseIf Option2. Value = True And Text1 = «» Then

Beep

Label2 = «Необходимо ввести z1»

Else

End If

End Sub

Private Sub Option1_Click()

Label1 = «»

Label2 = «»

Label3 = «»

Label4 = «»

End Sub

Private Sub Option2_Click()

Label1 = «Введите значение z1= (<z1<)»

Label3 = z0 - radius1

Label4 = z0 + radius1

End Sub

ФОРМА - ИССЛЕДОВАНИЕ ПОЛЮСОВ

Dim num As Integer

Dim num2 As Integer

Dim num15 As Integer

Dim sum As Double

Dim ds1 As Double

Dim ds2 As Double

Dim ds3 As Double

Private Sub Command3_Click()

End

End Sub

Private Sub Command4_Click()

If Text1 = «» Then

Beep

Label9 = «Необходимо ввести радиус»

ElseIf Text1 = «» Then

Beep

Label9 = «Необходимо ввести радиус»

Else

radius2 = Text1

Label9 = «»

Form9. Label3 = z1 - radius2

Form9. Label4 = z1 + radius2

Form5. Visible = False

Form9. Visible = True

End If

End Sub

Private Sub Command5_Click()

Form5. Visible = False

Form4. Visible = True

End Sub

Private Sub Form_Load()

Grid1. ColAlignment(0) = 3

Grid1. ColAlignment(4) = 3

Grid1. ColAlignment(1) = 3

Grid1. ColAlignment(2) = 3

Grid1. ColAlignment(3) = 3

Grid1. ColWidth(0) = 300

Grid1. ColWidth(4) = 1600

Grid1. ColWidth(2) = 1300

Grid1. ColWidth(3) = 1300

Grid1. ColWidth(1) = 1300

For i% = 0 To 24

z1n(i) = 1

For j% = 0 To i

If j = 0 Then z1n(i) = 1 Else z1n(i) = z1n(i) * z1

Next j

sum = sum + z1n(i) * a(i)

Next i

a1 (-2) = 0

a1 (-1) = 0

a1 (0) = sum

ny1 (0) = -2 + 1 / (1 + z1)

ny1 (1) = - (1 / ((1 + z1) * (1 + z1)))

a21 (-2) = 0

a21 (-1) = 0

at1 (0) = 0

For i = 0 To 25

If i > 1 Then ny1 (i) = 0

If i > 1 Then ny1 (i) = - (1 / (1 + z1)) * ny1 (i - 1)

a21 (i) = 0

For j = 0 To i

a21 (i) = a21 (i) + a1 (j) * a1 (i - j)

Next j

at1 (i + 1) = (k5 * a1 (i - 1) + k5 * z1 * a1 (i) + k3 * a21 (i - 2) + (2 * k3 * z1 + k4) * a21 (i - 1) + (k4 * z1 + k3 * z1 * z1) * a21 (i) - k1 * at1 (i) + ny1 (i)) / (k1 + k1 * z1)

a1 (i + 1) = at1 (i + 1) / (i + 1)

z1n(i) = 1

Next i

For i = 1 To num15 + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.0»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.0»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.0»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.0»)

Next i

End Sub

Private Sub Command1_Click()

Form5. Visible = False

Form1. Visible = True

End Sub

Private Sub HS1_Change()

num = HS1. Value

If num15 > num Then

For i = num + 1 To num15 + 1

Grid1. TextMatrix (i, 0) = «»

Grid1. TextMatrix (i, 1) = «»

Grid1. TextMatrix (i, 2) = «»

Grid1. TextMatrix (i, 3) = «»

Grid1. TextMatrix (i, 4) = «»

Next i

End If

Label1. Caption = num

Label3. Caption = «Нажмите <обновить>»

num15 = num

End Sub

Private Sub Command2_Click()

Label3. Caption = «»

sum = 0

For i% = 0 To 24

z1n(i) = 1

For j% = 0 To i

If j = 0 Then z1n(i) = 1 Else z1n(i) = z1n(i) * z1

Next j

sum = sum + z1n(i) * a(i)

Next i

a1 (0) = sum

ny1 (0) = -2 + 1 / (1 + z1)

ny1 (1) = - (1 / ((1 + z1) * (1 + z1)))

For i% = 0 To 50

If i > 1 Then ny1 (i) = 0

If i > 1 Then ny1 (i) = - (1 / (1 + z1)) * ny1 (i - 1)

a21 (i) = 0

For j% = 0 To i

a21 (i) = a21 (i) + a1 (j) * a1 (i - j)

Next j

at1 (i + 1) = (k5 * a1 (i - 1) + k5 * z1 * a1 (i) + k3 * a21 (i - 2) + (2 * k3 * z1 + k4) * a21 (i - 1) + (k4 * z1 + k3 * z1 * z1) * a21 (i) - k1 * at1 (i) + ny1 (i)) / (k1 + k1 * z1)

a1 (i + 1) = at1 (i + 1) / (i + 1)

z1n(i) = 1

For j = 0 To i

If j = 0 Then z1n(i) = 1 Else z1n(i) = z1n(i) * z1

Next j

Next i

Label6. Caption = z1

If num2 = 0 Then num2 = 1

Select Case num2

Case 1

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.0»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.0»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.0»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.0»)

Next i

Case 2

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.00»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.00»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.00»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.00»)

Next i

Case 3

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.000»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.000»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.000»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.000»)

Next i

Case 4

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.0000»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.0000»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.0000»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.0000»)

Next i

Case 5

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.00000»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.00000»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.00000»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.00000»)

Next i

Case 6

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.000000»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.000000»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.000000»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.000000»)

Next i

Case 7

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.0000000»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.0000000»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.0000000»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.0000000»)

Next i

Case 8

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.00000000»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.00000000»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.00000000»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.00000000»)

Next i

Case 9

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.000000000»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.000000000»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.000000000»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.000000000»)

Next i

Case 10

For i = 1 To num + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.0000000000»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.0000000000»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.0000000000»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.0000000000»)

Next i

End Select

End Sub

Private Sub HS2_Change()

num2 = HS2. Value

Label2. Caption = num2

Label3. Caption = «Нажмите <обновить>»

End Sub

ФОРМА - ВВОД ЗНАЧЕНИЯ z1

Private Sub Command1_Click()

If Text1 = «» Then

Beep

Label2. Caption = «Необходимо ввести значение z2»

ElseIf Text1 = «» Then

Beep

Label2. Caption = «Необходимо ввести значение z2»

Else

z2 = Text1

Label2 = «»

Form8. Label6 = z1

Form8. Label7 = z2

Form9. Visible = False

Form8. Visible = True

End If

End Sub

ФОРМА - ИССЛЕДОВАНИЕ ПОЛЮСОВ 2

Dim num As Integer

Dim num2 As Integer

Dim num15 As Integer

Dim sum As Double

Dim ds1 As Double

Dim ds2 As Double

Dim ds3 As Double

Private Sub Command1_Click()

Form8. Visible = False

Form1. Visible = True

End Sub

Private Sub Command3_Click()

End

End Sub

Private Sub Command4_Click()

If Text1 = «» Then

Label10 = «Необходимо ввести радиус»

Beep

ElseIf Text1 = «» Then

Label10 = «Необходимо ввести радиус»

Beep

Else

radius3 = Text1

Label10 = «»

x1 = (radius2 * radius2 - radius1 * radius1 - z1 * z1) / (-2 * z1)

If (radius1 * radius1 - x1 * x1) < 0 Then

Label10 = «Введеные радиусы не корректны»

ElseIf (radius1 * radius1 - x1 * x1) >= 0 Then

y1 = Sqr (radius1 * radius1 - x1 * x1)

x2 = (radius3 * radius3 - radius2 * radius2 - z2 * z2 + z1 * z1) / (2 * (z1 - z2))

If (radius2 * radius2 - (x2 + z1) * (x2 + z1)) < 0 Then

Label10 = «Введеные радиусы не корректны»

ElseIf (radius2 * radius2 - (x2 + z1) * (x2 + z1)) >= 0 Then

y2 = Sqr (radius2 * radius2 - (x2 + z1) * (x2 + z1))

If y2 < 0 Then

Form12. Label3 = «z2= i»

Form12. Label4 = «z3= + i»

ElseIf y2 < 0 Then

Form12. Label3 = «z2= i»

Form12. Label4 = «z3= + i»

Else

Form12. Label4 = «z3= i»

Form12. Label3 = «z2= + i»

End If

Form8. Visible = False

Form12. Visible = True

Form12. Label6 = Format (x1, «0.000»)

Form12. Label7 = Format (y1, «0.000»)

Form12. Label8 = Format (x2, «0.000»)

Form12. Label9 = Format (y2, «0.000»)

Form12. Label10 = Format (x2, «0.000»)

Form12. Label11 = Format (-1 * y2, «0.000»)

Else

End If

Else

End If

End If

End Sub

Private Sub Command5_Click()

Form8. Visible = False

Form5. Visible = True

End Sub

Private Sub Form_Load()

Grid1. ColAlignment(0) = 3

Grid1. ColAlignment(4) = 3

Grid1. ColAlignment(1) = 3

Grid1. ColAlignment(2) = 3

Grid1. ColAlignment(3) = 3

Grid1. ColWidth(0) = 300

Grid1. ColWidth(4) = 1600

Grid1. ColWidth(2) = 1300

Grid1. ColWidth(3) = 1300

Grid1. ColWidth(1) = 1300

Grid2. ColAlignment(0) = 3

Grid2. ColAlignment(4) = 3

Grid2. ColAlignment(1) = 3

Grid2. ColAlignment(2) = 3

Grid2. ColAlignment(3) = 3

Grid2. ColWidth(0) = 300

Grid2. ColWidth(4) = 1600

Grid2. ColWidth(2) = 1300

Grid2. ColWidth(3) = 1300

Grid2. ColWidth(1) = 1300

z2 = Form9. Text1

For i% = 0 To 24

z1n(i) = 1

For j% = 0 To i

If j = 0 Then z2n(i) = 1 Else z2n(i) = z2n(i) * (z2 - z1)

Next j

sum = sum + z2n(i) * a1 (i)

Next i

a12 (-2) = 0

a12 (-1) = 0

a12 (0) = sum

ny2 (0) = -2 + 1 / (1 + z2)

ny2 (1) = - (1 / ((1 + z2) * (1 + z2)))

a22 (-2) = 0

a22 (-1) = 0

at2 (0) = 0

For i = 0 To 25

If i > 1 Then ny2 (i) = - (1 / (1 + z2)) * ny2 (i - 1)

a22 (i) = 0

For j = 0 To i

a22 (i) = a22 (i) + a12 (j) * a12 (i - j)

Next j

at2 (i + 1) = (k5 * a12 (i - 1) + k5 * z2 * a12 (i) + k3 * a22 (i - 2) + (2 * k3 * z2 + k4) * a22 (i - 1) + (k4 * z2 + k3 * z2 * z2) * a22 (i) - k1 * at2 (i) + ny2 (i)) / (k1 + k1 * z2)

a12 (i + 1) = at2 (i + 1) / (i + 1)

z2n(i) = 1

Next i

For i = 1 To num15 + 1

Grid1. TextMatrix (i, 0) = i - 1

Grid1. TextMatrix (i, 1) = Format (a1 (i - 1), «0.0»)

Grid1. TextMatrix (i, 2) = Format (a21 (i - 1), «0.0»)

Grid1. TextMatrix (i, 3) = Format (at1 (i - 1), «0.0»)

Grid1. TextMatrix (i, 4) = Format (ny1 (i - 1), «0.0»)

Grid2. TextMatrix (i, 0) = i - 1

Grid2. TextMatrix (i, 1) = Format (a12 (i - 1), «0.0»)

Grid2. TextMatrix (i, 2) = Format (a22 (i - 1), «0.0»)

Grid2. TextMatrix (i, 3) = Format (at2 (i - 1), «0.0»)

Grid2. TextMatrix (i, 4) = Format (ny2 (i - 1), «0.0»)

Next i

End Sub

Private Sub HS1_Change()

num = HS1. Value

If num15 > num Then

For i = num + 1 To num15 + 1

Grid1. TextMatrix (i, 0) = «»

Grid1. TextMatrix (i, 1) = «»

Grid1. TextMatrix (i, 2) = «»

Grid1. TextMatrix (i, 3) = «»

Grid1. TextMatrix (i, 4) = «»

Grid2. TextMatrix (i, 0) = «»

Grid2. TextMatrix (i, 1) = «»

Grid2. TextMatrix (i, 2) = «»

Grid2. TextMatrix (i, 3) = «»

Grid2. TextMatrix (i, 4) = «»

End If

Заключение

В результате выполнения дипломной работы были решены дифференциальные уравнения и исследованы полученные решения в окрестности полюсов двумя способами. Разработана методика исследования решений в комплексной области и представления результата в виде действительной и мнимой частей без относительной затраты времени и огромного объема вычислений. Приблизительно, производительность программы по скорости вычислений превышает в десятки тысяч раз. Программа выдает желаемое количество полученных коэффициентов (от 1 до 25) с желаемой точностью (от 1 до 10 знаков после запятой). В результате значительной доработки данной дипломной работы можно устранить необходимость ввода радиусов сходимости полученных рядов, но по предварительным расчетам необходимо будет вычислять до 300 коэффициентов исследуемого ряда, что в некоторых случаях будет приводить к переполнению переменных в коде программы.

Список источников

Кудрявцев Л.Д. «Курс математического анализа» Т.1, М., ВШ., 1981 г. - 687 с.

Фильчаков П.Ф.» Численные и графические методы прикладной математики» Справочник, К., «Наукова думка», 1970 г. - 798 с.

Бронштейн И.Н., Семендяев К.А. Справочник по математике для инженеров и учащихся вузов. - 13-е изд., исправленное. - М.,:Наука, 1986 - 544 с.

Михаэль Райтингер, Геральд Муч. Visual Basic 6: полное руководство: пер. с нем. - К.: Издательская группа BHV, 2000. - 720 с.

Данилина Н.И., Дубровская Н.С. Численные методы. - М.: «Высшая школа», 1976 - 368 с.

Мышкис А.Д. Математика для ВТУЗов. Спец. Курсы. - М.:» Наука». 1971 - 632 с.

Данко П.Е., Попов А.Г. Теория функций комплексного переменного. - М.: «Высшая школа». 1986 - 415 с.

Фролов С.Н., Шостак Р.Я. Численные методы. - М.: «Высшая школа». 1972 - 472 с.

ref.by 2006—2019
contextus@mail.ru