Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VB6] Комплексные числа(мнимая еденица) на VB


Автор: чемпионка 26.3.2008, 11:00
Приветик всем!Подскажите пожалуйсто!
Подскажите как на Visual Basic записывать комплексные числа или мнимую еденицу?
ПРИМЕР:
x^3-4*x^2+8*x-8=0
Если решить это уравнение, то получаеть соответственно 3 корня. Один из них точный x=2, а два другие комплексные!
На Delphi мне ясно как это сделать, получается
 x1=2, 
x2= 1 + i * 1,73205080756888, 
x3=1 - i * 1,73205080756888.
Подскажите пожалуйста как мне на VB сделать, что бы ответ получался с мнимой еденицей(как покажано в примере)?
Заранее очень благодарна !

Автор: Akina 26.3.2008, 12:02
Встроенной математики для работы с мнимыми числами в VB нет. В Дельфи, кстати, тоже. Используйте сторонние библиотеки.

А вот как ЗАПИСЫВАТЬ - это вы определяетет самостоятельно при форматировании вывода.

Автор: cardinal 26.3.2008, 16:14
http://algolist.manual.ru/maths/misc/complex.php

Автор: чемпионка 27.3.2008, 01:12
Ребята ну привелите пример пожалуйсто!

Автор: cardinal 27.3.2008, 01:44
Читаем
http://forum.vingrad.ru/forum/topic-64749.html
до конца причем. Там в конце намек тонкий... smile 

Автор: kill666 27.3.2008, 11:14
в свое вемя тоже возник такой вопрос. нужны библиотеки.

Автор: чемпионка 27.3.2008, 12:37
Помогите что мне надо написать что ответ был вот такой
x2= 1 + i * 1,73205080756888,
Вот  код программа скажите пожалуйсто где мне надо исправить или добавить, что бы получился выше сказаный ответ.

Код

Private Sub Command1_Click()
Const Pi = 3.14159265358979

 p = (3 * A * C - B * B) / (3 * A * A)
 q = (2 * B * B * B - 9 * A * B * C + 27 * A * A * D) / (27 * A * A * A)
    
S = (4 * (3 * A * C - B * B) * (3 * A * C - B * B) * (3 * A * C - B * B) + (2 * B * B * B - 9 * A * B * C + 27 * A * A * D) * (2 * B * B * B - 9 * A * B * C + 27 * A * A * D)) / (2916 * A * A * A * A * A * A)
Y1 = 0
Y2 = 0
F = 0
If S < 0 Then
If q < 0 Then F = Atn(-2 * Sqr(-S) / q)
If q > 0 Then F = Atn(-2 * Sqr(-S) / q) + Pi
If q = 0 Then F = Pi / 2
x1 = 2 * Sqr(-p / 3) * Cos(F / 3) - B / A / 3
x2 = 2 * Sqr(-p / 3) * Cos((F + 2 * Pi) / 3) - B / A / 3
x3 = 2 * Sqr(-p / 3) * Cos((F + 4 * Pi) / 3) - B / A / 3
End If
If q = 0 Then x3 = -B / A / 3
If S > 0 Then
If -q / 2 + Sqr(S) > 0 Then Y1 = Exp(Log(Abs(-q / 2 + Sqr(S))) / 3)
If -q / 2 + Sqr(S) < 0 Then Y1 = -Exp(Log(Abs(-q / 2 + Sqr(S))) / 3)
If -q / 2 + Sqr(S) = 0 Then Y1 = 0
If -q / 2 - Sqr(S) > 0 Then Y2 = Exp(Log(Abs(-q / 2 - Sqr(S))) / 3)
If -q / 2 - Sqr(S) < 0 Then Y2 = -Exp(Log(Abs(-q / 2 - Sqr(S))) / 3)
If -q / 2 - Sqr(S) = 0 Then Y2 = 0
x1 = Y1 + Y2 - B / A / 3
value1 = -(Y1 + Y2) / 2 - B / A / 3
value2 = (Y1 - Y2) * Sqr(3) / 2
x2, х3 = value1 + -i * value2

End If
If S = 0 Then
If q < 0 Then Y1 = Exp(Log(Abs(-q / 2)) / 3)
If q > 0 Then Y1 = -Exp(Log(Abs(-q / 2)) / 3)
If q = 0 Then Y1 = 0
x1 = 2 * Y1 - B / A / 3
x2 = -Y1 - B / A / 3
x3 = -Y1 - B / A / 3
End If


End Sub

Автор: Akina 27.3.2008, 13:44
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: cardinal 27.3.2008, 14:08
чемпионка, буква i в VB не значит то, что тебе хотелось бы!

Автор: cardinal 28.3.2008, 11:33
Реши сначала любой пример на бумаге, а потом пройди построчно твой код и подумай что вообще происходит и что должно происходить.

Ответ получится в виде строки! а не числа, а i будет буквой в этой строке.

Автор: cardinal 28.3.2008, 22:40
Вот один пример
http://www.freevbcode.com/ShowCode.asp?ID=3434&NoBox=True
вот второй 
http://www.devx.com/vb2themax/Tip/19031
обрати внимание на функцию
Код

' Return the textual description of a complex number

Function Text() As String
    If Imaginary = 0 Then
        Text = LTrim$(Real)
    ElseIf Real = 0 Then
        Text = LTrim$(Imaginary) & "i"
    ElseIf Imaginary > 0 Then
        Text = LTrim$(Real) & "+" & LTrim$(Imaginary) & "i"
    Else
        Text = LTrim$(Real) & LTrim$(Imaginary) & "i"
    End If
End Function

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)