def main(): args = argparser().parse_args() data = read_data(args.source) if len(data) == 0: print('Error: No data, not numeric data or not expected data.'); return False result = tomas_method(data) if result != None: write_data(args.output, result) else: print('Error: Algorithm is unstable for this system of linear algebraic equations.') return False print('Success!')
def __init__(self, keys, values, extra): sys.path.insert(0, "..\sole") from sole import tomas_method if len(keys) == len(values) and len(extra[0]) == len(extra[1]): self.__n = len(keys) self.__keys = [x for x in keys] self.__values = [x for x in values] self.__extra[0] = [x for x in extra[0]] self.__extra[1] = [x for x in extra[1]] else: raise ValueError('Invalid mapping from keys to values.') moment_im = [0]+[self.__getH(i-1)/(self.__getH(i-1)+self.__getH(i)) for i in range(1, self.__n-1)]+[self.__extra[1][0]] moment_i = [self.__extra[0][0]]+[2 for i in range(self.__n-2)]+[self.__extra[1][1]] moment_ip = [self.__extra[0][1]]+[self.__getH(i)/(self.__getH(i-1)+self.__getH(i)) for i in range(1, self.__n-1)]+[0] d = [extra[0][2]]+[6/(self.__getH(i-1)+self.__getH(i))*((self.__values[i+1]-self.__values[i])/self.__getH(i)-(self.__values[i]-self.__values[i-1])/self.__getH(i-1)) for i in range(1, self.__n-1)]+[extra[1][2]] self.__moment = tomas_method([moment_im, moment_i, moment_ip, d])