Головна Головна -> Інше українською -> Інформатика, комп'ютери, програмування -> Розв’язування диферинціальних рівнянь

Розв’язування диферинціальних рівнянь

Назва:
Розв’язування диферинціальних рівнянь
Тип:
Інше
Мова:
Українська
Розмiр:
2,79 KB
Завантажень:
433
Оцінка:
 
поточна оцінка 5.0


Скачати цю роботу безкоштовно
Пролистати роботу: 1  2 
Лабораторна робота №
Тема: Розв’язування диферинціальних рівнянь
 
 
 


Навчитись розв’язувати диферинціальні рівняння.
Теоретичні відомості
Метод Ейлера покращений має другий порядок точності. На кожному кроці обчислювального процесу знаходять проміжні значення шуканої функції yiп посередині кожного i-го елементарного відрізка (на відстані пів-кроку, тобто при ti+h/2) за методом Ейлера, а проміжні значення використовують для переходу в наступну точку. Геометрично це означає перехід у кожну наступну точку вздовж дотичної, проведеної до кривої точного розв’язку в середній точці. Формули мають такий вигляд:
yiп = yi + hf(ti, yi)/2;
yi+1 = yi + hf(ti+h/2, yiп).
Метод Ейлера-Коші теж має другий порядок точності. Для переходу в кожну наступну точку враховується кут нахилу дотичної до кривої точного розв’язку в обох крайніх точках (тобто в точках ti i ti+1) кожного елементарного відрізка. Для переходу в кожну наступну точку використовують середнє арифметичне значення тангенсів кутів нахилу дотичних до кривої точного розв’язку (похідних) в крайніх точках. Тут теж обчислюють проміжні значення. Формули мають такий вигляд:
yiп = yi + hf(ti, yi);
yi+1 = yi + h[f(ti+h, yiп) + f(ti, yi)]/2.
Метод Рунге-Кута має четвертий порядок точності. На кожному кроці циклічного обчислювального процесу знаходять допоміжні коефіцієнти a, b, c, d. Формули мають такий вигляд:
a = f(ti, yi);
b = f(ti+h/2, yi + ha/2);
c = f(ti+h/2, yi + hb/2);
d = f(ti+h, yi + hc);
yi+1 = yi + h(a + 2b + 2c + d)/6.
Завдання №8
1 розряд трійкового числа, вибір виду дифрівняння, варіант 0
вид дифрівняння | a3y'''+a2y''+а1y'+a0y=b0
початкові умови | y=y'=y''=0 при t=0
b0 | C0k1k2
a0 | 1+b0
a1 | T1+T3
a2 | T2+T1T3
a3 | T1T2
C0k | a1a2/(a3k1k2)-1/(k1k2)
k1 | 3
k2 | 5
T1 | 0,1
T2 | 0,01
T3 | 0,2
tвст | 2,0
Програма
#include<stdio.h>
float yb[101],y[3],z[3],f[3],a[3],b[3],c[3],d[3];
float k1=3,k2=5,a0,a1,a2,a3,b0,h,c0;
float twst=2,t1=0.1,t2=0.01,t3=0.2;
int i,j,m=3,n=100,l;
Ejler_Pok(),Ejler_Kos(),Run_Kut(),systema();
/* Головна програма  */
main()
{
h=twst/n;
a1=t1+t3;a2=t2+t1*t3;a3=t1*t2;
c0=a1*a2/(k1*k2*a3)-1/(k1*k2);
b0=c0*k1*k2;
a0=1+b0;
l=0;
while(l<3)
{
clrscr();
y[0]=y[1]=y[2]=0;yb[0]=0;
switch(l)
{
case 0:{Ejler_Pok();printf(“Ейлера покращений:\n");break;}
case 1:{Ejler_Kos();printf("Ейлера-Коші:\n");break;}
case 2:{Run_Kut(); printf("Рунне-Кута\n");break;}
}
for(i=1;i<=n;i+=5)
fprintf(stdout,"%f\t%f\t%f\t%f\t%f\n",
yb[i],yb[i+1],yb[i+2],yb[i+3],yb[i+4]);
l++;
bioskey(0);
}
}
/* Система рівнянь */
systema()
{
f[0]=(b0-a0*y[2]-a1*y[1]-a2*y[0])/a3;
f[1]=y[0];
f[2]=y[1];
return;
}
/* Метод Ейлера-Коші */
Ejler_Pok()
{
for(i=1;i<=n;i++)
{
for(j=0;j<m;j++)z[j]=y[j];
systema();
for(j=0;j<m;j++)y[j]=z[j]+h*f[j]/2;
systema();
for(j=0;j<m;j++)y[j]=z[j]+h*f[j];
yb[i]=y[2];
}
return;
}
/* Метод Ейлера-Коші */
Ejler_Kos()
{
float a[4];
for(i=1;i<=n;i++)
{
for(j=0;j<m;j++)z[j]=y[j];
systema();
for(j=0;j<m;j++){a[j]=f[j];y[j]=z[j]+h*a[j];}
systema();
for(j=0;j<m;j++){y[j]=z[j]+h*(a[j]+f[j])/2;}
yb[i]=y[2];
}
return;
}
/* Метод Рунге- Кута */
Run_Kut()
{
for(i=1;i<=n;i++)
{
for(j=0;j<m;j++)z[j]=y[j];
systema();
for(j=0;j<m;j++){a[j]=f[j]*h;y[j]=z[j]+a[j]/2;}
systema();
for(j=0;j<m;j++){b[j]=f[j]*h;y[j]=z[j]+b[j]/2;}
systema();
for(j=0;j<m;j++){c[j]=f[j]*h;y[j]=z[j]+c[j];}
systema();
for(j=0;j<m;j++){d[j]=f[j]*h;y[j]=z[j]+(a[j]+2*(b[j]+c[j])+d[j])/6;}
yb[i]=y[2];
}
return;
}
Результат виконання програми
Метод Ейлера(покращений):
0.000000 0.054400 0.179968 0.374952 0.623338
0.899163 1.171071 1.406969 1.578456 1.664620
1.654802 1.550043 1.363049 1.116696 0.841252
0.570677 0.338444 0.173401 0.096192 0.116680
0.232685 0.430213 0.685144 0.966175 1.238665
1.468904 1.628282 1.696844 1.665790 1.538599
1.330646 1.067343 0.781036 0.507028 0.279232
0.

Завантажити цю роботу безкоштовно
Пролистати роботу: 1  2 



Інше на тему: Розв’язування диферинціальних рівнянь

BR.com.ua © 1999-2017 | Реклама на сайті | Умови використання | Зворотній зв'язок