Вычислить и округлить до 0,001 функцию - VB
Формулировка задачи:
вычислить и округлить до 0,001 функцию y=cos5u+sun2v где u=lgx+3arctg1 ,v=ctg4+x и если можно куда что вводить это а то я не разобрался еще
Решение задачи: «Вычислить и округлить до 0,001 функцию»
textual
Листинг программы
Public Type Complex R As Double i As Double End Type Public Const PI = 3.14159265358979 Public Const E = 2.71828182845905 Private Const PI2 = PI / 2 '+=====================================================================================================================================+ '| Вещественные числа | '+=====================================================================================================================================+ Public Function LogX(Value As Double, ByVal Base As Double) As Double ' Логарифм вещественного числа по основанию Х LogX = Log(Value) / Log(Base) End Function Public Function Log10(Value As Double) As Double ' Десятичный логарифм вещественного числа Log10 = Log(Value) / 2.30258509299405 End Function Public Function Log2(Value As Double) As Double ' Двоичный логарифм вещественного числа Log2 = Log(Value) / 0.693147180559945 End Function Public Function Ceil(Value As Double) As Double ' Округление в большую сторону Ceil = -Int(-Value) End Function Public Function Floor(Value As Double) As Double ' Округление в меньшую сторону (Int) Floor = Int(Value) End Function Public Function Sec(Value As Double) As Double ' Секанс вещественного числа Sec = 1 / Cos(Value) End Function Public Function Csc(Value As Double) As Double ' Косеканс вещественного числа Csc = 1 / Sin(Value) End Function Public Function Ctg(Value As Double) As Double ' Котангенс вещественного числа Ctg = 1 / Tan(Value) End Function Public Function Asin(Value As Double) As Double ' Арксинус вещественного числа If Value = -1 Then Asin = -PI2: Exit Function If Value = 1 Then Asin = PI2: Exit Function Asin = Atn(Value / Sqr(-Value * Value + 1)) End Function Public Function Acos(Value As Double) As Double ' Арккоснус вещественного числа If Value = -1 Then Acos = PI: Exit Function If Value = 1 Then Acos = 0: Exit Function Acos = Atn(-Value / Sqr(-Value * Value + 1)) + 1.5707963267949 End Function Public Function Asec(Value As Double) As Double ' Арксеканс вещественного числа Asec = 1.5707963267949 - Atn(Sgn(Value) / Sqr(Value * Value - 1)) End Function Public Function Acsc(Value As Double) As Double ' Арккосеканс вещественного числа Acsc = Atn(Sgn(Value) / Sqr(Value * Value - 1)) End Function Public Function Atan2(ByVal Y As Double, ByVal x As Double) As Double 'Возвращает угол, тангенс которого равен отношению двух указанных чисел If Y > 0 Then If x >= Y Then Atan2 = Atn(Y / x) ElseIf x <= -Y Then Atan2 = Atn(Y / x) + PI Else Atan2 = PI / 2 - Atn(x / Y) End If Else If x >= -Y Then Atan2 = Atn(Y / x) ElseIf x <= Y Then Atan2 = Atn(Y / x) - PI Else Atan2 = -Atn(x / Y) - PI / 2 End If End If End Function Public Function Actg(Value As Double) As Double ' Арккотангенс вещественного числа Actg = 1.5707963267949 - Atn(Value) End Function Public Function Sinh(Value As Double) As Double ' Гиперболический синус вещественного числа Sinh = (Exp(Value) - Exp(-Value)) / 2 End Function Public Function Cosh(Value As Double) As Double ' Гиперболический косинус вещественного числа Cosh = (Exp(Value) + Exp(-Value)) / 2 End Function Public Function Tanh(Value As Double) As Double ' Гиперболический тангенс вещественного числа Tanh = (Exp(2 * Value) - 1) / (Exp(2 * Value) + 1) End Function Public Function Ctgh(Value As Double) As Double ' Гиперболический котангенс вещественного числа Ctgh = 1 / (Exp(2 * Value) + 1) / (Exp(2 * Value) - 1) End Function Public Function Sech(Value As Double) As Double ' Гиперболический секанс вещественного числа Sech = 2 / (Exp(Value) + Exp(-Value)) End Function Public Function Csch(Value As Double) As Double ' Гиперболический косеканс вещественного числа Csch = 2 / (Exp(Value) - Exp(-Value)) End Function Public Function Asinh(Value As Double) As Double ' Гиперболический ареасинус вещественного числа Asinh = Log(Value + Sqr(Value * Value + 1)) End Function Public Function Acosh(Value As Double) As Double ' Гиперболический ареакосинус вещественного числа Acosh = Log(Value + Sqr(Value * Value - 1)) End Function Public Function Atanh(Value As Double) As Double ' Гиперболический ареатангенс вещественного числа Atanh = Log((1 + Value) / (1 - Value)) / 2 End Function Public Function Actan(Value As Double) As Double ' Гиперболический ареакотангенс вещественного числа Actan = Log((Value + 1) / (Value - 1)) / 2 End Function Public Function Asech(Value As Double) As Double ' Гиперболический ареасеканс вещественного числа Asech = Log((Sqr(-Value * Value + 1) + 1) / Value) End Function Public Function Acsch(Value As Double) As Double ' Гиперболический ареакосеканс вещественного числа Acsch = Log((Sgn(Value) * Sqr(Value * Value + 1) + 1) / Value) End Function Public Function Max(ByVal Op1 As Double, ByVal Op2 As Double) As Double ' Возвращает максимальное из двух чисел Max = IIf(Op1 > Op2, Op1, Op2) End Function Public Function Min(ByVal Op1 As Double, ByVal Op2 As Double) As Double ' Возвращает минимальное из двух чисел Min = IIf(Op1 < Op2, Op1, Op2) End Function Public Function IEEERemainder(ByVal Op1 As Double, ByVal Op2 As Double) As Double ' Возвращает остаток от деления одного указанного числа на другое указанное число. IEEERemainder = Op1 - (Op2 * Round(Op1 / Op2)) End Function Public Function rMod(ByVal Op1 As Double, ByVal Op2 As Double) As Double ' Возвращает остаток от деления одного указанного числа на другое указанное число. rMod = (Abs(Op1) - (Abs(Op2) * (Int(Abs(Op1) / Abs(Op2))))) * Sgn(Op1) End Function '+=====================================================================================================================================+ '| Комплексные числа | '+=====================================================================================================================================+ Public Function cxOne() As Complex ' R=1,I=0 cxOne.R = 1 End Function Public Function cxImgOne() As Complex ' R=0,I=1 cxOne.i = 1 End Function Public Function cxZero() As Complex ' R=0,I=0 End Function Public Function cxNew(ByVal Real As Double, ByVal Imaginary As Double) As Complex ' Создание нового комплексного числа cxNew.R = Real: cxNew.i = Imaginary End Function Public Function cxPolar(ByVal Magnitude As Double, ByVal Phase As Double) As Complex ' Создание комплексного числа по полярным координатам cxPolar.R = Magnitude * Cos(Phase): cxPolar.i = Magnitude * Sin(Phase) End Function Public Function cxNeg(Op As Complex) As Complex ' Возвращает аддитивную инверсию указанного комплексного числа cxNeg.R = -Op.R: cxNeg.i = -Op.i End Function Public Function cxInv(Op As Complex) As Complex ' Возвращает обратную величину комплексного числа Dim Ab2 As Double Ab2 = Op.R * Op.R + Op.i * Op.i cxInv.R = Op.R / Ab2: cxInv.i = -Op.i / Ab2 End Function Public Function cxAdd(Op1 As Complex, Op2 As Complex) As Complex ' Сложение комплексных чисел cxAdd.R = Op1.R + Op2.R cxAdd.i = Op1.i + Op2.i End Function Public Function cxSub(Op1 As Complex, Op2 As Complex) As Complex ' Вычитание комплексных чисел cxSub.R = Op1.R - Op2.R cxSub.i = Op1.i - Op2.i End Function Public Function cxMul(Op1 As Complex, Op2 As Complex) As Complex ' Умножение комплексных чисел cxMul.R = Op1.R * Op2.R - Op1.i * Op2.i cxMul.i = Op1.R * Op2.i + Op1.i * Op2.R End Function Public Function cxDiv(Op1 As Complex, Op2 As Complex) As Complex ' Деление комплексных чисел Dim R2 As Double, i2 As Double R2 = Op2.R * Op2.R: i2 = Op2.i * Op2.i cxDiv.R = (Op1.R * Op2.R + Op1.i * Op2.i) / (R2 + i2) cxDiv.i = (Op1.i * Op2.R - Op1.R * Op2.i) / (R2 + i2) End Function Public Function cxDgr(Op As Complex, ByVal Degree As Long) As Complex ' Возведение в степень комплексного числа Dim Md As Double, Ar As Double Md = cxMod(Op): Ar = cxArg(Op): Md = Md ^ Degree: Ar = Ar * Degree cxDgr.R = Md * Cos(Ar): cxDgr.i = Md * Sin(Ar) End Function Public Function cxSqr(Op As Complex) As Complex ' Квадратный корень комплексного числа Dim M As Double, A As Double M = Sqr(cxMod(Op)): A = cxArg(Op) / 2 cxSqr.R = M * Cos(A): cxSqr.i = M * Sin(A) End Function Public Function cxMod(Op As Complex) As Double ' Модуль комплексного числа Dim R2 As Double, i2 As Double R2 = Op.R * Op.R: i2 = Op.i * Op.i cxMod = Sqr(R2 + i2) End Function Public Function cxPhase(Op As Complex) As Double ' Фаза комплексного числа cxPhase = Atan2(Op.i, Op.R) End Function Public Function cxArg(Op As Complex) As Double ' Аргумент, эквивалентно фазе If Op.i = 0 Then If Op.R >= 0 Then cxArg = 0 Else cxArg = PI ElseIf Op.R = 0 Then If Op.i >= 0 Then cxArg = PI2 Else cxArg = -PI2 Else If Op.R > 0 Then cxArg = Atn(Op.i / Op.R) ElseIf Op.R < 0 And Op.i > 0 Then cxArg = PI + Atn(Op.i / Op.R) ElseIf Op.R < 0 And Op.i < 0 Then cxArg = -PI + Atn(Op.i / Op.R) End If End If End Function Public Function cxExp(Op As Complex) As Complex ' Возвращает число e, возведенное в степень, определяемую комплексным числом cxExp.R = Exp(Op.R) * Cos(Op.i): cxExp.i = Exp(Op.R) * Sin(Op.i) End Function Public Function cxAddReal(Op1 As Complex, Op2 As Double) As Complex ' Сложение вещественного и комплексного числа cxAddReal.R = Op1.R + Op2 cxAddReal.i = Op1.i End Function Public Function cxSubReal(Op1 As Complex, Op2 As Double) As Complex ' Вычитание из комплексного числа вещественного cxSubReal.R = Op1.R - Op2 cxSubReal.i = Op1.i End Function Public Function cxRealSub(Op1 As Double, Op2 As Complex) As Complex ' Вычитание из действительного числа комплексного cxRealSub.R = Op1 - Op2.R cxRealSub.i = -Op2.i End Function Public Function cxMulReal(Op1 As Complex, Op2 As Double) As Complex ' Умножение комплексного числа на вещественное cxMulReal.R = Op1.R * Op2 cxMulReal.i = Op1.i * Op2 End Function Public Function cxDivReal(Op1 As Complex, Op2 As Double) As Complex ' Деление комплексного числа на вещественное Dim R2 As Double R2 = Op2 * Op2 cxDivReal.R = (Op1.R * Op2) / R2 cxDivReal.i = (Op1.i * Op2) / R2 End Function Public Function cxRealDiv(Op1 As Double, Op2 As Complex) As Complex ' Деление действительного числа на комплексное Dim R2 As Double, i2 As Double R2 = Op2.R * Op2.R: i2 = Op2.i * Op2.i cxRealDiv.R = (Op1 * Op2.R) / (R2 + i2) cxRealDiv.i = (-Op1 * Op2.i) / (R2 + i2) End Function Public Function cxAddImg(Op1 As Complex, Op2 As Double) As Complex ' Сложение комплексного числа и мнимого коэффициента cxAddImg.R = Op1.R cxAddImg.i = Op1.i + Op2 End Function Public Function cxSubImg(Op1 As Complex, Op2 As Double) As Complex ' Вычитание из комплексного числа мнимого коэффициента cxSubImg.R = Op1.R cxSubImg.i = Op1.i - Op2 End Function Public Function cxImgSub(Op1 As Double, Op2 As Complex) As Complex ' Вычитание из мнимого коэффициента комплексного cxImgSub.R = -Op2.R cxImgSub.i = Op1 - Op2.i End Function Public Function cxMulImg(Op1 As Complex, Op2 As Double) As Complex ' Умножение комплексного числа на мнимый коэффициент cxMulImg.R = -Op1.i * Op2 cxMulImg.i = Op1.R * Op2 End Function Public Function cxDivImg(Op1 As Complex, Op2 As Double) As Complex ' Деление комплексного числа на мнимый коэффициент Dim i2 As Double i2 = Op2 * Op2 cxDivImg.R = (Op1.i * Op2) / i2 cxDivImg.i = (-Op1.R * Op2) / i2 End Function Public Function cxImgDiv(Op1 As Double, Op2 As Complex) As Complex ' Деление мнимого коэффициента на комплексное число Dim R2 As Double, i2 As Double R2 = Op2.R * Op2.R: i2 = Op2.i * Op2.i cxImgDiv.R = (Op1 * Op2.i) / (R2 + i2) cxImgDiv.i = (Op1 * Op2.R) / (R2 + i2) End Function Public Function cxEq(Op1 As Complex, Op2 As Complex, _ Optional NumDigitsAfterDecimal As Long = -1) As Boolean ' True - если комплексные числа равны If NumDigitsAfterDecimal = -1 Then If Op1.R = Op2.R And Op1.i = Op2.i Then cxEq = True Else If Round(Op1.R, NumDigitsAfterDecimal) = Round(Op2.R, NumDigitsAfterDecimal) And _ Round(Op1.i, NumDigitsAfterDecimal) = Round(Op2.i, NumDigitsAfterDecimal) Then cxEq = True End If End Function Public Function cxAbs(Op As Complex) As Double ' Абсолютное значение комплексного числа If Op.i = 0 Then cxAbs = 0 ElseIf Op.R > Op.i Then cxAbs = Sqr(1 + (Op.i * Op.i) / (Op.R * Op.R)) ElseIf Op.R <= Op.i Then cxAbs = Sqr(1 + (Op.R * Op.R) / (Op.i * Op.i)) End If End Function Public Function cxConj(Op As Complex) As Complex ' Сопряжение комплексного числа cxConj.R = Op.R cxConj.i = -Op.i End Function Public Function cxLog(Op As Complex) As Complex ' Натуральный логарифм комплексного числа Dim M As Double, A As Double M = cxMod(Op): A = cxArg(Op) cxLog.R = Log(M): cxLog.i = A End Function Public Function cxLogX(Op As Complex, Base As Double) As Complex ' Логарифм комплексного числа по основанию Х Dim M As Double, A As Double, Nc As Complex M = cxMod(Op): A = cxArg(Op): Nc.R = Log(Base) cxLogX.R = Log(M): cxLogX.i = A cxLogX = cxDiv(cxLogX, Nc) End Function Public Function cxSin(Op As Complex) As Complex ' Синус комплексного числа cxSin.R = Sin(Op.R) * Cosh(Op.i): cxSin.i = Cos(Op.R) * Sinh(Op.i) End Function Public Function cxCos(Op As Complex) As Complex ' Косинус комплексного числа cxCos.R = Cos(Op.R) * Cosh(Op.i): cxCos.i = -Sin(Op.R) * Sinh(Op.i) End Function Public Function cxTan(Op As Complex) As Complex ' Тангенс комплексного числа Dim C2 As Double, S2 As Double C2 = Cos(Op.R): C2 = C2 * C2: S2 = Sinh(Op.i): S2 = S2 * S2 cxTan.R = (Sin(Op.R) * Cos(Op.R)) / (C2 + S2) cxTan.i = (Sinh(Op.i) * Cosh(Op.i)) / (C2 + S2) End Function Public Function cxCtg(Op As Complex) As Complex ' Котангенс комплексного числа Dim C2 As Double, S2 As Double C2 = Sin(Op.R): C2 = C2 * C2: S2 = Sinh(Op.i): S2 = S2 * S2 cxCtg.R = (Sin(Op.R) * Cos(Op.R)) / (C2 + S2) cxCtg.i = -(Sinh(Op.i) * Cosh(Op.i)) / (C2 + S2) End Function Public Function cxSec(Op As Complex) As Complex ' Секанс комплексного числа Dim C2 As Double, S2 As Double C2 = Cos(Op.R): C2 = C2 * C2: S2 = Sinh(Op.i): S2 = S2 * S2 cxSec.R = (Cos(Op.R) * Cosh(Op.i)) / (C2 + S2) cxSec.i = -(Sin(Op.R) * Sinh(Op.i)) / (C2 + S2) End Function Public Function cxCsc(Op As Complex) As Complex ' Косеканс комплексного числа Dim C2 As Double, S2 As Double C2 = Sin(Op.R): C2 = C2 * C2: S2 = Sinh(Op.i): S2 = S2 * S2 cxCsc.R = (Sin(Op.R) * Cosh(Op.i)) / (C2 + S2) cxCsc.i = (Cos(Op.R) * Sinh(Op.i)) / (C2 + S2) End Function Public Function cxAsin(Op As Complex) As Complex ' Арксинус комплексного числа cxAsin = cxMulImg(cxLog(cxAdd(cxMulImg(Op, 1), cxSqr(cxRealSub(1, cxMul(Op, Op))))), -1) End Function Public Function cxAcos(Op As Complex) As Complex ' Арккосинус комплексного числа cxAcos = cxAddReal(cxMulImg(cxLog(cxAdd(cxMulImg(Op, 1), cxSqr(cxRealSub(1, cxMul(Op, Op))))), 1), PI2) End Function Public Function cxAtan(Op As Complex) As Complex ' Арктангенс комплексного числа Dim Iz As Complex Iz = cxMulImg(Op, 1) cxAtan = cxMulImg(cxSub(cxLog(cxRealSub(1, Iz)), cxLog(cxAddReal(Iz, 1))), 0.5) End Function Public Function cxActg(Op As Complex) As Complex ' Арккотангенс комплексного числа cxActg = cxMulImg(cxSub(cxLog(cxDiv(cxSubImg(Op, 1), Op)), cxLog(cxDiv(cxAddImg(Op, 1), Op))), 0.5) End Function Public Function cxAsec(Op As Complex) As Complex ' Арксеканс комплексного числа cxAsec = cxAcos(cxDgr(Op, -1)) End Function Public Function cxAcsc(Op As Complex) As Complex ' Арккосеканс комплексного числа cxAcsc = cxAsin(cxDgr(Op, -1)) End Function Public Function cxSinh(Op As Complex) As Complex ' Гиперболический синус комплексного числа cxSinh = cxMulImg(cxSin(cxMulImg(Op, 1)), -1) End Function Public Function cxCosh(Op As Complex) As Complex ' Гиперболический косинус комплексного числа cxCosh = cxCos(cxMulImg(Op, 1)) End Function Public Function cxTanh(Op As Complex) As Complex ' Гиперболический тангенс комплексного числа cxTanh = cxMulImg(cxTan(cxMulImg(Op, 1)), -1) End Function Public Function cxCtgh(Op As Complex) As Complex ' Гиперболический котангенс комплексного числа cxCtgh = cxRealDiv(1, cxTanh(Op)) End Function Public Function cxSech(Op As Complex) As Complex ' Гиперболический секанс комплексного числа cxSech = cxRealDiv(1, cxCosh(Op)) End Function Public Function cxCsch(Op As Complex) As Complex ' Гиперболический косеканс комплексного числа cxCsch = cxRealDiv(1, cxSinh(Op)) End Function Public Function cxAsinh(Op As Complex) As Complex ' Гиперболический ареасинус комплексного числа cxAsinh = cxLog(cxAdd(Op, cxSqr(cxAddReal(cxMul(Op, Op), 1)))) End Function Public Function cxAcosh(Op As Complex) As Complex ' Гиперболический ареакосинус комплексного числа cxAcosh = cxLog(cxAdd(Op, cxMul(cxSqr(cxAddReal(Op, 1)), cxSqr(cxSubReal(Op, 1))))) End Function Public Function cxAtanh(Op As Complex) As Complex ' Гиперболический ареатангенс комплексного числа cxAtanh = cxMulReal(cxLog(cxDiv(cxAddReal(Op, 1), cxRealSub(1, Op))), 0.5) End Function Public Function cxActgh(Op As Complex) As Complex ' Гиперболический ареакотангенс комплексного числа cxActgh = cxMulReal(cxLog(cxDiv(cxAddReal(Op, 1), cxSubReal(Op, 1))), 0.5) End Function Public Function cxAsech(Op As Complex) As Complex ' Гиперболический ареасеканс комплексного числа Dim Z As Complex Z = cxRealDiv(1, Op) cxAsech = cxLog(cxAdd(Z, cxSqr(cxAddReal(cxMul(Z, Z), 1)))) End Function Public Function cxAcsch(Op As Complex) As Complex ' Гиперболический ареакосеканс комплексного числа Dim Z As Complex Z = cxRealDiv(1, Op) cxAcsch = cxLog(cxAdd(Z, cxMul(cxSqr(cxAddReal(Z, 1)), cxSqr(cxSubReal(Z, 1))))) End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д