Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Обыкновенные дифференциальные уравнения. Численное решение задач с начальными условиями Коши.
Постановка задачи: Дано дифференциальное уравнение второго порядка
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.
|