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

Вниз

Ошибка деления на ноль, комплексные функции   Найти похожие ветки 

 
Эренка ©   (2010-04-22 11:36) [0]

Здравствуйте, так вышло, что для диплома пишу программу на Delphi, но его не понимаю,
процедура:
s:=0.5; Ta:=1000; n2=100;
Код:
[CODE]
procedure calc_v0;
 var
   a,b,c,lam,i,a1,a2,a3:variant;
   j:integer;
 begin
 a:=VarComplexCreate;
 a1:=VarComplexCreate;
 a2:=VarComplexCreate;
 a3:=VarComplexCreate;
 b:=VarComplexCreate;
 c:=VarComplexCreate;
 i:=VarComplexCreate;
 i.Imaginary:=1;
 i.real:=0;
 lam:=VarComplexCreate;
 lam:=sqrt(sqrt(0.25*Ta))*(1+i);
 for j:=0 to n2 do
   begin
     a1:={Sech(2*lam)*(}lam*lam+2*exp(s*(1+j*dz))*s*lam*lam+exp(2*s)*(s*s-lam*lam){)*cosh(2*lam)};
     a2:=2*((1+2*s)*lam*lam+exp(2*s)*(s*s-lam*lam))*Cosh(lam-j*dz*lam)/(exp(2*lam)+exp(-2*lam));
     a3:=Sech(2*lam)*s*((exp(2*s)*s*cosh((1+j*dz)*lam)-(exp(s*(1+j*dz))-1)*lam*sinh(2*lam)-
        exp(2*s)*s*(1+2*lam*sinh((1+j*dz)*lam))));
     a:=(a1+a2+a3)/s/s;
      b:=a/lam/(s*s-lam*lam);
      c:=b/(2*lam-tanh(2*lam));
     u0[j]:=c.real;
     v0[j]:=c.imaginary;
   end; [/CODE]
Уже и разбила выражение на кусочки. Ругается на строке с a2: Project Project1.exe raised exception class EZeroDivide with message "Division by zero". Process stoped.
На строке с а1 тоже ругался, пока не убрала часть выражения в скобки {} (сокращается).
Почитала, что дело может быть в переполнении, но что делать с этим..


 
12 ©   (2010-04-22 11:38) [1]

http://translate.google.ru/#en|ru|Project%20Project1.exe%20raised%20exception%20class%20EZeroDivide%20with%20message%20%27Division%20by%20zero%27.%20Process%20stoped.


 
12 ©   (2010-04-22 11:41) [2]

ноль в знаменателе


> для диплома пишу программу на Delphi, но его не понимаю,
>  

кого, диплом или D?
или обоих? :)


 
Эренка ©   (2010-04-22 11:47) [3]

перевести я могу. как ноль? (exp(2*lam)+exp(-2*lam)) - не ноль же?
> кого, диплом или D? или обоих? :)

обоих не понимаю, защититься бы и забыть.


 
12 ©   (2010-04-22 12:05) [4]

не факт, что не 0..
отладчик что кажет?

с комплексными не работал типами..
вот написано
i:=VarComplexCreate;
i.Imaginary:=1;
i.real:=0;
это понятно

lam:=VarComplexCreate;
lam:=sqrt(sqrt(0.25*Ta))*(1+i);
это не понятно
ожидается наверное lam.Imaginary, lam.real ..


 
Плохиш ©   (2010-04-22 12:43) [5]

Интересно, это спорт такой у поколенияидиотикус высшии образования коллекционировать?


 
Игорь Шевченко ©   (2010-04-22 12:52) [6]


> защититься бы и забыть.


ну и защищайся и забывай, мы-то тут причем ?


 
Эренка ©   (2010-04-22 12:53) [7]


> ожидается наверное lam.Imaginary, lam.real ..
не думаю что так, но на всякий случай попробовала-не помогло.

> Плохиш ©   (22.04.10 12:43) [5]
> Интересно, это спорт такой у поколенияидиотикус высшии образования
> коллекционировать?
я учусь. а Ваше сообщение не решает мою проблему и не сделает меня умнее, следовательно зачем оно здесь? может есть что по существу?


 
Игорь Шевченко ©   (2010-04-22 12:54) [8]

Эренка ©   (22.04.10 12:53) [7]


> я учусь


Чему ? Защищаться и забывать или клянчить на форумах ?


 
И. Павел ©   (2010-04-22 13:03) [9]

> Уже и разбила выражение на кусочки.

Плохо разбирали. Разберите на самые маленькие части и выведите их в memo (раз отладчиком пользоваться не умеете). А потом вручную соедините эти части и посмотрите - где делится на ноль.


 
12 ©   (2010-04-22 13:53) [10]


> > ожидается наверное lam.Imaginary, lam.real ..
> не думаю что так, но на всякий случай попробовала-не помогло.

не надо думать, надо знать
lam - что такое? это комплексное число или как? Что про него в дипломе сказано?


 
Эренка ©   (2010-04-22 14:09) [11]


> lam - что такое? это комплексное число или как? Что про
> него в дипломе сказано?

вот же оно: lam:=sqrt(sqrt(0.25*Ta))*(1+i); - комплексное.
разобрала по кусочкам, пошла по шагам.. один раз цикл выполняется, при j=0. далее, j=1, идет ошибка, строка: a211:=lam*lam*Cosh(lam-j*dz*lam)*sech(2*lam);


 
12 ©   (2010-04-22 14:19) [12]


> Cosh(lam-j*dz*lam)*sech(2*lam)

а чему равен sin и cos
lam-j*dz*lam
2*lam
?


 
Эренка ©   (2010-04-22 14:28) [13]

они равны Inaccessible value :-(


 
12 ©   (2010-04-22 14:39) [14]

dz - кто такой, где определен?

зы
Cosh = sin/cos или наоборот, не важно. Видимо кто-то из них = 0.
из-за своего аргумента, ес-но


 
Эренка ©   (2010-04-22 14:48) [15]

dz=1/n2=0.01 - это шаг

> Cosh = sin/cos
Cosh(X) - это гиперболический косинус, (exp(x)+exp(-x))/2, как видите - не ноль.
и тут  экспоненте передают комплексный аргумент, может тут что то не так


 
Омлет ©   (2010-04-22 14:56) [16]

Дай весь код, чтобы можно было скомпилировать и у себя проверить.


 
Эренка ©   (2010-04-22 16:01) [17]

Проблема решается сносом Delphi 6 и установкой Delphi 7, может как-то и по другому, всем спасибо :-)


 
Эренка ©   (2010-04-22 16:01) [18]

Проблема решается сносом Delphi 6 и установкой Delphi 7, может как-то и по другому, всем спасибо :-)



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

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.066 c
15-1263720611
TUser
2010-01-17 12:30
2010.08.27
Книги (самовывоз)


2-1268287795
zod2009
2010-03-11 09:09
2010.08.27
Получить дату первого числа, тякущего месяца


15-1267749283
Дмитрий С
2010-03-05 03:34
2010.08.27
А я и не знал...


2-1274677239
viktooor
2010-05-24 09:00
2010.08.27
Поис в диапазоне дат


15-1274038912
Kerk
2010-05-16 23:41
2010.08.27
Второе место на spbhackday





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский