Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.06;
Скачать: CL | DM;

Вниз

БАЗЫ И ВЫСШАЯ МАТЕМАТИКА   Найти похожие ветки 

 
Галинка ©   (2004-05-14 07:56) [0]

Есть очень заумные формулы..:
j=1,N; i=1,l[j];
r0:=sqrt(sqr(x[i,j])+sqr(y[i,j]));
c1[i,j]:=sqr(0.08*(p1-I[i,j])-p2/Vozved(h,[j],p3));
fi[i,j]:=arctan(y[i,j]/x[i,j]);
c[i,j]:=c1[i,j]*sqr(cos(fi[i,j]-fi0))+sqr(sin(fi[i,j]-fi0));

b[1,1]:=b[1,1]+l[j];
b[2,1]=b[1,2]:=b[1,2]+l[j]*(K[j]-log(4*pi*sqr(r0)));
b[3,1]=b[1,3]:=b[1,3]-log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0);
b[2,2]:=b[2,2]+l[j]*sqr(K[j]-log(4*pi*sqr(r0)));
b[3,2]=b[2,3]:=b[2,3]-(K[j]-log(4*pi*sqr(r0)))*log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0);
b[3,3]:=sqr(log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0));
c[1]:=c[1]+I[i,j];
c[2]:=c[2]+I[i,j]*(K[j]-log(4*pi*sqr(r0)));
c[3]:=c[3]+I[i,j]*log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0);

Данные ко всему этому берутся из таблиц базы со структурой
Epicentry                Punkty_nabludeniya
Id_epic                  Id_epic
Data                     DelX
Time                     DelY
Shir_epic                Inabl
Dolg_epic
H_gip
K_max
Fi_0

Как это все можно реализовать ???

Всем спасибо....


 
Галинка ©   (2004-05-14 08:08) [1]

Подстановки такие:
h[j]=H_gip
K[j]=K_max
fi0[j]=Fi_0 (Извините, fi0 надо читать как fi0[j])

x[i,j]=DelX
y[i,j]=DelY
I[i,j]=Inabl


 
Наталия ©   (2004-05-14 08:18) [2]

Делается это обычным образом:
Из таблиц выбираются нужные записи,
В циклах по i,j подставляются в формулы, результаты выводятся (записываются) по необходимости...


 
Галинка ©   (2004-05-14 08:45) [3]

Для Наталии:
 А по-подробнее...


 
Наталия ©   (2004-05-14 09:01) [4]

Я же не телепат...
А в чем трудность то?
На каком этапе она возникает?
При выборке  данных? Подстановке в формулы?


 
Anatoly Podgoretsky ©   (2004-05-14 09:11) [5]

Данные из таблиц берутся или с помощью FieldByName или Fields[I] или и постоянно созданых полей (на этапе программирования) и используюся напрямую или помещаются во временные переменные, расчеты проводятся обычным путем


 
jack128 ©   (2004-05-14 09:13) [6]

нету тут высшей математики. если Vozved - это возведение степень , то лудше используй Power из модуля Math


 
Галинка ©   (2004-05-14 10:10) [7]

Для Наталии
Можете представить приерный цикл?


 
BillyJeans ©   (2004-05-14 10:26) [8]

а что нужно реализовать то?


 
Галинка ©   (2004-05-14 10:33) [9]

Для BillyJeans

Решить суммы (первый топик)..


 
BillyJeans ©   (2004-05-14 10:38) [10]

DataBase.First;
While not DataBase.EOF do begin
 h[j] := FieldByName("H_gip").AsInteger;
 <...>
 inc(j);
 DataBase.Next;
end;
<формулы...>


 
han_malign ©   (2004-05-14 11:36) [11]

>ВЫСШАЯ МАТЕМАТИКА
- вообще это школьная геометрия(точнее стереометрия), но это вам на форум геодезистов
>БАЗЫ
 для каждого Epicentry[j] находим все Punkty_nabludeniya[i] где Punkty_nabludeniya[i].Id_epic=Epicentry[j].Id_epic - вот вам и [i,j], а дальше к бейзистам, я в БД не силен... (хотя здесь простенький SELECT, возможно JOIN)


 
Sly ©   (2004-05-14 12:26) [12]

2 Галинка ©
Уж не площади ли полигонов ищем?


 
Галинка ©   (2004-05-14 14:25) [13]


procedure TForm1.Button1Click(Sender: TObject);
var
 i, j, k: Integer;
 s: string;

begin
   i:=1;
   DBGrid1.DataSource.DataSet.FindFirst;
   DBGrid2.DataSource.DataSet.FindFirst;
   FieldNames:=DBGrid2.DataSource.DataSet.FieldList;
   SetLength(ParamZeml,DBGrid1.DataSource.DataSet.RecordCount);
   SetLength(ParamPunkty,DBGrid1.DataSource.DataSet.RecordCount);
   for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
    begin
     if k>0 then DBGrid1.DataSource.DataSet.FindNext;
       ParamZeml[k].XEpic:=DBGrid1.DataSource.DataSet.Fields[3].AsFloat;
       ParamZeml[k].YEpic:=DBGrid1.DataSource.DataSet.Fields[4].AsFloat;
       ParamZeml[k].Hgip:=DBGrid1.DataSource.DataSet.Fields[5].AsFloat;
       ParamZeml[k].Kmax:=DBGrid1.DataSource.DataSet.Fields[6].AsFloat;
       ParamZeml[k].Fi0:=DBGrid1.DataSource.DataSet.Fields[7].AsFloat;
       with DBGrid2.DataSource.DataSet do
        begin
          while (DBGrid1.DataSource.DataSet.Fields[0].AsInteger=
                 DBGrid2.DataSource.DataSet.Fields[0].AsInteger) do
           begin
            SetLength(ParamZeml[k].Punkty,i);
            if i>1 then FindNext;
            for j:=2 to FieldNames.Count-1 do
             begin
              ParamZeml[k].Punkty[i-1,j-1]:=Fields[j].AsFloat;
              s:=s+Fields[j].AsString+"  ";
             end;
            ListBox1.Items.Add(s);
            s:="";
            inc(i);
           end;
        end;
    end;
