Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2012, 22:24   #1
nkl
Новичок
Джуниор
 
Регистрация: 15.06.2012
Сообщений: 1
По умолчанию перевод из maple в delphi рунге-кутта

алгоритм рунге-кутта maple. перевести его в delphi. у меня получается много косяков при переводе.

может поможете

Код:
#Метод Рунге-Кутты для решения дифференциального уравнения
> restart:
> Digits:=40:
> #Задаём число стадий
> s:=4:#Число стадий
> #Задаём функцию
> F:=proc(t,y):
> y+t-t
> end proc:
> #Задаём матрицы А, С и B
> C:=Matrix(s,1):
> C[1,1]:=0:
> C[2,1]:=0.5:
> C[3,1]:=0.5:
> C[4,1]:=1:
> 
> B:=Matrix(1,s):
> B[1,1]:=1/6:
> B[1,2]:=2/6:
> B[1,3]:=2/6:
> B[1,4]:=1/6:
> 
> A:=Matrix(s,s):
> A[2,1]:=1/2:
> A[3,2]:=1/2:
> A[4,3]:=1:
> #Задаём текущий момент времени и шаг
> n:=32:#Количество моментов времени
> t_Nach:=0:#Начало отрезка
> t_Kon:=1:#Конец отрезка
> tao:=(t_Kon-t_Nach)/n:#Тао
> 
> #Задаём значение функции в начальный момент времени
> yt:=1:#Начальный момент
> print(A);
> print(B);
> print(C);
                        [ 0      0     0    0]
                        [                    ]
                        [1/2     0     0    0]
                        [                    ]
                        [ 0     1/2    0    0]
                        [                    ]
                        [ 0      0     1    0]


                      [1/6    1/3    1/3    1/6]


                                [ 0 ]
                                [   ]
                                [0.5]
                                [   ]
                                [0.5]
                                [   ]
                                [ 1 ]

> #Расчитываем вспомогательные наклоны
> K:=Matrix(1,s):
> KKK:=proc(t_Nach,C,K,s,A,tao,yt):
> sum:=0:
> tt:=t_Nach+C[1,1]:
> yy:=yt:
> K[1,1]:=F(tt,yy):
> for i from 1 to s do        
>         for j from 1 by 1 to (i-1)  do
>                 sum:=sum+A[i,j]*K[1,j]:
>         end do:
>         sum:=sum*tao:
>         yyy:=sum+yt:
>         ttt:=t_Nach+C[i,1]*tao:
>         K[1,i]:=evalf(F(ttt,yyy)):
> end do:
> return (K):
> end proc:
> 
> 
Warning, `sum` is implicitly declared local to procedure `KKK`

Warning, `tt` is implicitly declared local to procedure `KKK`

Warning, `yy` is implicitly declared local to procedure `KKK`

Warning, `i` is implicitly declared local to procedure `KKK`

Warning, `j` is implicitly declared local to procedure `KKK`

Warning, `yyy` is implicitly declared local to procedure `KKK`

Warning, `ttt` is implicitly declared local to procedure `KKK`

> 
> 
> yttaoo:=proc(s,B,K,yt,tao):
> sum:=0:
>    for j from 1 to s do
>       sum:=sum+(B[1,j]*K[1,j]):
>    end do:
>    asd:=yt+tao*sum:
>    return(asd):
>    end proc:
> 
> 
Warning, `sum` is implicitly declared local to procedure `yttaoo`

Warning, `j` is implicitly declared local to procedure `yttaoo`

Warning, `asd` is implicitly declared local to procedure `yttaoo`

> Y:=Matrix(1,n):
> for i from 1 by 1 to n do
> K:=KKK(t_Nach,C,K,s,A,tao,yt):
> yt:=yttaoo(s,B,K,yt,tao):
> Y[1,i]:=yt:
> t_Nach:=t_Nach+tao:
> end do:
> print(Y[1,n]);
> 
> 

              2.718941860549627544346086618485529555134

> #Порядок метода (т.к. s=4 порядок должен быть 4)
> finalValue:=Matrix(3,1):
> finalValue[1,1]:=2.728640785790145138341452719247184512105:
> finalValue[2,1]:=2.720906309355404183949589396368652697902:
> finalValue[3,1]:=2.718941860549627544346086618485529555134:
> p:=log[2]((finalValue[2,1]-finalValue[1,1])/(finalValue[3,1]-finalValue[2,1])):

  0.9885895321717369456882271753701817238194,

        0.9885895321717369456882271753701817238194 -

        4.532360141827193809627682945716666810172 I


            p := 1.977179064343473891376454350740363447639

>
nkl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рунге-Кутта-Мерсона Martin00 Общие вопросы Delphi 0 26.05.2011 21:39
Метод Рунге - Кутта в моделировании. (Delphi) Alexandrx Помощь студентам 0 19.05.2010 23:34
Рунге- Кутта на Си Ekатерина Помощь студентам 5 28.04.2010 19:31
Метод Рунге-Кутта (Си) PPPPPP Помощь студентам 2 12.04.2010 02:58
[Delphi] Помогите справиться с задачей по числякам (метод Рунге-Кутта) Unlit Помощь студентам 0 01.10.2009 09:51