Red de conocimiento del abogados - Conocimiento de la marca - Marca diferencial de Newton y código de fórmula de interpolación

Marca diferencial de Newton y código de fórmula de interpolación

Dim aa As Double, bb As Double 'Recibe las variables en ambos extremos del intervalo raíz en findway respectivamente.

Dim x(1) as Double 'recibe las raíces de ercigenway respectivamente.

Método 1.0 er para encontrar raíces reales de ecuaciones cuadráticas - probado

subercigenvay privado (A es simple, B es simple, C es simple)' A, B, C corresponden a dos Coeficientes de una ecuación cuadrática.

Cambiar d a doble precisión

d = b ^ 2 - 4

Si d & lt entonces 0

MsgBox "δδ Menos que 0, no hay raíz real", "Mensaje"

x(0) = 0: x(1) = 0

Then ElseIf d = 0

x(0) = -b / (2 * a): x(1) = x(0)

Otros

x(0)=(-b-Sgn(b )* Sqr(d))/(2 * a):x(1)= c/(a * x(0))

Terminará si...

Conector final

2.1 Findway escanea el intervalo raíz con pasos iguales - probado

Subbúsqueda privada (byval a es simple, byval b es simple, h es doble)' a y b deben ser el punto final del intervalo de escaneo, h es el tamaño del paso.

Dim a1 es doble precisión

a1 = a

Hacer

si f(a 1)* f(a 1+h )< entonces = 0

aa = a1: bb = a1 + h

Conector de salida

Terminará si...

a1 = a1 + h

Bucle mientras a 1 & lt;b

Si a 1 >b entonces

MsgBox "No se puede encontrar el intervalo raíz, por favor pruebe con un tamaño de paso más pequeño"

Junta de salida

Terminará si...

Junta final

2.2 Prueba de raíz de bisección

La función privada es fenfun (byval a es simple, byval b es simple, eps es doble)' A y B son los puntos finales del intervalo raíz y EPS es el error.

Dim x0 es Doble, x1 es Doble, x2 es Doble, f0 es Doble, f1 es Doble, f2 es Doble

x1 = a: x2 = b

Hacer

x0 = (x1 + x2) / 2

f0 = f(x0)

Si f0 = 0, entonces

Exportar Hacer

Otro

f1 = f(x1): f2 = f(x2)

Si F0 * f 1 & lt; /p>

x2 = x0

Otros

x1 = x0

Si... terminará

Si. .. finalizará

Abs(x1 - x2)> ciclo de tiempo

x0 = (x1 + x2) / 2

erfenfun = x0

Función final

2.4 Método tangente de Newton - probado

La función privada Newton fxfun (byvalx0 es doble, eps es doble) es doble' x0 es la raíz cercana, EPS es el error.

Dim x1 es un tipo de doble precisión, f0 es un tipo de doble precisión, f1 es un tipo de doble precisión

x1 = x0

Do

x0 = x1

F0 = f(x0): f1 = fd(x0) 'fd representa la función derivada de f.

Si Abs(f 1)& lt; entonces eps

x1 = x0: Salir Do

Si... terminará

x1 = x0 - f0 / f1

Bucle hasta Abs(x 1-x0)<batería

newtonfxfun = x1

Finalizar función

p>

2.3 Método iterativo acelerado de stediedaifun sefensen (la forma de la ecuación es prueba x-f(x)= 0).

Función privada stediedaifun (byvalx0 como doble, eps1asdouble, eps2asdouble) como doble' x0 es la raíz cerca de la solución analítica, eps1 es el error del resultado de salida y eps2 es el criterio para juzgar si la iteración puede continuar.

Dim y es Doble, z es Doble, x1 es Doble

x1 = x0

Do

x0 = x1

y = f(x0): z = f(y)

Si Abs(z-2 * y+x0)< entonces eps2

MsgBox "Para el Se cumple la condición eps2 y la iteración no puede continuar"

Salir de la función

Terminará si...

x1 = x0 - (y - x0) ^ 2 / (z - 2 * y + x0)

Bucle hasta Abs(x 1-x0)<eps1

stediedaifun = x1

Fin de función

