Решение дифференциальных уравнений

Автор работы: Пользователь скрыл имя, 21 Ноября 2011 в 07:59, лабораторная работа

Описание

Работа содержит задачи по "Математике" с решениями

Работа состоит из  1 файл

Лабораторная 7.doc

— 82.50 Кб (Скачать документ)
 

   Лабораторная  работа № 7

   Решение дифференциальных уравнений

   Вариант 1 

   Используя метод Эйлера, составить  таблицу приближенных значений интеграла  дифференциального  уравнения  , удовлетворяющего начальным условиям на отрезке ; шаг h=0,1. Все вычисления вести с четырьмя десятичными знаками. Решить данную задачу с помощью Matlab, составив программу для нахождения решения с помощью метода Рунге-Кутты. 

   Решение

   Сначала решение задачи ведется методом Эйлера с уточнением. Каждое значение , где – искомая функция, а , определяется следующим образом. За начальное приближение берется , где . Найденное значение  уточняется по формуле .

   Вычисления  представлены в таблице 7.1

Таблица 7.1

                   
   0    1,8    2,6    2,196811905 2,819681
   1    1,9 2,820084    2,204693388 3,040553
   2    2 3,040791    2,209352843 3,261727
   3    2,1 3,261853    2,211817141 3,483034
   4    2,2 3,4831    2,213106144 3,704411
   5    2,3 3,704468    2,214213646 3,925889
   6    2,4 3,925985    2,216095156 4,147595
   7    2,5 4,147777    2,219662309 4,369743
   8    2,6 4,370056    2,225783286 4,592634
   9    2,7 4,593119    2,235288414 4,816648
   10    2,8 4,817345    2,248980059     
 

   Таким образом, ответом являются значения .

   Далее составлена программа в среде  Matlab для решения уравнения методом Рунге-Кутты.

   function [x,y]=RK(y0,a,b,h)

   y(1)=y0;

   x(1)=a;

   for i=1:1:(b-a)/h+1

       x(i+1)=a+i*h;

   end

   for i=1:1:(b-a)/h+1

       k1=f(x(i),y(i));

       k2=f(x(i)+h/2,y(i)+h/2*k1);

       k3=f(x(i)+h/2,y(i)+h/2*k2);

       k4=f(x(i)+h,y(i)+h*k3);

       y(i+1)=y(i)+h/6*(k1+2*k2+2*k3+k4);

   end

   x=x';

   y=y';

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

   Чтобы использовать составленную программу, дополнительно составлена функция:

   function f=f(x,y)

   f=x+cos(y/sqrt(5));

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

   >> [x, y] = RK(2.6, 1.8, 2.8, 0.1) 

   x = 

       1.8000

       1.9000

       2.0000

       2.1000

       2.2000

       2.3000

       2.4000

       2.5000

       2.6000

       2.7000

       2.8000 
 

   y = 

       2.6000

       2.8201

       3.0408

       3.2619

       3.4831

       3.7045

       3.9260

       4.1478

       4.3700

       4.5931

       4.8172

   Для сравнения решений различными способами  построены два графика (рис. 7.1).

   
Рис. 7.1. Графики решения методом Эйлера и методом Рунге-Кутты

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

Информация о работе Решение дифференциальных уравнений