v1.0
v1.0 v1.0 v1.0 v1.0 v1.0 v1.0 v1.0 v1.0 v1.0 v1.0 v1.0 v1.0
This commit is contained in:
191
Otter/Otter.py
191
Otter/Otter.py
@@ -26,11 +26,10 @@ class Algebra:
|
||||
def __init__(self, function):
|
||||
self.f = function
|
||||
|
||||
def riemann(self,interval):
|
||||
def riemann(self,a,b,n=None):
|
||||
|
||||
a = interval[0]
|
||||
b = interval[1]
|
||||
n = interval[2]
|
||||
if n is None:
|
||||
n = 10**6
|
||||
|
||||
delta = (b-a)/n
|
||||
|
||||
@@ -46,15 +45,14 @@ class Algebra:
|
||||
|
||||
return integral
|
||||
|
||||
def simpson(self, interval):
|
||||
def simpson(self,a,b,n=None):
|
||||
|
||||
if n is None:
|
||||
n = 10**6
|
||||
|
||||
def x(i):
|
||||
return a + i*h
|
||||
|
||||
a = interval[0]
|
||||
b = interval[1]
|
||||
n = interval[2]
|
||||
|
||||
h = (b-a)/n
|
||||
|
||||
eta = 0
|
||||
@@ -81,15 +79,13 @@ class Algebra:
|
||||
def __init__(self,function):
|
||||
self.f = function
|
||||
|
||||
def riemann(self,x_interval,y_interval):
|
||||
def riemann(self,a,b,c,d,n=None,m=None):
|
||||
|
||||
if n is None:
|
||||
n = 10**4
|
||||
|
||||
a = x_interval[0]
|
||||
b = x_interval[1]
|
||||
n = x_interval[2]
|
||||
|
||||
c = y_interval[0]
|
||||
d = y_interval[1]
|
||||
m = y_interval[2]
|
||||
if m is None:
|
||||
m = n
|
||||
|
||||
dx = (b-a)/n
|
||||
dy = (d-c)/m
|
||||
@@ -109,15 +105,13 @@ class Algebra:
|
||||
|
||||
return theta*(dx)*(dy)
|
||||
|
||||
def simpson(self,x_interval,y_interval):
|
||||
def simpson(self,a,b,c,d,n=None,m=None):
|
||||
|
||||
if n is None:
|
||||
n = 10**4
|
||||
|
||||
a = x_interval[0]
|
||||
b = x_interval[1]
|
||||
n = x_interval[2]
|
||||
|
||||
c = y_interval[0]
|
||||
d = y_interval[1]
|
||||
m = y_interval[2]
|
||||
if m is None:
|
||||
m = n
|
||||
|
||||
dx = (b-a)/n
|
||||
dy = (d-c)/m
|
||||
@@ -178,12 +172,10 @@ class Algebra:
|
||||
if function is not None:
|
||||
self.f = function
|
||||
|
||||
def bissec(self, interval):
|
||||
""" invertal = [a,b,e] ; with 'a' being the first value of the interval, 'b' the last value of the interval and 'e' the precision of the procedure. """
|
||||
|
||||
a = interval[0]
|
||||
b = interval[1]
|
||||
e = interval[2]
|
||||
def bissec(self,a,b,e=None):
|
||||
|
||||
if e is None:
|
||||
e = 10**(-6)
|
||||
|
||||
fa = self.f(a)
|
||||
|
||||
@@ -208,10 +200,10 @@ class Algebra:
|
||||
def d(self, x, e):
|
||||
return (self.f(x + e) - self.f(x - e))/(2*e)
|
||||
|
||||
def newton(self, interval):
|
||||
def newton(self,a,e=None):
|
||||
|
||||
a = interval[0]
|
||||
e = interval[1]
|
||||
if e is None:
|
||||
e = 10**(-6)
|
||||
|
||||
fa = self.f(a)
|
||||
da = self.d(a,e)
|
||||
@@ -227,11 +219,10 @@ class Algebra:
|
||||
|
||||
return a
|
||||
|
||||
def bissec_newton(self, interval):
|
||||
def bissec_newton(self,a,b,e=None):
|
||||
|
||||
a = interval[0]
|
||||
b = interval[1]
|
||||
e = interval[2]
|
||||
if e is None:
|
||||
e = 10**(-6)
|
||||
|
||||
fa = self.f(a)
|
||||
|
||||
@@ -271,12 +262,10 @@ class Algebra:
|
||||
def __init__(self, function):
|
||||
self.f = function
|
||||
|
||||
def euler(self, interval):
|
||||
def euler(self,a,y,b,n=None):
|
||||
|
||||
a = interval[0]
|
||||
b = interval[1]
|
||||
y = interval[2]
|
||||
n = int(interval[3])
|
||||
if n is None:
|
||||
n = 10**7
|
||||
|
||||
dx = (b-a)/n
|
||||
|
||||
@@ -289,12 +278,10 @@ class Algebra:
|
||||
|
||||
return y
|
||||
|
||||
def runge(self, interval):
|
||||
def runge(self,a,y,b,n=None):
|
||||
|
||||
a = interval[0]
|
||||
b = interval[1]
|
||||
y = interval[2]
|
||||
n = int(interval[3])
|
||||
if n is None:
|
||||
n = 10**7
|
||||
|
||||
dx = (b-a)/n
|
||||
|
||||
@@ -315,6 +302,59 @@ class Interpolation:
|
||||
self.data = data
|
||||
self.polinomial = self.Polinomial(self.data)
|
||||
|
||||
def minimus(self,x):
|
||||
|
||||
theta = 0
|
||||
# somatorio de x
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
theta += self.data[i][0]
|
||||
|
||||
eta = 0
|
||||
#somatorio de y
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
eta += self.data[i][1]
|
||||
|
||||
sigma = 0
|
||||
#somatorio de xy
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
sigma += self.data[i][0]*self.data[i][1]
|
||||
|
||||
omega = 0
|
||||
#somatorio de x^2
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
omega += self.data[i][0]**2
|
||||
|
||||
|
||||
self.a = (self.data.shape[0]*sigma - theta*eta)/(self.data.shape[0]*omega - (theta**2))
|
||||
|
||||
self.b = (theta*sigma - eta*omega)/((theta**2) - self.data.shape[0]*omega)
|
||||
|
||||
ym = 0
|
||||
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
ym += self.data[i][1]/self.data.shape[0]
|
||||
|
||||
sqreq = 0
|
||||
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
sqreq += ((self.a*self.data[i][0] + self.b) - ym)**2
|
||||
|
||||
sqtot = 0
|
||||
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
sqtot += (self.data[i][1] - ym)**2
|
||||
|
||||
self.r2 = sqreq/sqtot
|
||||
|
||||
return self.a*x + self.b
|
||||
|
||||
class Polinomial:
|
||||
|
||||
def __init__(self, data):
|
||||
@@ -437,57 +477,4 @@ class Interpolation:
|
||||
y += d[i+1][0]*mult
|
||||
i += 1
|
||||
|
||||
return y
|
||||
|
||||
def minimus(self,x):
|
||||
|
||||
theta = 0
|
||||
# somatorio de x
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
theta += self.data[i][0]
|
||||
|
||||
eta = 0
|
||||
#somatorio de y
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
eta += self.data[i][1]
|
||||
|
||||
sigma = 0
|
||||
#somatorio de xy
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
sigma += self.data[i][0]*self.data[i][1]
|
||||
|
||||
omega = 0
|
||||
#somatorio de x^2
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
omega += self.data[i][0]**2
|
||||
|
||||
|
||||
self.a = (self.data.shape[0]*sigma - theta*eta)/(self.data.shape[0]*omega - (theta**2))
|
||||
|
||||
self.b = (theta*sigma - eta*omega)/((theta**2) - self.data.shape[0]*omega)
|
||||
|
||||
ym = 0
|
||||
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
ym += self.data[i][1]/self.data.shape[0]
|
||||
|
||||
sqreq = 0
|
||||
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
sqreq += ((self.a*self.data[i][0] + self.b) - ym)**2
|
||||
|
||||
sqtot = 0
|
||||
|
||||
for i in range(self.data.shape[0]):
|
||||
|
||||
sqtot += (self.data[i][1] - ym)**2
|
||||
|
||||
self.r2 = sqreq/sqtot
|
||||
|
||||
return self.a*x + self.b
|
||||
return y
|
||||
@@ -1,2 +1,2 @@
|
||||
from .Otter import Algebra
|
||||
from .Otter import Interpolation
|
||||
from .Otter import Algebra as algebra
|
||||
from .Otter import Interpolation as interpolation
|
||||
Reference in New Issue
Block a user