Страница 1 из 1

Решение дифф.уравнений 2го порядка явным и неявным методами Эйлера

Добавлено: 15 май 2010, 20:25
ogion
Задача скорее математическая чем програмистская

Имеется дифференциальное уравнение:
Y''(t)+5*Y'(t)+10*Y(t)=17

Имеются так же 2 точки Y'(0)=10, Y(0)=5
Так как Y(1)=Y(0)+h*Y'(0) то Y(1) легко находится. Но как найти Y'(1)? Ведь без него не получится двигаться дальше по сетке.

Я сделал так
Y(t)=Y0
Y'(t)=Y1
Y''(t)=Y2 :

Код: Выделить всё

void main(){
        double h=0.1;
        double Y0[1000];
        double Y1[1000];
        double Y2[1000];
        int i=0;
        Y0[0]=5;
        Y1[0]=10;
        for (i=0; i<=997; i++){
                Y0[i+1]=Y0[i]+h*Y1[i];
                Y2[i]=17-10*Y0[i]-5*Y1[i];
                Y1[i+1]=Y1[i]+h*Y2[i];
                if (i%10==0) {printf("\n f(%d)=%f ", i,Y0[i]);}
        }
        getchar();
}
Через несколько шагов получилось что Y(t)=1.7=const что противоречит условию задачи. Я сам думаю что по какой то причине нельзя выражать Y''(t) через 17-5*Y'(t)-10*Y(t)

Но тогда других идей у меня нет (
К неявному методу даже нет смысла приступать. Мануалы читаю уже третий день, толку пока что мало. Буду очень благодарен за обьяснение и еще больше за работающий код для простейшей консольной програмки.