Применение компьютеров для решения инженерных и математических задач
Численные методы, применяющиеся для решения дифференциальных уравнений. Наличие развитой библиотеки модулей, позволяющей использовать возможности операционной системы, создавать оверлейные структуры - особенность языка программирования Turbo Pascal.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.02.2019 |
Размер файла | 304,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Введение
В 1992 году фирма Borland International выпустила два пакета программирования, основанные на использовании языка Паскаль - Borland Pascal 7.0 и Turbo Pascal 7.0.
Пакет Borland Pascal 7.0 учитывает многие новейшие достижения в программировании и практике создания программ и включает в себя три режима работы: в обычном режиме операционной системы MS DOS, в защищенном режиме MS DOS и в среде Windows. Обладая расширенными возможностями, пакет Borland Pascal 7.0 тем не менее требует для использования всех своих возможностей довольно большую память - примерно 30 Мбайт на жестком диске и не менее 2 Мбайт оперативной памяти. К сожалению, далеко не каждая машина у пользователей в нашей стране обладает такими возможностями. Да и стоимость этого пакета довольно высокая.
Пакет Turbo Pascal 7.0 обладает ограниченными возможностями и позволяет работать только в обычном режиме MS DOS, но может быть использован практически на любой машине и стоит существенно дешевле. Начинающему программисту, по-видимому, целесообразно начать изучение языка и среды именно с этого пакета.
Turbo Pascal включает в себя как язык программирования - одно из расширений языка Паскаль для ЭВМ типа IBM, так и среду, предназначенную для написания, отладки и запуска программ.
Язык характеризуется расширенными возможностями по сравнению со стандартом, хорошо развитой библиотекой модулей, позволяющих использовать возможности операционной системы, создавать оверлейные структуры, организовывать ввод-вывод, формировать графические изображения и т. д.
Среда программирования позволяет создавать тексты программ, компилировать их, находить ошибки и оперативно их исправлять, компоновать программы из отдельных частей, включая стандартные модули, отлаживать и выполнять отлаженную программу. Пакет предоставляет пользователю также большой объем справочной информации.
В 2003 году на факультете математики, механики и компьютерных наук ЮФУ была создана учебная среда программирования Pascal ABC. Система представляла собой интегрированную оболочку со встроенным интерпретатором языка программирования Паскаль, близкого к языку Delphi. Несмотря на неполную реализацию языка, она стала удачной заменой устаревшей системе Turbo Pascal в первоначальном обучении программированию. Как учебную систему её использовали во многих регионах СНГ. В каталоге Soft@Mail.ru программа Pascal ABC в 2006 году признавалась программой недели.
В 2005--2006 годах система была полностью переработана: изменена её архитектура -- на полноценный компилятор языка, близкого к Delphi, с расширениями, связанными с платформой .NET. Новая система получила название PascalABC.NET. В июне 2009 года появилась первая стабильная версия PascalABC.NET 1.2.
В сентябре 2009 г. появилась веб-среда разработки WDE, не требующая установки PascalABC.NET на локальный компьютер и позволяющая запускать программы на PascalABC.NET непосредственно из окна браузера. Ключевой особенностью WDE является то, что программа запускается на сервере, а на клиентский компьютер в интерактивном режиме передаются лишь данные ввода-вывода. Для зарегистрированных пользователей доступен личный файловый архив программ с возможностью навигации, а также с возможностью предоставлять другим пользователям доступ к опубликованным программам на чтение в стиле Google Docs. В августе 2010 г. в WDE появилась возможность создавать простые графические приложения.
В августе 2011 г. осуществлен переход на .NET 4.0 (версия 1.8). В январе 2012 г. веб-среда разработки WDE также была переведена на .NET 4.0.
С мая 2012 г. в веб-среду разработки добавлена поддержка компиляторов C#, VB.NET, Iron Python и F#, в связи с чем она была переименована в ProgrammingABC.NET WDE.
В феврале 2013 г. вышла версия PascalABC.NET 2.0 с дизайнером форм.
Задачи курсовой работы:
Методом Эйлера и методом Рунге-Кутта с точностью 0.001 решить дифференциальное уравнение: на интервале [0;1] с заданным начальным условием y(a)=1. Определить метод, решающий поставленную задачу за минимальное число повторений. Построить график полученной функции на заданном интервале. Решить поставленную задачу с использованием функций и процедур языка Pascal.
1. Описание численных методов решения дифференциальных уравнений
численный программирование модуль дифференциальный
1.1 Метод Эйлера
Метод Эйлера относится к численным методам, дающим решение в виде таблицы приближённых значений искомой функции. Пусть дано дифференциальное уравнение Y'=f(x,y) с начальным условием y(x0)=y0.
Выбрав достаточно малый шаг h, рассмотрим систему равноотстоящих точек xi=x0+ih (i=0,1,2,…). В методе Эйлера приближённые значения y(xi)yi вычисляются последовательно по формулам:
yi+1=yi+hf(xi,yi) (i=1,2,3…).
При этом искомая интегральная кривая y=y(x), проходящая через точку M0(x0,y0), заменяется ломанной M0M1M2K с вершинами Mi(xi,yi) (i=0,1,2,3,K); каждое звено MiMi+1 этой ломаной, называемой ломаной Эйлера, имеет направление, совпадающее с направлением той интегральной кривой уравнения Y'=f(x,y), которая проходит через точку Mi.
1.2 Метод Рунге-Кутты
При решении методом Рунге - Кутты дифференциального уравнения Y'=f(x,y) с начальным условием y(x0)=y0 через yi обозначают приближённые значения искомого решения в точке xi и вычисление приближённого значения y i+1 в следующей точке x i+1= xi+h производится по формулам:
y i+1= y i+yi,
yi=1/6(K(i)1+2K(i)2+2K(i)3+K(i)4),
где
K(i)1= h*f(xi,yi),
K(i)2=h*f(x i+h/2, y i+ K(i)1/2),
K(i)3= h*f(x i+h/2, y i+ K(i)2/2),
K(i)4= h*f(x i+h, y i+ K(i)3).
Порядок выполнения вычислений по методу Рунге - Кутты:
1. Выбираются x и y.
2. Вычисляются f(x0,y0). Определяются K(0)1=h*f(x0,y0).
3. Определяются x 0+h/2 , y 0+ K(1)1/2.
4. Вычисляются f(x 0+h/2, y 0+ K(0)1/2) и K(0)2=h*f(x 0+h/2, y 0+ K(0)1/2).
5. Принимаются x 0+h/2 ,y 0+ K(0)2/2.
6. Вычисляются f(x 0+h/2, y 0+ K(0)2/2) , K(0)3=h*f(x 0+h/2, y 0+ K(0)2/2).
7. Определяются x 0+h , y 0+ K(0)3.
8. Вычисляются f(x 0+h, y 0+ K(0)3/2) ,K(0)4=h*f(x 0+h, y 0+ K(0)3).
9. Суммируются K(0)1+2K(0)2+2K(0)3+K(0)4 , делятся на шесть и в результате получаютсяy0.
10. Вычисляются y 1= y 0+y0.
Затем все вычисления продолжаются в том же порядке, принимая за начальную точку (x1, y1). Заметим, что шаг расчёта можно менять при переходе от одной точки к другой. Для контроля правильности выбора шага h рекомендуется вычислять дробь
=I(K(1)2 - K(1)3)/(K(1)1 - K(1)2)I.
Величина не должна превышать нескольких сотых. В противном случае шаг h следует уменьшить.
Метод Рунге - Кутты имеет порядок точности h на всём отрезке [x0, X]. Грубую оценку погрешности можно получить с помощью двойного просчёта по формуле
,
где - значение точного решения уравнения в точке , а и - приближённые значения, полученные с шагом h/2 и h.
При решении на ЭВМ методом Рунге - Кутта с автоматическим выбором шага обычно в каждой точке xi делают двойной просчёт - сначала с шагом h, затем с шагом h/2. Если полученные при этом значения yi различаются в пределах допустимой точности, то шаг h для следующей точки x i+1 удваивают, в противном случае берут половинный шаг.
2. Описание алгоритма работы программы
Программа решает дифференциальное уравнение вида y=f(x,y) на интервале [a,b] с заданным начальным условием y(a) методом Эйлера и Рунге-Кутты.
При запуске данной программы на экране дисплея появляется текст программы, которая состоит из следующих пунктов:
1. Описание модулей Crt, GraphABC;
2. Описание переменных;
3. Функция “исходная функция ”;
4. Процедура построения графика;
5. Текст основной программы.
При запуске программы на экране монитора отображается решение дифференциального уравнения в виде таблицы методами Рунге-Кутты и Эйлера, а так же график, соответствующий решению данного дифференциального уравнения.
Рис. 1. Блок-схема процедуры «Функция»
Рис. 2. Блок-схема процедуры «Главная часть»
Рис. 3
Рис. 4
Рис. 5
Рис. 6
3. Листинг программы
program kursovaya_Runge_Kutt_Eiler;
uses crt,graphABC;
const
h=0.001;
var
i,j,p:integer;
n,q:real;
s:string;
r1,r2,r3,r4,yi,xi,dy,xm,ym:real;
a:array[0..1000] of real;
b:array[0..1000] of real;
a1:array[0..1000] of real;
b1:array[0..1000] of real;
function f(x,y:real):real;
begin
f:=exp(-x)-y*y;
end;
begin
clrscr;
xi:=0;
yi:=1;
i:=0; j:=0;
xm:=0;
ym:=1;
q:=0.125;
writeln('Метод Рунге-Кутты:');
writeln('№=',i, ' | ','x=',xi:5:3, ' | ','y=',yi:5:3);
repeat
r1:=h*f(xi,yi);
r2:=h*f(xi+h/2,yi+r1/2);
r3:=h*f(xi+h/2,yi+r2/2);
r4:=h*f(xi+h,yi+r3);
dy:=(r1+2*r2+2*r3+r4)/6;
yi:=yi+dy;
xi:=xi+h;
a[i]:=xi;
b[i]:=yi;
i:=i+1;{
if i mod 100=0 then
writeln('№=',i, ' | ','x=',xi:5:3, ' | ','y=',yi:5:3);
until xi>1;
readln;
writeln('Метод Эйлера:');
writeln('№=',j, ' | ','x=',xm:5:3, ' | ','y=',ym:5:3);
repeat
ym:=ym+h*f(xm,ym);
xm:=xm+h;
a1[j]:=xm;
b1[j]:=ym;
j:=j+1;
if j mod 100=0 then
writeln('№=',j, ' | ','x=',xm:5:3, ' | ','y=',ym:5:3);
until xm>1;
SetWindowHeight(700);
SetWindowWidth(900);
SetPenColor(clBlack);
SetPenWidth(2);
line(180,600,900,600);
line(220,0,220,700);
line(220,0,220-10,10);
line(220,0,220+10,10);
line(900,600,900-10,600-10);
line(900,600,900-10,600+10);
for p:=1 to 8 do
begin
line(220+75*p,595,220+75*p,605);
line(215,75*p,225,75*p);
end;
TextOut(205,605,'0');
TextOut(880,605,'x');
TextOut(225,15,'y');
for p:=1 to 8 do
begin
str(q:3:3,s);
TextOut(225+75*p,610,s);
q:=q+0.125;
end;
q:=0.2;
for p:=1 to 8 do
begin
str(q:3:1,s);
TextOut(180,600-75*p,s);
q:=q+0.2;
end;
for p:=1 to 8 do
begin
SetPenColor(clGreen);
SetPenWidth(1);
line(180,75*p,900,75*p);
line(220+75*p,0,220+75*p,700);
end;
while p<=1000 do
begin
n:=375
Setpixel(round(a[p]*n*1.6+220),round(600-(n*b[p])),clRed);
Setpixel(round(a1[p]*n*1.6+220),round(600-(n*b1[p])),clBlue);
p:=p+1;
end;
readln;
end.
Заключение
В ходе выполнения курсового проекта, мною было решено дифференциальное уравнение методами Эйлера и Рунге-Кутты. Данные методы дают наиболее точные результаты и обеспечивают простоту, доступность во время процесса вычисления.
Благодаря данной курсовой работе, я получил основные навыки в решении дифференциальных уравнений, а так же в построении графиков в программе Pascal ABC.
Литература
1. Turbo Pascal 7.0 учебное пособие, Фаронов В.В. Изд. «Knowlege» Москва 2002 г.;
2. Turbo Pascal 7.0 Численные методы АлексеевЕ.Р., Чеснокова О.В. Изд. NT Press Москва, 2006 г.;
3. Программные средства разработчика радиоэлектронной аппаратуры (Методические указания к курсовому проектированию) Изд. Пензенский государственный университет, Пенза 2006 г.;
4. Язык программирования PASCAL, Система программирования ABC Pascal Учебное пособие, Цветков А.С. 2011-2012 гг.
Приложение 1
Рис. 7. Результаты работы программы
Размещено на Allbest.ru
...Подобные документы
Численные методы решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов. Методы аппроксимации дискретных функций и методы решения задач линейного программирования.
методичка [185,7 K], добавлен 18.12.2014История появления и распространения Turbo Pascal - среды разработки для языка программирования Паскаль. Общий вид объявления файлового типа. Входная, выходная и промежуточная информация. Алгоритм решения задачи: словесный алгоритм, блок-схема, программа.
курсовая работа [359,4 K], добавлен 05.01.2010Применение информационных технологий в конкретной практической деятельности по выбранной специальности. Использование языка программирования Pascal в инженерной практике как универсального алгоритмического языка. Программа решения задачи на языке Pascal.
курсовая работа [1,3 M], добавлен 25.07.2012Разработка программ с помощью Turbo Pascal для решения задач, входящих в камеральные работы маркшейдера: решение обратной геодезической задачи и системы линейных уравнений методом Гаусса, определение координат прямой угловой засечки и теодолитного хода.
курсовая работа [1,5 M], добавлен 05.03.2013Символьный тип данных как составляющая языка программирования: управляющие символы, лексемы и разделители. Разработка программного обеспечения для практической реализации решения задач, содержащих символьные величины языка программирования Turbo Pascal.
курсовая работа [37,7 K], добавлен 03.05.2012Разработка программы на языке Turbo Pascal 7.0 для преобразования кинетической схемы протекания химических реакций при изотермических условиях в систему дифференциальных уравнений. Ее решение в численном виде методом Рунге-Кутта четвертого порядка.
курсовая работа [929,7 K], добавлен 06.01.2013Строгая типизация и наличие средств структурного (процедурного) программирования императивного языка Pascal. Структура программы, выражения, строки. Правила и описание типов, процедур и функций, операторов ввода - вывода, модулей и подпрограмм.
курсовая работа [37,3 K], добавлен 28.06.2008Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.
курсовая работа [532,9 K], добавлен 14.01.2014Характеристика используемой операционной системы, языка программирования. Структура программы на языке Turbo Pascal 7.1. Операторы языка Turbo Pascal. Проведение сортировки записей. Алгоритмы программы и подпрограмм. Причины возникновения ошибок.
курсовая работа [454,1 K], добавлен 13.06.2014Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.
реферат [64,0 K], добавлен 20.03.2016Численные методы решения задач. Решение алгебраических и трансцендентных уравнений. Уточнение корня по методу половинного деления. Решение систем линейных уравнений методом итераций. Методы решения дифференциальных уравнений. Решение транспортной задачи.
курсовая работа [149,7 K], добавлен 16.11.2008Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009Программирование нестандартных функций. Матрицы и операции над ними. Решение нелинейных уравнений и численное интегрирование. Оптимизация функции и численное дифференцирование. Аппроксимация функции: методы решения, описание программы, результаты.
курсовая работа [70,5 K], добавлен 12.08.2011Исследование количества, характера и расположения корней. Определение их приближенных значений итерационными методами: половинного деления (дихотомии) и хорд. Тексты программ. Решение уравнений на языках программирования Borland Delfi и Turbo Pascal.
курсовая работа [500,3 K], добавлен 15.06.2013Разработана программа решения двух задач на языке программирования Turbo Pascal. Спецификация задания. Описание входных и выходных данных. Математическая постановка задачи. Алгоритм ее решения. Описание и блок-схема программы. Результаты тестирования.
курсовая работа [275,8 K], добавлен 28.06.2008Изучение требований и реализации пользовательского интерфейса в среде Turbo Pascal. Разработка текстового, графического режимов работы дисплеев. Рассмотрение численных методов решения трансцендентных уравнений, их алгоритмизации и программирования.
шпаргалка [776,8 K], добавлен 07.05.2010Основные методы структурного программирования. Методы половинного деления, Крамера, прямоугольников. Применение языка программирования Turbo Pascal 7.0. Решение системы линейных алгебраических уравнений. Описание стандартных и не стандартных функций.
курсовая работа [376,8 K], добавлен 14.01.2015Разработка программы для решения системы обыкновенных дифференциальных уравнений на базе языка программирования Паскаль АВС. Чтение исходных данных из внешнего файла. Вывод исходных данных и результатов на дисплей и во внешний файл. Суть метода Ейлера.
реферат [126,1 K], добавлен 12.01.2012История создания и развитие Pascal. Особенности пакета программирования Turbo. его возможности редактора текстов, компилятора и отладчика. Построения программы на языке Turbo Pascal, ее структура, типы алгоритмов, одномерные и многомерные массивы.
курсовая работа [519,3 K], добавлен 25.06.2011Решение типовых задач с помощью языка программирования Turbo Pascal и табличного процессора Microsoft Excel 2007. Обратная геодезическая задача, прямая угловая задача, обратная геодезическая засечка, решение системы линейных уравнений методом Гаусса.
курсовая работа [1,3 M], добавлен 11.01.2011