-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDiferenciacionNumerica.py
98 lines (78 loc) · 3.72 KB
/
DiferenciacionNumerica.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import numpy as np
class DiferenciacionNumerica:
def __init__(self):
self.x0 = 0
self.funcion = ''
def diferenciacionNumericaDosPuntos(self,funcion,x0,h):
self.funcion = funcion
print(self.funcion)
print("Diferenciacion numerica de dos punto: ")
print("X: ",str(x0))
dif = DiferenciacionNumerica()
resultado = (dif.calculateFx(x0+h,funcion) - dif.calculateFx(x0,funcion))/h
print("Resulatado: ")
return str(resultado)
def diferenciacionNumericaTresPuntosAtras(self,funcion,x0,h):
self.funcion = funcion
print(self.funcion)
print("Diferenciacion numerica de tres puntos atras: ")
print("X: ",str(x0))
dif = DiferenciacionNumerica()
resultado = ((dif.calculateFx(x0-2*h,funcion)-4*dif.calculateFx(x0-h,funcion)+3*dif.calculateFx(x0,funcion))/(2*h))
print("Resulatado: ")
return str(resultado)
def diferenciacionNumericaTresPuntosDelante(self,funcion,x0,h):
self.funcion = funcion
print(self.funcion)
print("Diferenciación numérica con tres puntos adelante: ")
print("X: ",str(x0))
dif = DiferenciacionNumerica()
resultado = ((-dif.calculateFx(x0+2*h,funcion)+4*dif.calculateFx(x0+h,funcion)-3*dif.calculateFx(x0,funcion))/(2*h))
print("Resulatado: ")
return str(resultado)
def diferenciacionNumericaTresPuntosCentral(self,funcion,x0,h):
self.funcion = funcion
print(self.funcion)
print("Diferenciación numérica con tres puntos central: ")
print("X: ",str(x0))
dif = DiferenciacionNumerica()
resultado = ((-dif.calculateFx(x0-h,funcion)+dif.calculateFx(x0+h,funcion))/(2*h))
print("Resulatado: ")
return str(resultado)
def diferenciacionNumericaCincoPuntosCentrada(self,funcion,x0,h):
self.funcion = funcion
print(self.funcion)
print("Diferenciación numérica con cinco puntos centrada: ")
print("X: ",str(x0))
dif = DiferenciacionNumerica()
resultado = ((dif.calculateFx(x0-2*h,funcion)-8*dif.calculateFx(x0-h,funcion)+8*dif.calculateFx(x0+h,funcion)
-dif.calculateFx(x0+2*h,funcion))/(12*h))
return str(resultado)
def diferenciacionNumericaCincoPuntosAdelante(self,funcion,x0,h):
self.funcion = funcion
print(self.funcion)
print("Diferenciación numérica con cinco puntos adelante: ")
print("X: ",str(x0))
dif = DiferenciacionNumerica()
resultado = ((-25*(dif.calculateFx(x0,funcion))+48*(dif.calculateFx(x0+h,funcion))-36*(dif.calculateFx(x0+2*h,funcion))
+16*(dif.calculateFx(x0+3*h,funcion))-3*(dif.calculateFx(x0+4*h,funcion)))/(12*h))
print(resultado)
return str(resultado)
def diferenciacionNumericaCincoPuntosAtras(self,funcion,x0,h):
self.funcion = funcion
print(self.funcion)
print("Diferenciación numérica con cinco puntos atras: ")
print("X: ",str(x0))
dif = DiferenciacionNumerica()
resultado = ((25*(dif.calculateFx(x0,funcion))-48*(dif.calculateFx(x0-h,funcion))+36*(dif.calculateFx(x0-2*h,funcion))
-16*(dif.calculateFx(x0-3*h,funcion))+3*(dif.calculateFx(x0-4*h,funcion)))/(12*h))
print(resultado)
return str(resultado)
def calculateFx(self, value,funcion):
print(funcion)
print(str(value), " " , funcion)
x = value
return eval(funcion)
#dif = DiferenciacionNumerica()
#funcion = 'np.exp(-x)-6*x\r\n'
#dif.diferenciacionNumericaCincoPuntosAdelante(funcion,2,0.1)