У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент





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

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

 

 

 

Навчитись розв’язувати диферинціальні рівняння.

Теоретичні відомості

Метод Ейлера покращений має другий порядок точності. На кожному кроці обчислювального процесу знаходять проміжні значення шуканої функції 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.125969 0.066452 0.108373 0.246917 0.465308

0.736839 1.028141 1.303281 1.528192 1.674894

1.724975 1.671896 1.521846 1.293022 1.013424

0.717426 0.441556 0.219983 0.080289 0.040035

0.104555 0.266250 0.505486 0.792971 1.093347

1.369533 1.587306 1.719538 1.749578 1.673346

1.499879 1.250270 0.955096 0.650676 0.374603

0.161102 0.036786 0.017344 0.105554 0.290902

0.550828 0.853475 1.161588 1.437105 1.645854

1.761794 1.770260 1.669819 1.472494 1.202325

0.892442 0.581005 0.306501 0.102992 -0.004113

-0.001228 0.111685 0.321068 0.601387 0.918250

1.232625 1.505646 1.703418 1.801227 1.786623

Метод Ейлера-Кошi:

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.125969 0.066452 0.108373 0.246917 0.465308

0.736839 1.028141 1.303281 1.528192 1.674894

1.724975 1.671896 1.521846 1.293022 1.013424

0.717426 0.441556 0.219983 0.080289 0.040035

0.104555 0.266250 0.505486 0.792971 1.093347

1.369533 1.587306 1.719538 1.749579 1.673346

1.499879 1.250270 0.955096 0.650676 0.374603

0.161101 0.036786 0.017343 0.105554 0.290902

0.550828 0.853474 1.161588 1.437105 1.645854

1.761794 1.770260 1.669819 1.472494 1.202325

0.892442 0.581005 0.306501 0.102992 -0.004113

-0.001228 0.111685 0.321067 0.601386 0.918250

1.232625 1.505646 1.703419 1.801228 1.786624

Метод Рунге-Кута:

0.009067 0.063016 0.182304 0.367519 0.604769

0.870329 1.135103 1.368986 1.544939 1.642470

1.650219 1.567390 1.403892 1.179181 0.919972

0.657063 0.421688 0.241808 0.138787 0.124861

0.201684 0.360128 0.581373 0.839138 1.102806

1.341059 1.525600 1.634510 1.654855 1.584221

1.431000 1.213393 0.957247 0.692988 0.452004

0.262917 0.148185 0.121434 0.185839 0.333748

0.547592 0.801968 1.066663 1.310236 1.503757

1.624242 1.657381 1.599241 1.456729 1.246775

0.994317 0.729343 0.483325 0.285485 0.159319

0.119812 0.171654 0.308686 0.514628 0.765019

1.030117 1.278434 1.480476 1.612247 1.658098

1.612583 1.481111 1.279301 1.031124 0.766058

0.515588 0.309464 0.172166 0.120001 0.159163

0.284999 0.482559 0.728377 0.993254 1.245729

1.455814 1.598556 1.657004 1.624216 1.504089

1.310894 1.067580 0.803047 0.548716 0.334795

0.186693 0.121999 0.148395 0.262743 0.451460

0.692128 0.956162 1.212198 1.429828 1.583201

Висновок

На цій лабораторній роботі я навчився розв’язувати системи дифиренціальних рівнянь.