49787

Визуализация численных методов. Решение обыкновенных дифференциальных уравнений

Курсовая

Информатика, кибернетика и программирование

Числовые методы позволяют построить интегральную кривую по точкам. В зависимости от того, сколько точек используется для расчета очередной точки интегральной кривой, все численные методы делятся на одношаговые и многошаговые. В нашем случае мы используем одношаговые численные методы.

Русский

2014-01-08

124 KB

3 чел.

Министерство РФ по связи и информатизации

ГОУ ВПО «Сибирский государственный университет

телекоммуникаций и информатики»

Уральский технический институт связи и информатики (филиал)

Кафедра физики, прикладной математики и информатики

КУРСОВАЯ РАБОТА

по информатике

ВАРИАНТ №14:

«Визуализация численных методов.

Решение обыкновенных дифференциальных уравнений».

Исполнитель:

студент гр. ОЕ-71

Паньшин А.А.

Руководитель:

Доцент Минина Е.Е

Екатеринбург

2008

Введение

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

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

Числовые методы позволяют построить интегральную кривую по точкам. В зависимости от того, сколько точек используется для расчета очередной точки интегральной кривой, все численные методы делятся на одношаговые и многошаговые. В нашем случае мы используем одношаговые численные методы.

Основные цели и задачи работы:

Цель моей работы- ознакомление, изучение основ системы программирования Microsoft  Visual  Basic и приобретение начальных навыков решение ДУ в Microsoft  Visual  Basic

1. Постановка задачи

Решить методами Эйлера и Эйлера модифицированного задачу Коши для дифференциального уравнения 1-го порядка 2*x*y*dx-(x+1)=0

на отрезке [0; 0.8] с шагом h=0.05 и начальным условием: Y(0) = 4. Общее решение: y=exp(2*x)*C/(x+1)^2

Ответ должен быть получен в виде таблицы результатов:

X

Y(1)

Y(2)

YT

X0

Y0(1)

Y0(2)

Y(X0)

X1

Y1(1)

Y1(2)

Y(X1)

Xk

Yk(1)

Yk(2)

Y(Xk)

Где: Y(1) - решение, полученное методом Эйлера, Y(2) – решение, полученное методом Эйлера модифицированного, YT – точное решение дифференциального уравнения.

Данные таблицы визуализировать на форме в виде графиков.

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

2. Описание используемых методов

Метод Эйлера

 Этот  метод  называют   методом  Рунге-Кутта  первого   порядка точности.

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

       Для решения поставленной задачи выполняем следующие действия:

  •  Строим оси координат;
  •  Отмечаем точку A(0; 4) – первую точку интегральной кривой;
  •   Ищем угол наклона касательной к графику в точке A:

  •  Строим касательную AB в точке А под углом α0;
  •  Находим х1 по формуле: xi = х0 + ih, где h – шаг интегрирования

x1 = 0 + 1 · 0.05 = 0.05;

  •  Проводим прямую x = x1 = 0.05  до пересечения с прямой AB, отмечаем точку B(x1; y1);
  •  Ищем  y1:

Из прямоугольного треугольника  ,

Δy = y1 y0,

 y1 y0= Δx· tg α0

Δx = x1 – x0 = h => y1 = y0 + h · (f(x0; y0)) = 4 + 0.05  f(0;4) = 4+0.05*0= 4

Следовательно, точка B имеет координаты (0.05; 4).

Следующую точку будем искать аналогичным способом по формуле расчета очередной точки интегральной функции:

(*)

Метод Эйлера модифицированный

Для уменьшения погрешности вычислений часто используется модифицированный метод Эйлера. Этот метод имеет так же следующие названия: метод Эйлера-Коши или метод Рунге-Кутта второго порядка точности.

Для решения поставленной задачи выполняем следующие действия:

  •  Строим оси координат;
  •  Отмечаем А(0; 4) – первую точку интегральной кривой;
  •  Ищем угол наклона касательной к графику в точке A:

  •  Строим касательную AB в точке А под углом α0;
  •  Находим х1 по формуле: xi = х0 + ih, где h – шаг интегрирования

x1 = 0 + 0.05 · 1 = 0.05;

  •  Делим шаг интегрирования на два отрезка и отмечаем x1/2= x0 + h/2, проводим прямую из этой точки до прямой AB, отмечаем точку B(x1/2; y1/2);
  •  Ищем координаты В:

x1/2 = x0 + h/2 = 0 + 0.025 = 0.025

y1/2 = y0 + h/2 · f(x0; y0) = 4 +  0.025· 0= 4

Следовательно, точка B имеет координаты (0.025; 4);

Ищем угол наклона касательной к графику в точке B:

Tgα1=2*0.025*4/0.025+1=0.1951 рад. α1=0.1977

  •  Строим касательную BC в точке B под углом α1;
  •  Проводим прямую x1 = 0.05 до пересечения с прямой BC, отмечаем точку C с координатами (x1; y1);
  •  Ищем y1 :

y1 = y1/2 + h/2(f(x1/2;y1/2)) = 4 + 0.025 · 0.1977 = 4.0049

