Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.06.2013, 10:12
frankinvini frankinvini вне форума
Прохожий
 
Регистрация: 17.06.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию численные методы, радиусы и прочие радости жизни. помогите, плз!

в общем есть программа, но я не знаю правильно она работает или нет. и надо в ней кусок проверить

Код:
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;
все делается чисто неявным методом, шаг по сетке переменный в геометрической прогрессии-то есть R(i) больше R(i-1) в q раз. хотелось бы узнать, правильно ли я расписал элементы R[i]? и если кто то понимает в численных методах и уравнениях параболического типа (пьезопроводность) не могли бы помочь? в долгу не останусь)

Последний раз редактировалось lmikle, 17.06.2013 в 10:17.
Ответить с цитированием
  #2  
Старый 17.06.2013, 11:47
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Либо вы невнимательно скопировали, либо одно из двух.
Сначала у вас R используется как число, а далее уже как массив.
q^(i) - это вообще непонятно что.
R[i+0.5] - такого быть вообще не может. Индекс массива целое число.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
frankinvini (17.06.2013)
  #3  
Старый 17.06.2013, 12:19
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

надо как-то так
Код:
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  
Старый 17.06.2013, 13:35
frankinvini frankinvini вне форума
Прохожий
 
Регистрация: 17.06.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

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.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:10.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025