2.5 Método tangente de Newton para resolver la ecuación algebraica de Newton fxnfun n - probado

La función privada Newton fxnfun (a() es simple, eps es doble, x0 es doble) es doble 'a( ) respectivamente Almacene los n coeficientes de la ecuación en orden descendente, EPS es el error y x0 es la raíz más cercana.

Dim k es un número entero, n es un número entero, f0 es una precisión doble, f1 es una precisión doble, x1 es una precisión doble

n = Sin consolidar (a)

x1 = x0

Hacer

x0 = x1

f0 = a(0): f1 = f0

Para k = 1 a n - 1

f0 = a(k) + f0 * x0

f1 = f0 + f1 * x0

Siguiente k

f0 = a(n) + f0 * x0

x1 = x0 - f0 / f1

Bucle hasta Abs(x 1-x0)& lt; /p >

newtonfxfun = x 1

Función final

2.6 método de corte de acordes linecutfun - probado

Función privada corte de línea divertido (byval x0 es doble , byval x1 es doble, eps es doble, n es largo) es doble' n es el límite del número de iteraciones, x0 y x 1 son los puntos finales del intervalo raíz y EPS es el error.

Etiquete f0 como Doble, f1 como Doble y f2 como Doble

Dim x2 es Doble, I es Largo

f0 = f(x0) : f1 = f(x1)

Para i = 1 a n

x2 = x 1-(x 1-x0)* f 1/(f 1-F0)

f2 = f(x2)

Si Abs(F2)< entonces eps

Salir para...

Si... terminará

x0 = x 1:x 1 = x2:F0 = f 1:f 1 = F2

Siguiente I

Si i = n + 1, entonces

MsgBox "El número de cálculos requeridos es demasiado bajo para cumplir con los requisitos de precisión"

Terminará si...

linecutfun = x2

Función final

4.1 Polinomio de interpolación lagrangiana - probado.

La función privada lagrangeczfun (a() es doble, byval u es doble) almacena n+1 nodos para doble 'a (1, n), u es el punto de interpolación.

Dim i es un número entero, j es un número entero, n es un número entero

Dim l es Doble, v es Doble

v = 0

n = UBound(a, 2)

Para j = 0 a n

l = 1#

Para i = 0 a n

Si i = j, entonces ve a hulu

l = l * (u - a(0,i)) / (a(0,j) - a(0,I) ))

hulue:

Siguiente yo

v = v + l * a(1, j)

Siguiente j

Función de Lagrange = v

Función final

4.2 Método de interpolación de Newton - probado

Función privada newtonczfun (a() es doble, u es double) almacena n+1 nodos para double 'a (1, n), u es el punto de interpolación.

Dim n es un número entero, I es un número entero, j es un número entero, k es un número entero

Dim z() es Doble, f() es Doble, v es Doble

n = UBound(a, 2)

ReDim z(n), f(n)

Para i = 0 a n

z( i) = a(1,I)

Siguiente i

Para i = 1 a n

k = k + 1

Para j = 1 a n

f(j) = (z(j) - z(j - 1)) / (a(0,j) - a(0,j - k))

Siguiente j

Para j = 1 a n

z(j) = f(j)

Siguiente j

Siguiente i

f(0) = a(1,0)

v = 0

Para i = n a 0 Tamaño del paso - 1

v = v * (u - a(0,i)) + f(i)

Siguiente i

newtonczfun = v

Función final

4.3 hermiteczfun Prueba de interpolación de Hermite

Función privada Hermiteczfun (a() es doble, FD() es doble, U es doble) es doble ' a (1, n) almacena n+1 nodos, fd(n) almacena los valores derivados de n+1 nodos y U es el punto de interpolación.

Dim l() es Doble, ld() es Doble, g() es Doble, h() es Doble, aim es Doble

Dim n es un número entero, I es un número entero, j es un número entero

n = independiente (a)

ReDim l(n), ld(n), g(n), h(n)

objetivo = 0

Para i = 0 a n

l(i) = 1: ld(i) = 0

Para j = 0 a n

Si j = i, entonces vaya a hulu

l(i) = l(i) * (u - a(0,j)) / (a( 0 , i) - a(0, j))