Следовательно, точка C имеет координаты (0.05; 4.0049).

yi+1 = yi + hf(xi + h/2, yi + h/2 ∙ f(xi, yi))

3. Блок-схемы основных процедур.

Блок-схема функции

Блок-схема метода Эйлера.

Блок-схема методом Эйлера модифицированным.

 

Блок-схема графика.

Блок схема программы.

4. Формы программы.

Исходный вид формы программы.

Итоговый вид формы программы.

5. Листинг программы на языке Visual Basic.

Dim x(50) As Single, y(50) As Single, k(50) As Single, z(50) As Single, p(50) As Single

Private y0 As Single

Private x0 As Single

Private xk As Single

Private C As Single

Function f(t As Single, q As Single) As Single

f = 2 * t * q / t + 1

End Function

Private Sub Command2_Click()

x0 = Val(Text1.Text)

xk = Val(Text2.Text)

y(0) = Val(Text4.Text)

h = Val(Text3.Text)

p(0) = y(0)

z(0) = y(0)

n = Round((xk - x0) / h)

C = (y(0) * (x0 + 1) ^ 2) / Exp(2 * x0)

MSFlexGrid1.Rows = n + 2

MSFlexGrid1.Cols = 4

MSFlexGrid1.TextMatrix(0, 0) = "X"

MSFlexGrid1.TextMatrix(0, 1) = "P"

MSFlexGrid1.TextMatrix(0, 2) = "Yэ"

MSFlexGrid1.TextMatrix(0, 3) = "Yэм"

Max = y(0)

Min = y(0)

For i = 1 To n

x(i) = x0 + i * h

p(i) = Round(C * (x(i) * x(i) * x(i)) )

y(i + 1) = Round(y(i) + f(x(i), y(i)) * h )

z(i + 1) = Round(z(i) + f(x(i) + h / 2, z(i) + h / 2 * f(x(i), z(i))) * h)

If y(i) > Max Then Max = y(i)

If y(i) < Min Then Min = y(i)

MSFlexGrid1.TextMatrix(i + 1, 0) = Str(x(i))

MSFlexGrid1.TextMatrix(i + 1, 1) = Str(p(i))

MSFlexGrid1.TextMatrix(i + 1, 2) = Str(y(i))

MSFlexGrid1.TextMatrix(i + 1, 3) = Str(z(i))

Next i

Picture1.Cls

kx = (Picture1.Width - 1200) / (xk - x0)

ky = (Picture1.Height - 1200) / (Max - Min)

Label4.Caption = Str(Min)

Label5.Caption = Str(Max)

Label6.Caption = Str(x0)

Label7.Caption = Str(xk)

For i = 0 To n - 1

z1 = Round(720 + (x(i) - x0) * kx)

z2 = Round(5400 - (y(i) - Min) * ky)

z3 = Round(720 + (x(i + 1) - x0) * kx)

z4 = Round(5400 - (y(i + 1) - Min) * ky)

z5 = Round(5400 - (p(i) - Min) * ky)

z6 = Round(5400 - (p(i + 1) - Min) * ky)

z7 = Round(5400 - (z(i) - Min) * ky)

z8 = Round(5400 - (z(i + 1) - Min) * ky)

Picture1.Line (z1, z7)-(z3, z8), vbRed

Picture1.Line (z1, z2)-(z3, z4), vbGreen

Picture1.Line (z1, z5)-(z3, z6), vbBlue

Next i

End Sub

Private Sub Command1_Click()

End

End Sub

6. Решение задачи в MathCAD.

Заключение

В данной курсовой работе я изучил численные методы решения задачи

По окончании работы я научился работать в  среде программирования Visual Basic 6.0. и MathCad.

Я, в своей курсовой работе решал уравнение двумя методами: методом Эйлера и методом Эйлера модифицированного.Я выяснил, что метод Эйлера модифицированный имеет меньшую погрешность, чем метод Эйлера.


Eiler

i=0,…,N-1

x(i)=x0+h*i

yi=yi-1+h*f(xi-1,yi-1)

end

Eiler mod

=(xk-x0)/N

i=0,…,N-1

x(i)=x0+h*i

