Ir para conteúdo
Fórum Script Brasil

Leonardo Sochacki

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Leonardo Sochacki

Leonardo Sochacki's Achievements

0

Reputação

  1. Bom dia a todos! Estou tentado utilizar o VBA para realizar um cálculo relativamente extenso, que não se repete (não pode ser feito por loop) e que foi extraído do software matemático Maple(apenas a operação matemática em si, o resto do código eu que fiz). Como o Maple calcula nativamente isso, o resultado que ele devolve é correto, porém, quando eu tento realizar a conta pelo VBA ele me devolve um valor diferente. Tentei algumas alternativas para solucionar o problema porém não tive sorte. Dentre os testes eu: - tentei declarar todas as variáveis "t" das equações como Double. - tentei modificar a expressão no Maple e simplificá-la(mudar as expressões para "t"). - adicionei uma parte do código para conferir se as variáveis que ele utiliza para calcular estão corretas. Eu acredito que algo possa estar fazendo o VBA se perder no meio dessa conta, porém não sei o que. Se alguém puder olhar/ajudar/sugerir algo, ficarei eternamente grato! PS:Entendo um pouco de programação mas não sou programador, então já aviso, meu código pode parecer meio feioso. Tentei anexar o arquivo do VBA aqui mas não consegui. Segue o código abaixo: Private Sub C1() 'Calcula C1 e atribui a B1 da primeira planilha 'Declaração de Variáveis Dim OD As Double, thick As Double, ID As Double Dim E As Double Dim Ine As Double Dim Ei As Double Dim Lm As Double Dim ml As Double, mr As Double Dim rho As Double Dim jr As Double, jl As Double Dim sr As Double, sl As Double Dim Ar As Double Dim Mee As Double Dim re As Double Dim Le As Double Dim Fe As Double Dim beta As Double Dim omega As Double Dim Pi As Double Dim omega_omegan As Double Dim C1 As Double 'Atribuição dos valores 'Na realidade estes valores são extraidos de células do excel, 'para fins demosntrativos eu atribui os valores diretamente OD = 0.22 thick = 0.02 Lm = 6 E = 2 * 10 ^ (11) omega_omegan = 0.8 Pi = 4 * Atn(1) ID = OD - 2 * thick Ine = Pi * (OD ^ (4) - ID ^ (4)) / 64 Ei = E * Ine Ar = Pi * (OD ^ (2) - ID ^ (2)) / 4 rho = 7850 Le = 0.5 beta = 0.617843785182212 Mee = 5 re = 0.2 omega = (beta ^ 2) * (Ei / (rho * Ar)) ^ (1 / 2) Fe = Mee * re * ((omega_omegan * omega) / (2 * Pi)) ^ (2) mr = 200 ml = mr jr = 0 jl = 0 sr = 0 sl = 0 'Exibe os valores que estão sendo usados no cálculo Range("b13").Value = omega Range("b14").Value = beta Range("b15").Value = Ei Range("b16").Value = rho Range("b17").Value = Ar Range("b18").Value = Fe Range("b19").Value = Mee Range("b20").Value = ml Range("b21").Value = mr Range("b22").Value = jl Range("b23").Value = jr Range("b24").Value = sl Range("b25").Value = sr Range("b26").Value = re Range("b27").Value = Le Range("b28").Value = OD Range("b29").Value = ID Range("b30").Value = thick 'Realiza o cálculo de C1 efetivamente t3 = beta * Lm / 2# t4 = WorksheetFunction.Sinh(t3) t5 = sr - Le t7 = sr * t5 * mr t8 = t7 + jr t11 = Sin(t3) t12 = ml * t11 t13 = WorksheetFunction.Cosh(t3) t17 = Cos(t3) t19 = t4 * t4 t23 = beta * beta t24 = t23 * beta t25 = t23 * t23 t26 = t25 * t24 t30 = mr * t5 t31 = t13 * t13 t35 = sl * sl t36 = ml * t35 t38 = (t36 + jl) * rho t48 = t25 * t23 t50 = sl * t5 t51 = sl + sr t54 = sl * jr t55 = jl * Le t58 = jl * mr t59 = t58 * t5 t62 = rho * t17 t63 = t62 * t31 t77 = t5 * t51 * mr t78 = t77 + jr t83 = t62 * t19 t86 = t25 * beta t92 = Ar * Le t95 = jl / 2# t107 = Ar * rho t112 = sl + Le t114 = sl * t112 * ml t116 = Ar * Ar t118 = rho * rho t119 = t118 * t17 t125 = jr / 2# t129 = ml * mr t146 = ml * t112 t149 = sl * ml t159 = t116 * t118 t172 = t116 * Ar t173 = t118 * rho t174 = t172 * t173 t192 = jl * jr t193 = t17 * t17 t204 = t25 * t25 t206 = sr * sr t209 = -jl * t206 - jr * t35 t213 = t192 * mr t214 = (t209 * mr - t192) * ml - t213 t216 = t214 * t11 * Ar t226 = t107 * t13 t232 = t4 * t11 t233 = mr * t206 t255 = ((sr * t51 * mr + jr) * sl * ml + t58 * sr) * Ar * rho t257 = jl + jr t258 = t129 * t257 t259 = -2# * t255 - t258 t261 = t259 * t11 * Ar t272 = t51 * t51 t273 = t272 * mr t282 = 2# * ((t273 + t95 + jr) * ml + (jl + t125) * mr) * t116 * t118 * t193 t305 = Ar * (t36 + t233 + jl + jr) * rho + 2# * t129 * t51 t307 = t305 * t116 * t118 t308 = t11 * t17 t309 = t308 * t31 t311 = t305 * Ar t320 = t308 * t19 t335 = ml + mr t336 = t174 * t335 t349 = t116 * t116 t350 = t118 * t118 t351 = t349 * t350 C1 = -Fe * Ar * ((t8 * jl * ml * t17 * t19 - t4 * t8 * jl * t12 * t13) * t26 + (-t11 * jl * ml * t30 * t31 - t4 * (-2# * t8 * Ar * t38 - jl * ml * t30) * t17 * t13) * t48 + (-((-t50 * t51 * mr - t54 + t55) * ml - t59) * Ar * t63 + 2# * t4 * ml * Ar * (sl * sr * t30 + t55 / 2# + t54) * rho * t11 * t13 + (sl * t78 * ml + t59) * Ar * t83) * t86 + (t12 * Ar * t78 * rho * t31 - 2# * t4 * (t92 * t38 - ml * (t50 * mr - t95)) * Ar * t62 * t13 + t11 * (t77 + jl + jr) * ml * t107 * t19) * t25 + (-(t114 + t7 + jl + jr) * t116 * t119 * t31 - 2# * t4 * ((Le * ml * sl - t7 / 2# - t125) * Ar * rho - t129 * t5) * Ar * rho * t11 * t13 - (t114 + jl) * t116 * t119 * t19) * t24 + (-t11 * t116 * t118 * t146 * t31 - 2# * t4 * (t149 + t30 / 2#) * t116 * t119 * t13 - t11 * (t146 - t30) * t159 * t19) * t23 + (-t4 * t116 * t118 * (t92 * rho + 2# * ml) * t11 * _ t13 + t174 * Le * t17 * t19) * beta + t172 * t17 * t13 * t4 * t173 - t172 * t11 * t31 * t173) * rho / t24 / Ei / (((t192 * t129 * t193 - t192 * t129) * t31 + t192 * ml * mr * t193 * t19) * t204 + (-t216 * t63 - 2# * t4 * (t214 * t193 + (-t209 * mr / 2# + t192 / 2#) * ml + t213 / 2#) * t226 - t216 * t83) * t26 - 4# * t232 * (-Ar * (t233 + jr) * t38 - t129 * (jl * sr + t54)) * t17 * t107 * t13 * t48 + (-t261 * t63 - 2# * t4 * (-t259 * t193 - t255 - t258 / 2#) * t226 - t261 * t83) * t86 + ((-t282 + ((t273 + jr) * ml + t58) * t116 * t118) * t31 + (-t282 + ((t273 + jl + jr) * ml + mr * t257) * t116 * t118) * t19) * t25 + (-t307 * t309 - 2# * t4 * (t311 * rho * t193 - t311 * rho / 2#) * t226 - t307 * t320) * t24 - 4# * t232 * (Ar * (mr * sr + t149) * rho + t129) * t116 * t119 * t13 * t23 + (-t336 * t309 - 2# * t4 * (-t159 * t335 * t193 + t159 * t335 / 2#) * t226 - t336 * t320) * beta + (t351 * t193 - t351) * t31 + t349 * t193 * t19 * t350) / 2# 'Atribui C1 a célula B1 da primeira planilha Worksheets(1).Range("b1") = C1 End Sub
×
×
  • Criar Novo...