ld(i) = ld(i) + 1 / (a(0, i) - a(0, j))

hulue:

Siguiente j

g(i) = (1 + 2 * (a(0, i) - u) * ld(i)) * l( i) * l(i)

h(i) = (u - a(0,i)) * l(i) * l(i)

objetivo = objetivo + g(i) * a(1,i) + h(i) * fd(i)

Siguiente i

hermiteczfun = objetivo

Fin de función

5 2 .1 método de integración de pasos variables tixingjfun - probado

La función privada tixingjfff (A es simple, B es simple, eps es doble, M es larga) es doble 'A y B son los límites superior e inferior de integración, EPS es el error y M es el número máximo de cálculos.

Dim h es Doble, t1 es Doble, t2 es Doble, t es Doble, hh es Doble

Dim n As Long: n = 1

h = b - a: t1 = h * (f(a) + f(b)) / 2

Hacer

t = 0

Para i = 1 a n

t = t + f(a + (i - 0.5) * h)

Siguiente i

hh = h * t

p>

t2 = (t1 + hh) / 2

Si Abs(T2-t 1)<eps entonces sal de Do

t1 = t2: h = h / 2: n = 2 * n

Ciclo hasta n & gt2 * m

Si n & gt entonces 2 * m

MsgBox "Muy pocos cálculos, no cumple con los requisitos de error"

Terminará si...

tixingjffun = t2

Finalizar función

5.2.2 Paso variable Método integral de Simpson largo - probado

La función privada simplesonjfun (A es simple, B es simple, eps es doble, M es larga) es doble 'A y B son los límites superior e inferior de la integral , EPS es el error, M es el número máximo de cálculos.

Dim n tiene la misma longitud, I tiene la misma longitud

Dim h es Doble, t1 es Doble, t2 es Doble, hh es Doble, s1 es Doble, s2 es Doble

n = 1:h = b-a:t 1 = h *(f(a)+f(b))/2

hh = h *(f((a+ b)/2 )):s 1 =(t 1+2 * hh)/3

Hacer

n = 2 * n: h = h / 2: t2 = ( t1 + hh) / 2

t = 0

Para i = 1 a n

t = t + f(a + (i - 0.5) * h)

Siguiente I

hh = t * h

s2 = (t1 + 2 * hh) / 3

Si Abs (S2- s 1)<eps y luego salga Do

t1 = t2: s1 = s2

Ciclo hasta n & gtm

Si n & gtM Entonces MsgBox" El número de cálculos es demasiado pequeño y no cumple con los requisitos de error"

simpsonjffun = s2

Función final

5.3 Método integral de Romberg

Privado La función rombergjfun (a es simple, b es simple, eps es doble) es doble

Representa k como un número entero, n como un número entero y h como una precisión doble

k = 0 : n = 1: h = b - a

Función final

Encontrar la primera derivada - probada

Función privada ds 1 fun(x0 es simple, eps es doble) es doble' x0 es el punto de derivación y EPS es el error.

Dim h es Doble, t1 es Doble, t2 es Doble

h = 1:t 1 =(f(xh)-f(x0-h))/( 2 * h)

h = h/2:T2 =(f(xh)-f(x0-h))/(2 * h)

Hacer mientras abdominales (t2 - t1)>Batería

t1 = t2

h = h / 2

t2 = (f(x0 + h) - f(x0 - h)) / (2 * h)

Anillo

ds1fun = t2

Función final

5 2 ds2fun Segundo. -derivada de orden - probada

Función privada ds 2 fun (x0 es simple, eps es doble) asdouble' x0 es la derivada, EPS es el error.

Dim h es Doble, t1 es Doble, t2 es Doble

h = 1:t 1 =(f(xh)+f(x0-h)-2 * f(x0))/(h * h)

h = h/2:T2 =(f(xh)+f(x0-h)-2 * f(x0))/( h * h)

Hacer mientras Abs(t2 - t1)>Batería

t1 = t2

h = h / 2

T2 =(f(xh)+f(x0-h)-2 * f(x0))/(h * h)

Anillo

ds2fun = t2

Finalizar función