как избавится от комплексности????

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

как избавится от комплексности????

Сообщение alleonid » 29.03.2006 (Ср) 5:54

Мне необходимо запрограммировать действительный корень n уравнения

n*2*fo*(0.82+0.1*sqrt(n*2*fo)/lambda)=m

Это кубическое уравнение если сделать замену n^(1/2) =z

Решаю его в Maple:

solve(n*2*fo*(0.82+0.1*sqrt(n*2*fo)/lambda)=m,n);

Получаю корень без мнимой единицы:

n=(1/30*(33750*sqrt(2)*m*lambda-137842*sqrt(2)*lambda^3+150*sqrt(101250*m^2*lambda^2-827052*m*lambda^4))^(1/3)+1681/15*lambda^2/((33750*sqrt(2)*m*lambda-137842*sqrt(2)*lambda^3+150*sqrt(101250*m^2*lambda^2-827052*m*lambda^4))^(1/3))-41/30*sqrt(2)*lambda)^2/fo

Меняю sqrt на Sqr и вставляю в VB.

При m=0.5; lambda = 0.5 fo =0.1 получается корень n=2.593266377.
Но по формуле с радикалами напрямую это значение получить нельзя - - подкоренное выражение - отрицательное. Однако, если извлечь эти корни и проводить действия с комплексными числами, то мнимые единицы взаимоуничтожаются и получается вещественный результат.
Maple это проделывает, а VB - нет.

Теперь мой вопрос:
есть ли возможность проводить математикой VB действия с комплексными числами (например функция определяющая вещественную часть a числа a+I*b?).Или же выход один - надо подставлять в коды такие формулы, чтобы отрицательных чисел под корнями не было (например - аппроксимировать решение приближенной формулой, или организовать численный итерационный поиск процедурой в VB) ?

Заранее благодарю за совет.

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 29.03.2006 (Ср) 7:38

Не могет VB работать с комплексными числами. Перед взятием корня модуль моставь. И отдельно обрабатывай комплексные числа.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.03.2006 (Ср) 7:55

Или напиши набор классов, реализующий комплексные вычисления.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 193

    TopList