Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
KPEATOP
-
- Бывалый

-
-
- Сообщения: 291
- Зарегистрирован: 02.12.2002 (Пн) 16:33
- Откуда: Russia
KPEATOP » 15.09.2009 (Вт) 7:24
Доброе утро всем!
Кто-нибудь может подсказать почему не идет расчет по формуле:
Lambda = 64 / Re * (1 - Delta) ^ 2 / (1 + Delta ^ 2 + (1 - Delta ^ 2) / Log(Delta)) * (1 + u / Vp * (-0.5 / Log(Delta) - Delta ^ 2 / (1 - Delta ^ 2)))
Возникает ошибка:
Run-time error '16':
Expression too complex
Все переменные в формуле имеют тип double.
Разбиваю эту формулу на три множителя, все нормально считает без ошибок:
a1 = 64 / Re
a2 = (1 - Delta) ^ 2 / (1 + Delta ^ 2 + (1 - Delta ^ 2) / Log(Delta))
a3 = (1 + u / Vp * (-0.5 / Log(Delta) - Delta ^ 2 / (1 - Delta ^ 2)))
Lambda = a1 * a2 * a3
Из-за чего так может быть ? Ума не приложу? Подскажите, если знаете.
Вечность пахнет нефтью
-
alibek
-
- Большой Человек

-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 15.09.2009 (Вт) 7:56
Expression too complex
Lasciate ogni speranza, voi ch'entrate.
-
Александр_ФФ
-
- Обычный пользователь

-
-
- Сообщения: 93
- Зарегистрирован: 23.11.2008 (Вс) 11:09
- Откуда: Северодвинск
-
Александр_ФФ » 15.09.2009 (Вт) 8:18
Мне кажется, что интерпритатор формулы не может взять такое сложное выражение. столько умножить и делить -я сам запутался в последовательности действий.
Попробуйте отдельно написать чилситель и знаменатель, не смешивая * / * /
Хотя у меня Ваша формула считается. Может исходные данные "запредельные"?
-
KPEATOP
-
- Бывалый

-
-
- Сообщения: 291
- Зарегистрирован: 02.12.2002 (Пн) 16:33
- Откуда: Russia
KPEATOP » 15.09.2009 (Вт) 8:21
Александр_ФФ писал(а):Мне кажется, что интерпритатор формулы не может взять такое сложное выражение. столько умножить и делить -я сам запутался в последовательности действий.
Попробуйте отдельно написать чилситель и знаменатель, не смешивая * / * /
Хотя у меня Ваша формула считается. Может исходные данные "запредельные"?
Когда я на три множетеля разбил, у меня без ошибки считает. Что касается сложной формулы, у меня и посложнее были, нормально считало
Вечность пахнет нефтью
-
Александр_ФФ
-
- Обычный пользователь

-
-
- Сообщения: 93
- Зарегистрирован: 23.11.2008 (Вс) 11:09
- Откуда: Северодвинск
-
Александр_ФФ » 15.09.2009 (Вт) 8:45
Разбил на числитель и знаменатель
lambda2 = (64 * (1 + u * (-0.5 / Log(delta) - delta ^ 2 / (1 - delta ^ 2)) / vp) * (1 - delta) ^ 2) / (re * (1 + delta ^ 2 + (1 - delta ^ 2) / Log(delta)))
ответ даёт такой же, как и исходная формула.
Исходные данные подскажете? может в них чё-то?
Чем не устраивает вариант с а1*а2*а3 ?
-
Viper
-
- Артефакт VBStreets

-

-
- Сообщения: 4394
- Зарегистрирован: 12.04.2005 (Вт) 17:50
- Откуда: Н.Новгород
-
Viper » 15.09.2009 (Вт) 10:02
Ответили же тебе
alibek писал(а):Expression too complex
- слишком сложное выражение.
Весь мир матрица, а мы в нем потоки байтов!
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot], SemrushBot, Yandex-бот и гости: 1