![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Курсовая работа. По специальным главам информатики
по специальным главам информатики
Методы решения дифференциальных уравнений
Автор курсовой работы 17.01.2012 Беляева И.В.
Обозначение работы КР-02069964-210700-02-12
Руководитель работы Преподаватель 17.01.2012 Маняев И.В. Оценка:
Саранск 2012
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМ. Н. П. ОГАРЁВА» Факультет электронной техники Кафедра: Сети Связи и Системы Коммутаций ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ (ПРОЕКТ) Студент Беляев И.В. 1.Тема: Методы решения дифференциальных уравнений 2.Срок предоставления курсовой работы(проекта) к защите 17.01.2012 3.Содержание курсовой работы(проекта) 3.1.Введение 3.2.Практическая часть 3.3.Заключение Руководитель курсовой работы (проекта) 17.01.2012 г., И.В. Маняев подпись, дата, инициалы, фамилия Задание принял к исполнению _______________________________ дата, подпись
Задание на курсовую работу 1. Решить дифференциальное уравнение dy/dx=2*(x^2+y), y(0)=1 на отрезке [0; 1] с шагом h=0.1 методом Эйлера 2. Найти интерполяционный полином 2 степени методом Лагранжа. 3. Провести оптимизацию полученного полинома на отрезке [0; 1] по методу Дихотомии. 4. Найти значения определенного интеграла методом Симпсона. 5. Построить графики решения дифференциального уравнения, интерполяционной функции. 6. Составить блок-схемы алгоритмов и программы для приведенных решений на языке программирования высокого уровня.
Содержание.
Введение ………………………………………………………..………..….5 1 Теоритическая часть …………………………….…………..………....7 1.1 Решение ОДУ: метод Эйлера…….....………………..….……………...7 1.2 Аппроксимция: метод Лагранжа………………………….........…..…...7 1.3Оптимизация: метод дихотомии………………..…..……....…………..8 1.4 Интегрирование: метод Симпсона………………………………….......8 2 Расчётная часть ……………………………..……………………….…....9 Заключение …………………..…….……..…………………………..…....19 Список литературы ………………………………….…………………......20
ЭВМ играют важную роль в жизни человека. С их помощью люди достигли удивительных успехов в науке и техники. Вычислительные машины способны совершать миллионы вычислений в секунду, которые человек не в силах сделать. Важной особенностью ЭВМ является её программируемость. Это позволяет задавать вычислительной машине различные задачи для их решения с помощью языка программирования. Язык программирования – формальная знаковая система, предназначенная для записи компьютерных программ. Функция языка программирования заключается в следующем: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций для выполнения того или иного вычислительного процесса и организации отдельными устройствами. Реализация языка программирования может происходить путём компилирования и интерпретирования. Различие заключается в том, что компилятор-это особая программа, которая компилирует т.е. преобразует язык в машинный код - двоичный код. Интерпретатор-это программа, которая выполняет исходный текст без предварительного перевода. Языки программирования делятся на 2 вида: Язык высокого и низкого уровней программирования. Язык высокого уровня программирования разработан с целью экономия времени и удобства для программиста, использующего этот язык. Он не зависит от кодов самой ЭВМ, поэтому программы, которые написаны на этом языке, требуют перевода в машинные коды. К языкам высокого уровня относят BASIC, PASCAL, C++ и т.д. Язык низкого уровня программирования отражает внутренний код ЭВМ и предназначен для определенного типа ЭВМ. К языкам низкого уровня относят Java, Microsoft.NET и т.д. Одним из известных языков высокого уровня программирования является PASCAL, который был назван в честь выдающегося французского математика, литератора, философа Блеза Паскаля. Именно Блезом Паскалем была создана первая в мире механическая машина, складывающая два числа. Сам же язык программирования был создан Никлаусом Виртом в 1968-1969 гг. Позже, в 1970 году Вирт опубликовал язык как небольшой и эффективный язык, способствовавший хорошему стилю программирования, использующий Языки высокого уровня программирования актуальны в научных, общественных, технических сферах. Именно язык высокого уровня-PASCAL используется в данной работе для решения поставленных задач. Цель исследования – численные решения с помощью ЭВМ Задачи исследования: 1. Решение дифференциального уравнения методом Эйлера. 2. Найти интерполяционный полином 2 степени методом Лагранжа. 3. Провести оптимизацию полученного полинома методом Дихотомии. 4. Найти значения определенного интеграла методом Симпсона. 5. Составить блок-схемы алгоритмов и программы для приведенных решений на языке высокого уровня программирования. Объект исследования – информатика специальные главы. Предмет исследования - дифференциальное уравнение.
Дифференциальное уравнение-уравнение, связывающее значение некоторой неизвестной функции в некоторой точке и значение её производных различных порядков в той же точке. Наиболее простым численным методом решения дифференциальных уравнений является метод Эйлера, который был описан в 1768 году в работе «Интегральные исчисления». Из-за своей простоты метод Эйлера находит своё применение в теоретических исследованиях дифференциальных уравнений, задач вариационного исчисления и ряда других математических проблем. yi=yi-1+h*f(xi-1; yi-1) где h-шаг. 1.1 Интерполяционные формулы — в математике формулы, дающие приближённое выражение функции
Если непрерывная функция на концах некоторого интервала имеет значения разных знаков, то внутри этого интервала у неё есть корень, как минимум один. Именно на базе этой теоремы и построено численное нахождение приближенного значения корня функции. Обобщенно этот метод называется дихотомией т.е. делением отрезка на 2 части. Алгоритм выглядит так: •Задать начальный интервал. • Убедиться, что на концах функция имеет знак. • Повторять.▫ ▫ Выбрать внутри интервала точку X. ▫ Сравнивать знак функции в точке Х со знаком функции в одном из концов. ▫ Если совпадает, то переместить этот конец интервала в точку Х. ▫ Иначе переместить в точку Х другой конец интервала. Повторять до тех пор, пока не будет достигнута нужная точность. 1.3 Интегрирование методом Симпсона. Метод Симпсона, названый в честь британского математика Томаса Симпсона, относится к приемам численного интегрирования, суть которого заключается в приближении подынтегральной функции на отрезке [a, b] интерполяционным полиномом второй степени. Формулой Симпсона называется интеграл от интерполяционного многочлена второй степени на отрезке [ a, b ]
uses crt; var xi, y: real; klava: integer;
const h=0.1; //шаг a=0; //начальное значение отрезка b=1; //конечное значение отрезка n=2; //степень полинома //1 function fak(x, y: real): real; begin fak: =2*(sqr(x)+y); //исходное диф. уравнение end; function ailer(xi: real): real; var x, y, r, pt: array[1..20] of real; i, j, k, m: integer; begin writeln ('Таблица значений: '); x[1]: =a; y[1]: =1; k: =1; repeat writeln('x', k, '=', x[k]: 0: 3, ' y', k, '=', y[k]: 0: 3); inc(k); y[k]: =y[k-1]+h*fak(x[k-1], y[k-1]); x[k]: =x[k-1]+h; until not (x[k]< b); end; //2 function lagrang(xi: real): real; var x, y, r, pt: array[1..20] of real; ct, u: real; i, j, k, m: integer; begin x[1]: =a; y[1]: =1; k: =1; repeat
y[k]: =y[k-1]+h*fak(x[k-1], y[k-1]); x[k]: =x[k-1]+h; until not (x[k]< b); for i: =1 to n+1 do r[i]: =0; for i: =1 to n+1 do begin ct: =1; pt[1]: =1; k: =1; for j: =1 to n+1 do if i< > j then begin ct: =ct*(x[i]-x[j]); pt[k+1]: =1; if k> 1 then for m: =k downto 2 do pt[m]: =pt[m-1]-pt[m]*x[j]; pt[1]: =-pt[1]*x[j]; k: =k+1; end; u: =y[i]/ct; for m: =1 to n+1 do r[m]: =r[m]+pt[m]*u; end; writeln(' Интерполяционный полином Лагранжа ', n, ' -ой степени: '); writeln('Q(x)=', r[1]: 0: 2, '+', r[2]: 0: 2, 'x+', r[3]: 0: 1, 'x^2'); end;
function q(x: real): real; begin q: =1+1.79*x+2.1*sqr(x); //полученный полином Лагранжа 2-й степени end; function dixotomiya(xi: real): real; const eps=0.1; // точность метода дихотомии var x, a, b, t, d, c, g: real; k: Integer; begin writeln ('Оптимизация полинома'); a: =0; b: =1; t: =0; d: =1; repeat c: = (a + b) / 2; if (q(a) * q(c)) < 0 then b: = c else a: = c; inc(k) until (b - a) < = eps; x: = (a + b) / 2; writeLn('корень(максимум) x=', x: 5: 5); repeat g: = (t + d) / 2; if (q(a) * q(b)) < 0 then d: = g else d: = g; inc(k) until (d - t) < = eps;
writeLn('корень (минимум) x=', x: 5: 5); readln; end; //4 function integral(xi: real): real; var h, x: real; n, i: integer; integ: real; begin write('Введите количество разбиений интервала(четное число) n='); readln(n); if (n mod 2)> 0 then { mod-остаток от деления n на 2 с остатком} begin n: =n+1; writeln('число n было нечетно, она заменено на n=', n); end; h: =(b-a)/n; integ: =q(a)+q(b)+4*q(a+h); for i: =1 to (n div 2)-1 do {частное деление n на 2 с остатком} begin x: =a+2*h*i; integ: =integ+2*q(x)+4*q(x+h); end;
writeln('Интеграл равен ', integ: 3: 3); end; begin writeln ('Введите номер задания: '); writeln('1)Решить диф.уравнения dy/dx=2*(x^2+y), y(0)=1 на отрезке [0; 1] методом Эйлера; '); writeln('2)Найти интерполяционный полином Лагранжа 2-ой степени; '); writeln('3)Провести оптимизацию полученного полинома методом дихотомии; '); writeln('4)Найти определенный интеграл методом Симпсона.'); readln(klava); case klava of
2: writeln(lagrang(xi)); 3: writeln(dixotomiya(xi)); 4: writeln(integral(xi)); end; end.
Рисунок 1-полученные значения
2.Составим Блок-схему алгоритма программы
Рисунок 2-Блок-схема алгоритма
Заключение Освоение методов решения дифференциальных уравнений, в ходе выполнения курсовой работы, позволяет проводить различные вычислительные операции, которые упрощают вычисления. Метод Эйлера позволяет вычислить дифференциальное уравнение за короткое время. Легок в работе и освоении. Интерполяция методом Лагранжа проста в освоении, но сложна в вычислении. Метод дихотомии очень прост в освоение, но из-за повышении точность повышается и число итераций. Формула Симпсона проста в использовании, и при том условии, что четвертая производная не слишком велика, дает высокую точность. Данные методы были реализованы на языке высокого уровня программирования PASCAL и показали свою эффективность в вычислениях.
Список литературы: 1. Абрамов В.Г., Трифонова Г.Н. Введение в язык Паскаль. – М.: Наука, 1988. 2. Задачи по программированию / С. А. Абрамов, Г. Г. Гнездилова, Е. Н. Капустина, М. И. Селюн. – М.: Наука, 1988. 3. Могилев А.В., Пак Н.И., Хеннер Е. К. Информатика: учеб. Пособие для студ. пед. Вузов / под ред. Е.К. Хеннера. – М.: Изд. Центр «Академия», 1999. 4. Касаткин В. Н. Информация. Алгоритмы. ЭВМ – М.: Просвещение, 1991. 5. https:// ru.wikipedia.org
|