Использование численных методов решения дифференциальных уравнений для тактико-специальных задач
Вариант №21.
Задание на выполнения второй части курсовой работы: Дифференциальное уравнение:
Точное решение уравнения:
Начальные условия: x0 = 0 , y0 =0, xmax=2. Метод решения: метод Эйлера-Коши, Δx = 0,01; 0,005; 0,001. Метод Эйлера-Коши Метод Эйлера-Коши (или усовершенствованный метод Эйлера) является методом второго порядка и заключается в следующем. Интегральная кривая на каждом шаге интегрирования заменяется прямой с тангенсом угла наклона, равным среднему арифметическому тангенсов углов наклона касательных к искомой функции в начале и в конце шага. Вычисления проводятся в следующем порядке: 1. Выбираем шаг интегрирования . 2. Полагаем номер шага . 3. Вычисляем , находим оценку для приращения функции на этом шаге методом Эйлера , , вычисляем среднее арифметическое тангенсов углов наклона и окончательно получаем: . 4. Если , то увеличиваем номер шага на единицу и повторяем п.3. В противном случае переходим к выполнению п.5. 5. Оформляем полученный результат. Достоинство метода – более высокая точность вычисления по сравнению с методом Эйлера. Недостаток – больший объем вычислений правых частей. Таблица идентификаторов :
Схема алгоритма :
6. Листинг программы:
#include<stdio.h> #include<math.h> int s,i; double x, x1, x_max=2, y, d, q; double h[3]={0.01,0.005,0.001}; double k(double x,double y ) { return ((x)/(4+(pow(x,4)))); } double e(double x) { return 0.25*atan(pow(x,2)/2); } double f1=k(x,y); double yw=y+f1*h[i]; double r=x+h[i]; double fl=k(r,yw); int main(void) { FILE*sev; sev=fopen("E:result34.xls","w+"); for (i=0;i<=2;i++) { s=0; y=0; fprintf(sev,"h(%i)=%lf\n",i,h[i]); for(x=0;x<=x_max;x+=h[i]) { s++; x1=x+h[i]; y+=(f1+fl)*h[i]/2; d=y-e(x1);// y- pribl. f(x)- tochnoe printf(" step =%4.i x=%6.4lf \ty=%6.4lf yt=%6.4lf d=%10.8f\n",s,x1,y,e(x1),d);
fprintf(sev," \t step =\t%4.i\t x=\t%10.5lf\t y=\t%10.5lf\t yt=\t%10.5lf\t d=\t%10.5f\n",s,x1,y,e(x1),d); } } fclose(sev); return 0; }
Вывод: Интегрированная среда Visual С позволяет обрабатывать программы, записанные на языке С++ . Для программирования циклических алгоритмов были использованы операторы организации циклов с параметрами, решение использует форматируемый вывод и оператор присваивания, а также использовались операторы вызова функций. Чем больше шаг, тем точнее вычисления.
Популярное: Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Почему стероиды повышают давление?: Основных причин три... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (190)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |