Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
Галинка ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.048 c
9-1076332994
nexxiss
2004-02-09 16:23
2004.06.06
D3D, 2D графика


1-1084803085
SMART_n
2004-05-17 18:11
2004.06.06
Обмен данными между локальными приложениями


6-1082206877
Никита
2004-04-17 17:01
2004.06.06
Соеденение с интернетом средствами Delphi


3-1084428403
Sergey__
2004-05-13 10:06
2004.06.06
Обьясните почему возникает ошибка при измении записи


14-1084601263
Думкин
2004-05-15 10:07
2004.06.06
С днем рождения! 15 мая.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский