You are on page 1of 22

Funciones matemticas (Visual Basic)

Visual Studio 2005 Otras versiones

Personas que lo han encontrado til: 29 de 51 - Valorar este tema Las funciones matemticas de Visual Basic 6 han sido reemplazadas por mtodos equivalentes en la clase System.Math de .NET Framework.

Comentarios
Los mtodos matemticos de .NET Framework funcionan del mismo modo que sus equivalentes de Visual Basic 6, si bien algunos de sus nombres han sufrido ligeras diferencias. As, por ejemplo, el equivalente en .NET Framework de la funcin Atn de Visual Basic 6 es Atan. En la siguiente tabla se detallan los nombres de las funciones matemticas de Visual Basic 6 y sus mtodos equivalentes en .NET Framework:

Funcin de Mtodo en Visual Basic .NET 6 Framework


Abs Atn Abs Atan

Descripcin

Devuelve el valor absoluto de un nmero especificado. Devuelve un valor Double que contiene el ngulo cuya tangente es el nmero especificado.

Cos

Cos

Devuelve un valor Double que contiene el coseno del ngulo especificado.

Exp

Exp

Devuelve un valor Double que contiene e (base de los logaritmos naturales) elevado a la potencia especificada.

Log

Log

Devuelve un valor Double que contiene el logaritmo del nmero especificado. Este mtodo est sobrecargado y puede devolver o bien el logaritmo natural (de base e) del nmero especificado o bien el logaritmo del nmero especificado en una base especificada.

Round

Round

Devuelve un valor de tipo Double que contiene el nmero ms prximo al valor especificado. Existen funciones de redondeo adicionales disponibles como mtodos de los tipos intrnsecos, tales como Round.

Sgn Sin Sqr

Sign Sin Sqrt

Devuelve un valor Integer que indica el signo de un nmero. Devuelve un valor Double que especifica el seno de un ngulo. Devuelve un valor Double que especifica la raz cuadrada de un nmero.

Tan

Tan

Devuelve un valor Double que contiene la tangente de un ngulo.

Adems, la clase matemtica de .NET Framework ofrece constantes y otros mtodos estticos para funciones trigonomtricas, logartmicas y otras funciones matemticas habituales. Todo ello puede utilizarse en un programa de Visual Basic. Para utilizar estas funciones sin calificacin, importe el espacio de nombres System.Math a su proyecto agregando el siguiente cdigo en la parte superior del cdigo fuente: Copiar

'Imports System.Math

Ejemplo
En este ejemplo se utiliza el mtodo Abs de la clase Math para calcular el valor absoluto de un nmero. Copiar

' Returns 50.3. Dim MyNumber1 As Double = Math.Abs(50.3) ' Returns 50.3. Dim MyNumber2 As Double = Math.Abs(-50.3)
En este ejemplo se utiliza el mtodo Atan de la clase Math para calcular el valor de pi. Copiar

Public Function GetPi() As Double ' Calculate the value of pi. Return 4.0 * Math.Atan(1.0) End Function
En este ejemplo se utiliza el mtodo Cos de la clase Math para devolver el coseno de un ngulo. Copiar

Public Function Sec(ByVal angle As Double) As Double

' Calculate the secant of angle, in radians. Return 1.0 / Math.Cos(angle) End Function
En este ejemplo se utiliza el mtodo Exp de la clase Math para devolver e elevado a una potencia. Copiar

Public Function Sinh(ByVal angle As Double) As Double ' Calculate hyperbolic sine of an angle, in radians. Return (Math.Exp(angle) - Math.Exp(-angle)) / 2.0 End Function
En este ejemplo se utiliza el mtodo Log de la clase Math para devolver el logaritmo natural de un nmero. Copiar

Public Function Asinh(ByVal value As Double) As Double ' Calculate inverse hyperbolic sine, in radians. Return Math.Log(value + Math.Sqrt(value * value + 1.0)) End Function
En este ejemplo se utiliza el mtodo Round de la clase Math para redondear un nmero al entero ms prximo. Copiar

' Returns 3. Dim MyVar2 As Double = Math.Round(2.8)


En este ejemplo se utiliza el mtodo Sign de la clase Math para determinar el signo de un nmero. Copiar

' Returns 1. Dim MySign1 As Integer = Math.Sign(12) ' Returns -1. Dim MySign2 As Integer = Math.Sign(-2.4) ' Returns 0. Dim MySign3 As Integer = Math.Sign(0)
En este ejemplo se utiliza el mtodo Sin de la clase Math para devolver el seno de un ngulo. Copiar

Public Function Csc(ByVal angle As Double) As Double ' Calculate cosecant of an angle, in radians. Return 1.0 / Math.Sin(angle) End Function
En este ejemplo se utiliza el mtodo Sqrt de la clase Math para calcular la raz cuadrada de un nmero. Copiar

' Returns 2. Dim MySqr1 As Double = Math.Sqrt(4) ' Returns 4.79583152331272.

Dim MySqr2 As ' Returns 0. Dim MySqr3 As ' Returns NaN Dim MySqr4 As

Double = Math.Sqrt(23) Double = Math.Sqrt(0) (not a number). Double = Math.Sqrt(-4)

En este ejemplo se utiliza el mtodo Tan de la clase Math para devolver la tangente de un ngulo. Copiar

Public Function Ctan(ByVal angle As Double) As Double ' Calculate cotangent of an angle, in radians. Return 1.0 / Math.Tan(angle) End Function

Complex (Estructura) .NET Framework 4 Otras versiones

Silverlight Este tema an no ha recibido ninguna valoracin - Valorar este tema Representa un nmero complejo. Espacio de nombres: System.Numerics Ensamblado: System.Numerics (en System.Numerics.dll) Sintaxis

C# C++ F# VB Copiar [SerializableAttribute]

public struct Complex : IEquatable<Complex>, IFormattable El tipo Complex expone los siguientes miembros. Constructores

Nombre Descripcin Complex Inicializa una nueva instancia de la estructura Complex utilizando el valor real y el valor imaginario especificados. Arriba Propiedades

Nombre Imaginary

Descripcin Obtiene el componente imaginario del objeto Complex actual.

Magnitude

Obtiene la magnitud (o valor absoluto) de un nmero complejo.

Phase

Obtiene la fase de un nmero complejo.

Real Arriba Mtodos

Obtiene el componente real del objeto Complex actual.

Nombre Abs

Descripcin Obtiene el valor absoluto (o magnitud) de un nmero complejo.

Acos

Devuelve el ngulo que es el arco coseno del nmero complejo especificado.

Add

Suma dos valores complejos y devuelve el resultado.

Asin

Devuelve el ngulo que es el arco seno del nmero complejo especificado.

Atan

Devuelve el ngulo que es el arco tangente del nmero complejo especificado.

Conjugate

Calcula el conjugado de un nmero complejo y devuelve el resultado.

Cos

Devuelve el coseno del nmero complejo especificado.

Cosh

Devuelve el coseno hiperblico del nmero complejo especificado.

Divide

Divide un nmero complejo por otro y devuelve el resultado.

Equals(Complex)

Devuelve un valor que indica si la instancia actual y el nmero complejo especificado tienen el mismo valor.

Equals(Object)

Devuelve un valor que indica si la instancia actual y un objeto especificado tienen el mismo valor. (Invalida a ValueType.Equals(Object)).

Exp

Devuelve un nmero e elevado a la potencia especificada por un nmero complejo.

Finalize

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por

la recoleccin de elementos no utilizados. (Se hereda de Object).

FromPolarCoordinates

Crea un nmero complejo a partir de las coordenadas polares de un punto.

GetHashCode

Devuelve el cdigo hash del objeto Complex actual. (Invalida a ValueType.GetHashCode()).

GetType

Obtiene el objeto Type de la instancia actual. (Se hereda de Object).

Log(Complex)

Devuelve el logaritmo natural (en la base e) del nmero complejo especificado.

Log(Complex, Double)

Devuelve el logaritmo del nmero complejo especificado en la base especificada.

Log10

Devuelve el logaritmo en la base 10 del nmero complejo especificado.

MemberwiseClone

Crea una copia superficial del objeto Object actual. (Se hereda de Object).

Multiply

Devuelve el producto de dos nmeros complejos.

Negate

Devuelve el inverso aditivo de un nmero complejo especificado.

Pow(Complex, Double)

Devuelve un nmero complejo especificado elevado a la potencia indicada por un nmero de punto flotante de precisin doble.

Pow(Complex, Complex)

Devuelve el nmero complejo especificado elevado a la

potencia indicada por un nmero complejo.

Reciprocal

Devuelve el inverso multiplicativo de un nmero complejo.

Sin

Devuelve el seno del nmero complejo especificado.

Sinh

Devuelve el seno hiperblico del nmero complejo especificado.

Sqrt

Devuelve la raz cuadrada del nmero complejo especificado.

Subtract

Resta un nmero complejo de otro y devuelve el resultado.

Tan

Devuelve la tangente del nmero complejo especificado.

Tanh

Devuelve la tangente hiperblica del nmero complejo especificado.

ToString()

Convierte el valor del actual nmero complejo a su representacin de cadena equivalente en formato cartesiano. (Invalida a ValueType.ToString()).

ToString(IFormatProvider) Convierte el valor del actual nmero complejo a su representacin de cadena equivalente en formato cartesiano utilizando la informacin de formato especfica de la referencia cultural indicada.

ToString(String)

Convierte el valor del actual nmero complejo a su representacin de cadena equivalente en formato cartesiano utilizando el formato especificado para la parte real y la parte imaginaria.

ToString(String, IFormatProvider)

Convierte el valor del actual nmero complejo a su representacin de cadena equivalente en formato cartesiano utilizando el formato especificado y la informacin de formato especfica de la referencia cultural indicada para la parte real y la parte imaginaria.

Arriba Operadores

Nombre Addition

Descripcin Suma dos nmeros complejos.

Division

Divide el nmero complejo especificado por otro.

Equality

Devuelve un valor que indica si dos nmeros complejos son iguales.

Explicit(BigInteger to Complex)

Define una conversin explcita de un valor BigInteger a un nmero complejo.

Explicit(Decimal to Complex)

Define una conversin explcita de un valor Decimal a un nmero complejo.

Implicit(Byte to Complex)

Define una conversin implcita de un byte sin signo en un nmero complejo.

Implicit(Double to Complex)

Define una conversin implcita de un nmero de punto flotante de precisin doble en un nmero complejo.

Implicit(Int16 to Complex)

Define una conversin implcita de un entero de 16 bits con signo en un nmero complejo.

Implicit(Int32 to Complex)

Define una conversin implcita de un entero de 32 bits con signo en un nmero complejo.

Implicit(Int64 to Complex)

Define una conversin implcita de un entero de 64 bits con signo en un nmero complejo.

Implicit(SByte to Complex)

Define una conversin implcita de un byte con signo en un nmero complejo.

Implicit(Single to Complex)

Define una conversin implcita de un nmero de punto flotante de precisin sencilla en un nmero complejo.

Implicit(UInt16 to Complex)

Define una conversin implcita de un entero de 16 bits sin signo en un nmero complejo.

Implicit(UInt32 to Complex)

Define una conversin implcita de un entero de 32 bits sin signo en un nmero complejo.

Implicit(UInt64 to Complex)

Define una conversin implcita de un entero de 64 bits sin signo en un nmero complejo.

Inequality

Devuelve un valor que indica si dos nmeros complejos no son iguales.

Multiply

Multiplica los dos nmeros complejos especificados.

Subtraction

Resta un nmero complejo de otro nmero complejo.

UnaryNegation

Devuelve el inverso aditivo de un nmero complejo especificado.

Arriba Campos

Nombre

Descripcin

ImaginaryOne Devuelve una nueva instancia de Complex con un nmero real igual a cero y un nmero imaginario igual a uno.

One

Devuelve una nueva instancia de Complex con un nmero real igual a uno y un nmero imaginario igual a cero.

Zero

Devuelve una nueva instancia de Complex con un nmero real igual a cero y un nmero imaginario igual a cero.

Arriba Comentarios

Un nmero complejo es un nmero que consta de una parte de nmero real igual y una parte de nmero imaginario. Un nmero complejo z normalmente se escribe con la forma z = x + yi, donde x e y son nmeros reales, e i es la unidad imaginaria que tiene la propiedad i2 = -1. x representa la parte real del nmero complejo; y representa la parte imaginaria del nmero complejo. El tipo Complex usa el sistema de coordenadas cartesiano (real, imaginario) al crear instancias y manipular nmeros complejos. Un nmero complejo se puede representar como un punto en un sistema de coordenadas bidimensional, que se denomina plano complejo. La parte real del nmero complejo se coloca en el eje X (el eje horizontal) y la parte imaginaria se coloca en el eje Y (el eje vertical). Cualquier punto en el plano complejo tambin se puede expresar dependiendo de su valor absoluto, usando el sistema de coordenadas polares. En coordenadas polares, un punto se caracteriza por dos nmeros: Su magnitud, que es la distancia del punto desde el origen (es decir, 0.0 o el punto en que el eje X y el eje Y realizan la interseccin). Su fase, que es el ngulo entre el eje real y la lnea deducida del origen al punto. Creacin de instancias de un nmero complejo Puede asignar un valor a un nmero complejo de una de las maneras siguientes:

Pasando dos valores Double a su constructor. El primer valor representa la parte real del nmero complejo y el segundo valor representa su parte imaginaria. Estos valores representan la posicin del nmero complejo en el sistema de coordenadas cartesiano bidimensional. Llamando al mtodo Complex.FromPolarCoordinates esttico (Shared en Visual Basic) para crear un nmero complejo a partir de sus coordenadas polares. Asignando un valor Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single o Double a un objeto Complex. El primer valor se convierte en la parte real del nmero complejo y su parte imaginaria es igual a 0. Convirtiendo, en C# en Visual Basic un valor Decimal o BigInteger respectivamente en un objeto Complex. El primer valor se convierte en la parte real del nmero complejo y su parte imaginaria es igual a 0. Asignando el nmero complejo que es devuelto por un mtodo u operador a un objeto Complex. Por ejemplo, Complex.Add es un mtodo esttico que devuelve un nmero complejo que es la suma de dos nmeros complejos y el operador Complex.Addition agrega dos nmeros complejos y devuelve el resultado. En el ejemplo siguiente se muestra cada una de estas cinco maneras de asignar un valor a un nmero complejo. C# VB Copiar

using System; using System.Numerics;

public class Example { public static void Main() { // Create a complex number by calling its class constructor. Complex c1 = new Complex(12, 6);

Console.WriteLine(c1);

// Assign a Double to a complex number. Complex c2 = 3.14; Console.WriteLine(c2);

// Cast a Decimal to a complex number. Complex c3 = (Complex) 12.3m; Console.WriteLine(c3);

// Assign the return value of a method to a Complex variable. Complex c4 = Complex.Pow(Complex.One, -1); Console.WriteLine(c4);

// Assign the value returned by an operator to a Complex variable. Complex c5 = Complex.One + Complex.One; Console.WriteLine(c5);

// Instantiate a complex number from its polar coordinates. Complex c6 = Complex.FromPolarCoordinates(10, .524); Console.WriteLine(c6); } } // The example displays the following output: // // (12, 6) (3.14, 0)

// // // //

(12.3, 0) (1, 0) (2, 0) (8.65824721882145, 5.00347430269914)

Operaciones con nmeros complejos La estructura Complex en .NET Framework incluye miembros que proporcionan la siguiente funcionalidad: Mtodos para comparar dos nmeros complejos para determinar si son iguales. Operadores para realizar las operaciones aritmticas en nmeros complejos. Los operadores Complex le permiten realizar operaciones de suma, resta, multiplicacin, divisin y negacin unaria con nmeros complejos. Mtodos para realizar otras operaciones numricas en nmeros complejos. Adems de las cuatro operaciones aritmtica bsicas, puede elevar un nmero complejo a una potencia especificada, buscar la raz cuadrada de un nmero complejo y obtener el valor absoluto de un nmero complejo. Mtodos para realizar operaciones trigonomtricas en nmeros complejos. Por ejemplo, puede calcular la tangente de un ngulo representada por un nmero complejo. Precisin y nmeros complejos Dos valores de punto flotante de doble precisin representan las partes reales e imaginarias de un nmero complejo. Esto significa que los valores Complex, como valores de punto flotante de precisin doble, puede perder precisin como resultado de operaciones numricas. Esto significa que se puede producir un error en las comparaciones estrictas para la igualdad de dos valores Complex, incluso cuando la diferencia entre los dos valores se debe a una prdida de precisin. Para obtener ms informacin, vea Double. Por ejemplo, al realizar la exponenciacin en el logaritmo de un nmero, se debera devolver el nmero original. Sin embargo, en algunos casos, la prdida de precisin de valores de coma flotante puede producir ligeras diferencias entre los dos valores, como se muestra en el ejemplo siguiente. C#

VB Copiar

Complex value = new Complex(Double.MinValue/2, Double.MinValue/2); Complex value2 = Complex.Exp(Complex.Log(value)); Console.WriteLine("{0} \n{1} \nEqual: {2}", value, value2, value == value2); // The example displays the following output: // (-8.98846567431158E+307, -8.98846567431158E+307) // (-8.98846567431161E+307, -8.98846567431161E+307) // Equal: False

De igual forma, en el ejemplo siguiente, que se calcula la raz cuadrada de un nmero Complex, genera resultados ligeramente diferentes en las versiones de 32 bits y de IA64 de .NET Framework. C# VB Copiar

Complex minusOne = new Complex(-1, 0); Console.WriteLine(Complex.Sqrt(minusOne)); // The example displays the following output: // (6.12303176911189E-17, 1) on 32-bit systems. // (6.12323399573677E-17,1) on IA64 systems.

Nmeros complejos, Infinity y NaN Los valores Double representan las partes reales e imaginarias de un nmero complejo. Adems de ir de Double.MinValue a Double.MaxValue, la parte real o imaginaria de un nmero complejo puede tener un valor de Double.PositiveInfinity, Double.NegativeInfinity o Double.NaN. Double.PositiveInfinity, Double.NegativeInfinity y Double.NaN se propagan en cualquier operacin aritmtica o trigonomtrica. En el ejemplo siguiente, la divisin por Zero genera un nmero complejo cuyas partes reales e imaginarias son ambas Double.NaN. Al realizar la multiplicacin con este valor, como resultado, tambin se genera un nmero complejo cuyas partes reales e imaginarias son Double.NaN. De igual forma, al realizar una multiplicacin que desborda el intervalo del tipo Double se genera un nmero complejo cuya parte real es Double.NaN y cuya parte imaginaria es Double.PositiveInfinity. Al realizar a continuacin la divisin con este nmero complejo, se devuelve un nmero complejo cuya parte real es Double.NaN y cuya parte imaginaria es Double.PositiveInfinity. C# VB Copiar

using System; using System.Numerics;

public class Example { public static void Main() { Complex c1 = new Complex(Double.MaxValue / 2, Double.MaxValue /2);

Complex c2 = c1 / Complex.Zero; Console.WriteLine(c2.ToString()); c2 = c2 * new Complex(1.5, 1.5);

Console.WriteLine(c2.ToString()); Console.WriteLine();

Complex c3 = c1 * new Complex(2.5, 3.5); Console.WriteLine(c3.ToString()); c3 = c3 + new Complex(Double.MinValue / 2, Double.MaxValue / 2); Console.WriteLine(c3); } } // The example displays the following output: // // // // (NaN, NaN) (NaN, NaN) (NaN, Infinity) (NaN, Infinity)

Las operaciones matemticas con nmeros complejos que no son vlidos o que desbordan el intervalo del tipo de datos Double no producen una excepcin. En su lugar, devuelven Double.PositiveInfinity, Double.NegativeInfinity o Double.NaN bajo las condiciones siguientes: La divisin de un nmero positivo por cero devuelve Double.PositiveInfinity. Cualquier operacin que desborde el lmite superior del tipo de datos Double devuelve Double.PositiveInfinity. La divisin de un nmero negativo por cero devuelve Double.NegativeInfinity. Cualquier operacin que desborde el lmite inferior del tipo de datos Double devuelve Double.NegativeInfinity. La divisin de un cero por cero devuelve Double.NaN.

Cualquier operacin que se realice en los operandos cuyos valores son Double.PositiveInfinity, Double.NegativeInfinity o Double.NaN devuelve Double.PositiveInfinity, Double.NegativeInfinityo Double.NaN, dependiendo de la operacin concreta. Observe que esto se aplica a cualquier clculo intermedio realizado por un mtodo. Por ejemplo, la multiplicacin de new Complex(9e308, 9e308) and new Complex(2.5, 3.5) usa la frmula (ac bd) + (ad + bc)i. El clculo del componente real que es el resultado de la multiplicacin evala la expresin 9e308 * 2.5 - 9e308 * 3.5. Cada multiplicacin intermedia en esta expresin devuelve Double.PositiveInfinity y el intento para restar Double.PositiveInfinity de Double.PositiveInfinity devuelve Double.NaN. Dar formato a un nmero complejo De forma predeterminada, la representacin de cadena de un nmero complejo toma la forma (real, imaginario), donde real e imaginario son las representaciones de cadena de los valores Double que forman los componentes real e imaginario del nmero complejo. Algunas sobrecargas del mtodo ToString permiten la personalizacin de las representaciones de cadena de estos valores Double para reflejar las convenciones de formato de una referencia cultural determinada, o para aparecer en un formato determinado definido por una cadena de formato numrico estndar o personalizada. (Para obtener ms informacin, vea Cadenas con formato numrico estndar y Cadenas con formato numrico personalizado). Una de las maneras ms comunes de expresar la representacin de cadena de un nmero complejo toma la forma a + bi, donde a es el componente real del nmero complejo, y b es el componente imaginario del nmero complejo. En ingeniera elctrica, un nmero complejo se expresa ms normalmente como a + bj. Puede devolver la representacin de cadena de un nmero complejo en cualquiera de estos dos formularios. Para ello, defina un proveedor de formato personalizado implementando las interfaces IFormatProvider y ICustomFormatter y, a continuacin, llame al mtodo String.Format(IFormatProvider, String, Object[]). En el ejemplo siguiente se define una clase ComplexFormatter que representa un nmero complejo como una cadena en el formulario de a + bi o a + bj. C# VB Copiar

using System; using System.Numerics;

public class ComplexFormatter :IFormatProvider, ICustomFormatter { public object GetFormat(Type formatType) { if (formatType == typeof(ICustomFormatter)) return this; else return null; }

public string Format(string format, object arg, IFormatProvider provider) { if (arg is Complex) { Complex c1 = (Complex) arg; // Check if the format string has a precision specifier. int precision; string fmtString = String.Empty; if (format.Length > 1) { try { precision = Int32.Parse(format.Substring(1)); } catch (FormatException) { precision = 0; }

fmtString = "N" + precision.ToString(); } if (format.Substring(0, 1).Equals("I", StringComparison.OrdinalIgnoreCase)) return c1.Real.ToString(fmtString) + " + " + c1.Imaginary.ToString(fmtString) + "i"; else if (format.Substring(0, 1).Equals("J", StringComparison.OrdinalIgnoreCase)) return c1.Real.ToString(fmtString) + " + " + c1.Imaginary.ToString(fmtString) + "j"; else return c1.ToString(format, provider); } else { if (arg is IFormattable) return ((IFormattable) arg).ToString(format, provider); else if (arg != null) return arg.ToString(); else return String.Empty; } } }

A continuacin, en el ejemplo siguiente se usa este formateador personalizado para mostrar la representacin de cadena de un nmero complejo. C# VB

Copiar

public class Example { public static void Main() { Complex c1 = new Complex(12.1, 15.4); Console.WriteLine("Formatting with ToString(): c1.ToString()); Console.WriteLine("Formatting with ToString(format): " + c1.ToString("N2")); Console.WriteLine("Custom formatting with I0: "+ "+

String.Format(new ComplexFormatter(), "{0:I0}", c1)); Console.WriteLine("Custom formatting with J3: "+

String.Format(new ComplexFormatter(), "{0:J3}", c1)); } } // The example displays the following output: // Formatting with ToString(): (12.1, 15.4)

// Formatting with ToString(format): (12.10, 15.40) // Custom formatting with I0: // Custom formatting with J3: 12 + 15i 12.100 + 15.400j

Informacin de versin

.NET Framework Compatible con: 4

.NET Framework Client Profile Compatible con: 4

You might also like