Применение компьютеров для решения инженерных и математических задач

Численные методы, применяющиеся для решения дифференциальных уравнений. Наличие развитой библиотеки модулей, позволяющей использовать возможности операционной системы, создавать оверлейные структуры - особенность языка программирования 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.