ТОП 10:

Обыкновенные дифференциальные уравнения. Численное решение задач с начальными условиями Коши.



Постановка задачи: Дано дифференциальное уравнение второго порядка

y''+B y'+K y =A , где A, B, K - данные параметры д.у.,[a,b] - интервал интегрирования д.у. , h=(b-a)/n - шаг интегрирования д.у. , n - выбранное число разбиений [a,b] на частичные интервалы с шагом hx, y(a) = y0 , y'(a) = y'0 - начальные условия для д.у.. Требуется определить на промежутке [a,b] с шагом hx приближенные значения функций y(x), y'(x), удовлетворяющие д.у. и начальным условиям в табличной форме.

Метод Эйлера
Ввести обозначения y'=z z'+B z+K y=A
Модифицированный метод Эйлера-1 модификация
Ввести обозначения y'=z z'+B z+K y=A
Модифицированный метод Эйлера-2 модификация
Ввести обозначения y'=z z'+B z+K y=A
Метод Рунге-Кутта
Ввести обозначения y'=z z'+B z+K y=A  
Метод Эйлера Программа на языке CИ #include <iostream.h> #include <iomanip.h> #include <math.h> double F(double x,double y,double z) {return (2*x-3-4*z-4*y);}   int main() { double x0,y0,z0,x,y,z,xp,h,Hp,a,b; int kp,n;   cout.precision(5); cout.setf(ios::left);   cout<<"VVedite n.y. x0,y0,z0"<<endl; cin>>x0>>y0>>z0;   cout<<"vvedite a i b"<<endl; cin>>a>>b;   cout<<"vvedite chislo razbien"<<endl; cin>>n;   cout<<"Shag pechati"<<endl; cin>>kp;   cout<< "x"<<setw(10)<<"y"<<setw(10)<<"z"<<endl; cout<<"_______________________________"<<endl; cout<< x0<<setw(10)<<y0<<setw(10)<<z0<<endl;   h=(b-a)/n; Hp=kp*h;     x=x0; xp=x0; while(x<b) { xp=xp+Hp; while(x<xp) {x=x0+h; y=y0+h; z=z0+F(x0,y0,z0)*h; x0=x; y0=y; z0=z; } coutБ<x<<setw(10)<<y<<setw(10)<<z<<endl; } return 0;}
Модифицированный метод Эйлера Программа на языке CИ   #include <iostream.h> #include <iomanip.h> #include <math.h> double F(double x,double y,double z) {return (2*x-3-4*z-4*y);}   int main() { double x0,y0,z0,x1,y1,z1,x,y,z,xp,h,Hp,a,b; int kp,n;   cout.precision(5); cout.setf(ios::left);   cout<<"VVedite n.y. x0,y0,z0"<<endl; cin>>x0>>y0>>z0;   cout<<"vvedite a i b"<<endl; cin>>a>>b;   cout<<"vvedite chislo razbien"<<endl; cin>>n;   cout<<"Shag pechati"<<endl; cin>>kp; cout<<"x"<<setw(5)<<"y"<<setw(5)<<"z"<<endl; cout<<"_____________________________"<<endl; cout<<x0<<setw(5)<<y0<<setw(5)<<z0<<endl;   h=(b-a)/n; Hp=kp*h;     x=x0; xp=x0; while(x<b) { xp=xp+Hp; while(x<xp) {x1=x0+h/2; y1=y0+(h/2)*z0; z1=z0+(h/2)*F(x0,y0,z0); x=x1+h/2; y=y0+h*z1; z=z0+h*F(x1,y1,z1);   x0=x; y0=y; z0=z; } cout<<x<<setw(5)<<y<<setw(5)<<z<<endl; } return 0;}
Программа на языке СИ #include <iostream.h> #include <iomanip.h> #include <math.h> double F(double x,double y,double z) {return (2*x-3-4*z-4*y);}   int main() { double x0,y0,z0,x1,y1,z1,x,y,z,xp,h,Hp,a,b; int kp,n;   cout.precision(5); cout.setf(ios::left);   cout<<"VVedite x0,y0,z0"<<endl; cin>>x0>>y0>>z0;   cout<<"vvedite a i b"<<endl; cin>>a>>b;   cout<<"vvedite chislo razbien"<<endl; cin>>n;   cout<<"Shag pechati"<<endl; cin>>kp;   cout<< "x"<<setw(10)<<"y"<<setw(10)<<"z"<<endl; cout<<"_________________________________"<<endl; cout<< x0<<setw(10)<<y0<<setw(10)<<z0<<endl;   h=(b-a)/n; Hp=kp*h;     x=x0; xp=x0; while(x<b) { xp=xp+Hp; while(x<xp) {x1=x0+h; y1=y0+h*z0; z1=z0+h*F(x0,y0,z0); x=x1; y=y0+h*(z0+z1)/2; z=z0+h*(F(x0,y0,z0)+F(x1,y1,z1))/2;   x0=x; y0=y; z0=z; } cout<< x<<setw(10)<<y<<setw(10)<<z<<endl; } return 0;}
     

Содержание

 

Решение нелинейного уравнения с одной неизвестной. Методы отделения и уточнения корней. 3

Шаговый метод. 4

Метод половинного деления. 5

Метод Ньютона. 6

Метод простой итерации. 7

Решение систем линейных уравнений. Прямые и итерационные методы. 8

Метод Гаусса. 8

Метод простой итерации. 10

Метод Зейделя. 10

Аппроксимация и Интерполяции. 12

Метод наименьших квадратов. 12

Метод неопределённых коэффициентов. 14

Вычисление определённого интеграла. 17

Метод центральных прямоугольников. 18

Метод трапеций. 19

Метод Симпсона. 20

Обыкновенные дифференциальные уравнения. Численное решение задач с начальными условиями Коши. 21

Метод Эйлера. 22

Модифицированный метод Эйлера. 23

Модифицированный метод Эйлера. 235

Литература

1.Павловская Т.А. C/C++Программирование на языке высокого уровня: Учебник для вузов/ Павловская Т.А СПб. Изд.-во «Питер»,2007.

2. Павловская Т.А. C/C++Структурное программирование:практикум./: Павловская Т.А, Ю.В.Щупак СПб.: Изд.-во «Питер»,2007.

Турчак Л.И. Основы численных методов. Изд - во «Наука» Главная редакция Физико-математической литературы, 1987







Последнее изменение этой страницы: 2016-04-08; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 35.172.233.2 (0.006 с.)