end;


Ошибка после первого пробега, хотя пробегаю всего 31 запись, а он говорит, что достигнут конец файла...


 
Галинка ©   (2004-05-14 14:26) [14]

Удалено модератором


 
Галинка ©   (2004-05-14 14:28) [15]


procedure TForm1.Button1Click(Sender: TObject);
var
 i, j, k: Integer;
 s: string;

begin
   i:=1;
   DBGrid1.DataSource.DataSet.FindFirst;
   DBGrid2.DataSource.DataSet.FindFirst;
   FieldNames:=DBGrid2.DataSource.DataSet.FieldList;
   SetLength(ParamZeml,DBGrid1.DataSource.DataSet.RecordCount);
   SetLength(ParamPunkty,DBGrid1.DataSource.DataSet.RecordCount);
   for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
    begin
     if k>0 then DBGrid1.DataSource.DataSet.FindNext;
       ParamZeml[k].XEpic:=DBGrid1.DataSource.DataSet.Fields[3].AsFloat;
       ParamZeml[k].YEpic:=DBGrid1.DataSource.DataSet.Fields[4].AsFloat;
       ParamZeml[k].Hgip:=DBGrid1.DataSource.DataSet.Fields[5].AsFloat;
       ParamZeml[k].Kmax:=DBGrid1.DataSource.DataSet.Fields[6].AsFloat;
       ParamZeml[k].Fi0:=DBGrid1.DataSource.DataSet.Fields[7].AsFloat;
       with DBGrid2.DataSource.DataSet do
        begin
          while (DBGrid1.DataSource.DataSet.Fields[0].AsInteger=
                 DBGrid2.DataSource.DataSet.Fields[0].AsInteger) do
           begin
            SetLength(ParamZeml[k].Punkty,i);
            if i>1 then FindNext;
            for j:=2 to FieldNames.Count-1 do
             begin
              ParamZeml[k].Punkty[i-1,j-1]:=Fields[j].AsFloat;
              s:=s+Fields[j].AsString+"  ";
             end;
            ListBox1.Items.Add(s);
            s:="";
            inc(i);
           end;
        end;
    end;
end;


Ошибка после первого пробега, хотя пробегаю всего 31 запись, а он говорит, что достигнут конец файла...


 
sniknik ©   (2004-05-14 14:41) [16]

FindFirst -> First
FindNext -> Next

for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do ->
while not DBGrid1.DataSource.DataSet.EOF

конечно если я правильно понял "глюк".


 
Галинка ©   (2004-05-14 14:44) [17]

2 Sniknik

Так тоже было... Вроде тоже глючит


 
Галинка ©   (2004-05-14 14:51) [18]

2 sniknik Глюк как раз со второй таблицей...


 
Petr V. Abramov ©   (2004-05-14 14:59) [19]

лучше сначала с в массивы все перегнать.


 
MU ©   (2004-05-14 15:03) [20]

ParamZeml[k].Fi0:=DBGrid1.DataSource.DataSet.Fields[7].AsFloat;
DBGrid2.DataSource.DataSet.Locate(...)
with DBGrid2.DataSource.DataSet do
...


 
MU ©   (2004-05-14 15:03) [21]

Удалено модератором
Примечание: дубль


 
MU ©   (2004-05-14 15:29) [22]

1. В Вашем коде записи в DBGrid2 должны быть отсортированы по полю Field[0]. Это так?
2. FindNext - тоже самое, что и Next
3. Вставьте перед циклом
DBGrid2.DataSource.DataSet.LocateDBGrid1.DataSource.DataSet.Fields[0].Name, [DBGrid1.DataSource.DataSet.Fields[0].AsInteger], []);
while (DBGrid1.DataSource.DataSet.Fields[0].AsInteger=
                DBGrid2.DataSource.DataSet.Fields[0].AsInteger) do


 
Argon   (2004-05-14 22:18) [23]

Не стоит пользоваться
for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
RecordCount имеет свойство иметь значение строки на которой случайно стоит, лучше использовать
While not DBGrid1.DataSource.DataSet.Eof do
тогда все четко будет



Страницы: 1 вся ветка

Текущий архив: 2004.06.06;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.046 c
6-1081850108
Alexey_
2004-04-13 13:55
2004.06.06
Обработка ошибки компонента TNMHTTP


14-1084854200
wHammer
2004-05-18 08:23
2004.06.06
Кто-нибудь знаком с Microsoft Axapta?


6-1082459141
SergeySS
2004-04-20 15:05
2004.06.06
помогите с WebBrowser


14-1085119817
Nick-From
2004-05-21 10:10
2004.06.06
Считывание из файла


1-1085214015
AlexG
2004-05-22 12:20
2004.06.06
Кто-нибудь встречался с ошибкой Excel?