![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() в общем есть программа, но я не знаю правильно она работает или нет. и надо в ней кусок проверить
Код:
R:=Rs*(1+q); for i:=1 to N - 1 do // цикл по сетке begin R[i]:=Rs*q^(i); R[i-0.5]:=0.5*(R[i]+R[i-1]); R[i+0.5]:=0.5*(R[i+1]+R[i]); V:=0.5*((R[i+0.5])*(R[i+0.5])-(R[i-0.5])*(R[i-0.5])); A[i]:=pepr*dT*((R[i-0.5])/(R[i]-R[i-1])); C[i]:=(V+pepr*dT*(((R[i-0.5])/(R[i]-R[i-1]))-((R[i+0.5])/(R[i+1]-R[i])); B[i]:=Pepr*dT*((R[i+0.5])/(R[i+1]-R[i]); F[i]:=V*P2[i]; R:=R+(R[i]-R[i-1]); end; Последний раз редактировалось lmikle, 17.06.2013 в 10:17. |
#2
|
||||
|
||||
![]() Либо вы невнимательно скопировали, либо одно из двух.
Сначала у вас R используется как число, а далее уже как массив. q^(i) - это вообще непонятно что. R[i+0.5] - такого быть вообще не может. Индекс массива целое число. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
frankinvini (17.06.2013)
|
#3
|
|||
|
|||
![]() надо как-то так
Код:
var R:Real; R_i:Real; R_i_p1:Real; R_i_m1:Real; R_i_p05:Real; R_i_m05:Real; begin R := Rs*(1+q); R_i := Rs; for i:=1 to N-1 do begin R_i_m1 := R_i; R_i := R_i * q; R_i_p1 := R_i * q; R_i_m05 := 0.5*(R_i + R_i_m1); R_i_p05 := 0.5*(R_i_p1 + R_i); // далее заменяем V:=0.5*((R_i_p05)*(R_i_p05)-(R_i_m-05)*(R_i_m05)); A[i]:=pepr*dT*((R_i_m05)/(R_i-R_i_m1)); C[i]:=(V+pepr*dT*(((R_i_m05)/(R_i-R_i_m1))-((R_i_p05)/(R_i_p1-R_i)); B[i]:=Pepr*dT*((R_i_p05)/(R_i_p1-R_i); F[i]:=V*P2[i]; R:=R+(R_i-R_i_m1); end; |
Этот пользователь сказал Спасибо icWasya за это полезное сообщение: | ||
frankinvini (17.06.2013)
|
#4
|
|||
|
|||
![]() R это не массив, это просто расстояние вдоль координатно-временной сетки
переделал как то так: R:=Rs; for i:=1 to N - 1 do begin V[i]:=0.125*Rs*Rs*(q^(2*i))*((q*q+2*q-(2/q)-(1/(q*q))); A:=0.5*pepr*dT*((q+1)/(q-1)); C[i]:=(V[i]+pepr*dT*((q+1)/(q-1))); B:=0.5*pepr*dT*((q+1)/(q-1)); F[i]:=V[i]*P2[i]; R:=R+Rs*(q^(i))*(1-(1/q)); end; здесь избавился от всех непонятных значений типа R(i+-1/2). в этом случае V[i] это просто число, которое меняется в зависимости от i. q^(2*i) это как бы q в степени 2i. C[i] и F[i] также числа. они нужны длф нахождения прогоночных коэффициентов альфа и бетта p.s. есть полный код программы. в нем как раз таки разобраться не могу. если бы кто нибудь объяснил что там такое, был бы очень благодарен p.p.s. программа эта моделирует давление, если что=) Последний раз редактировалось frankinvini, 17.06.2013 в 13:47. |