Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Курсовая работа. По специальным главам информатики

    по специальным главам информатики

     

    Методы решения дифференциальных уравнений

     

     

    Автор курсовой работы 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 широко применялся в промышленности и в учебных заведениях.

    Языки высокого уровня программирования актуальны в научных, общественных, технических сферах. Именно язык высокого уровня-PASCAL используется в данной работе для решения поставленных задач.

    Цель исследования – численные решения с помощью ЭВМ

    Задачи исследования:

    1. Решение дифференциального уравнения методом Эйлера.

    2. Найти интерполяционный полином 2 степени методом Лагранжа.

    3. Провести оптимизацию полученного полинома методом Дихотомии.

    4. Найти значения определенного интеграла методом Симпсона.

    5. Составить блок-схемы алгоритмов и программы для приведенных решений на языке высокого уровня программирования.

    Объект исследования – информатика специальные главы.

    Предмет исследования - дифференциальное уравнение.

     

    1.Методы решение дифференциального уравнения

    Дифференциальное уравнение-уравнение, связывающее значение некоторой неизвестной функции в некоторой точке и значение её производных различных порядков в той же точке.

    Наиболее простым численным методом решения дифференциальных уравнений является метод Эйлера, который был описан в 1768 году в работе «Интегральные исчисления». Из-за своей простоты метод Эйлера находит своё применение в теоретических исследованиях дифференциальных уравнений, задач вариационного исчисления и ряда других математических проблем.

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

    где h-шаг.

    1.1 Интерполяционные формулы — в математике формулы, дающие приближённое выражение функции при помощи интерполяции, то есть через интерполяционный многочлен степени , значения которого в заданных точках совпадают со значениями функции в этих точках. Многочлен определяется единственным образом, но в зависимости от задачи его удобно записывать различными по виду формулами. Интерполяционная формула Лагранжа обеспечивает построение алгебраического многочлена Pn (x) для произвольно заданных узлов интерполирования. Для n + 1 различных значений аргумента x 0, x 1,..., xn и соответствующих значений функции f (x 0) = y 0, f (x 1) = y 1,..., f (xn) = yn

     

     

     

    1.2 Оптимизация полинома методом Дихотомии.

    Если непрерывная функция на концах некоторого интервала имеет значения разных знаков, то внутри этого интервала у неё есть корень, как минимум один. Именно на базе этой теоремы и построено численное нахождение приближенного значения корня функции. Обобщенно этот метод называется дихотомией т.е. делением отрезка на 2 части. Алгоритм выглядит так:

    •Задать начальный интервал.

    • Убедиться, что на концах функция имеет знак.

    • Повторять.▫

    ▫ Выбрать внутри интервала точку X.

    ▫ Сравнивать знак функции в точке Х со знаком функции в одном из концов.

    ▫ Если совпадает, то переместить этот конец интервала в точку Х.

    ▫ Иначе переместить в точку Х другой конец интервала.

    Повторять до тех пор, пока не будет достигнута нужная точность.

    1.3 Интегрирование методом Симпсона.

    Метод Симпсона, названый в честь британского математика Томаса Симпсона, относится к приемам численного интегрирования, суть которого заключается в приближении подынтегральной функции на отрезке [a, b] интерполяционным полиномом второй степени.

    Формулой Симпсона называется интеграл от интерполяционного многочлена второй степени на отрезке [ a, b ]

     

    2.Практическая часть.

    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

    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);

    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;

    //3

    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;

    x: = (t +d)/2;

    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;

    integ: =h*integ/3;

    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

     

    1: writeln(ailer(xi));

    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

     
     

    <== предыдущая лекция | следующая лекция ==>
    Белфастское соглашение | Оскорбление




    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.