Yi=y(i-2)+h*F(x(i-2)+h/2,y(i-2)+h/2*F(x(i-2), y(i-2))

end

end

F=2*g*m/g+1

F(g,m)

Graphic

x0, xk, y0, h

N=Round((xk-x0)/h)

MSFlexGrid1.Rows=n+2

MSFlexGrid1.TextMatrix(0,0)=”X”

MSFlexGrid1.TextMatrix(0,1)=”YЭ

MSFlexGrid1.TextMatrix(0,2)=”YЭМ

MSFlexGrid1.TextMatrix(0,3)=”P”

x(0)=x0

y(0)=y0

c=y0*(x0+1)^2/exp(2*x0)

y1(i+1)=y1(i)+h*F(x(i),y1(i))

For i=0 to N

x(i)=x0+h*i

Z(0)=y0

y2(i+1)=y2(i)+h*F(x(i)+h/2,y2(i)++h*F(x(i),y2(i))/2

Y(i)=exp(2*x(i)) *C/(x(i)+1)^2

min=Y(0)

For i=0 to N

Y(i)<min

min=y(i)

max=Y(0)

For i=0 to N

Y(i)>max

max=Y(i)

kx = (Picture1.Width - 1200) / (xk - x0)

ky = (Picture1.Height - 1200) / (Max - Min)

нет

да

нетт

да

p(0)=y0

For i=0 to N-1

p1=720+(x(i)-x0)*kx

p2=5400-(y1(i)-min)*ky

p3=720+(x(i+1)-x0)*kx

p4=5400-(Y(i+1)-min)*ky

p5=5400+(p(i)-min)*ky

p6=5400-(p(i+1)-min)*ky

p7=5400-(z(i)-min)*ky

P8=5400-(z(i+1)-min)*ky

Picture1.Line(p1,p2)-(p5,p6),vbRed

Picture1.Line(p1,p3)-(p5,p7),vbGreen

Picture1.Line(p1,p4)-(p5,p8),vbBlue

end

Programma

x0, xk, y0, h

h=(xk-x0)/N

c=y(0)*(x0+1)^2/exp(2*x0)

i=0,…,N

x(i)=x0+h*i

y1(i+1)=y1(i)+h*F(x(i),y1(i))

y2(i+1)=y2(i)+h*F(x(i)+h/2,y2(i)++h*F(x(i),y2(i))/2

Y(i)=( exp(2*x(i)) *C/(x(i)+1)^2

x(i),y1(i),y2(i),Y(i)

end


 

А также другие работы, которые могут Вас заинтересовать

75504. Редактор панелей инструментов (1С) 45 KB
  Редактор панелей инструментов 1С Для вызова редактора панелей инструментов необходимо выделить название интерфейса для которого редактируются панели и в меню Действия главного меню Конфигуратора выбрать пункт Редактировать панели инструментов рис. Окно редактора панелей инструментов Окно редактора состоит из трех основных частей. Слева вверху расположен список панелей инструментов и кнопки для создания переименования и удаления панелей. Слева внизу расположено окно с библиотекой рисунков которые могут быть размещены на кнопках...
75505. Язык SQL. Создание базы данных и таблиц 64.5 KB
  Создание базы данных и таблиц. Создание базы данных В различных СУБД процедура создания баз данных обычно закрепляется только за администратором баз данных. В однопользовательских системах принимаемая по умолчанию база данных может быть сформирована непосредственно в процессе установки и настройки самой СУБД. Стандарт SQL не определяет как должны создаваться базы данных поэтому в каждом из диалектов языка SQL обычно используется свой подход.
75506. Пользовательские права (1С) 111 KB
  Пользовательские права 1С В Конфигураторе системы разделены функции создания набора пользовательских прав и создания пользователей. Количество наборов пользовательских прав в системе практически не ограничено. Доступ к списку наборов прав текущей конфигурации осуществляется через закладку Права окна Конфигурация. Внешний вид списка наборов прав зависит от положения переключателей Список Таблица в меню Действия главного меню Конфигуратора.
75507. Характеристика языка SQL. Структура запроса к базе данных 49 KB
  Например обозначение SC DESC указывает можно выбрать один из терминов SC или DESC; когда же один из элементов выбора заключен в квадратные скобки то это означает что он выбирается по умолчанию так [SC] DESC означает что отсутствие всей этой конструкции будет восприниматься как выбор SC; точка с запятой ; – завершающий элемент предложений SQL; запятая – используется для разделения элементов списков; пробелы – могут вводиться для повышения наглядности между любыми синтаксическими конструкциями предложений SQL; прописные...
75508. Формирование и ввод исходных данных в системе 1С: Предприятие 23.5 KB
  Внимательно изучить нижеследующие задания и осуществить первичное заполнение справочников. В Плане счетов (меню «Операции» → раздел «План счетов») ввести активно-пассивный счет 38 «Пробный счет», который будет иметь количественный учет и субконто «Резервы».
75509. Средства разработки приложений БД 28 KB
  Средства разработки приложений БД Программы с помощью которых пользователи работают с базой данных называются приложениями. В общем случае с одной базой данных могут работать множество различных приложений. Например если база данных моделирует некоторое предприятие то для работы с ней может быть создано приложение которое обслуживает подсистему учета кадров другое приложение может быть посвящено работе подсистемы расчета заработной платы сотрудников третье приложение работает как подсистемы складского учета четвертое приложение...
75510. Регистрация хозяйственных операций (1С) 21 KB
  Ведение финансово-хозяйственных операций неразрывно связан с регистрацией первичных документов и формированию на их основ бухгалтерских проводок. Документы одного вида группируются в журнал. Кроме обычных журналов объединяющих все документы определенного вида видов существует общий журнал в который попадет все документы. Документ может находиться в двух состояниях не проведен и проведен.
75511. Порядок разработки таблицы базы данных в СУБД MS Access 125.5 KB
  В поле этого типа ccess автоматически нумерует строки таблицы в возрастающей последовательности. Каждое поле обладает индивидуальными свойствами по которым можно установить как должны сохраняться отображаться и обрабатываться данные.