Vypocita Lagrangeov interpolacny polynom. """ # pocet x n = len(x) # casti polynomu poly = [] assert n == len(fx), 'Dlzka listov x a fx musi byt rovnaka' for i in range(n): # zostroji bazu base = lagrange_base(n - 1, i) # dosadi do bazy hodnoty x base_eval = evaluate_base(base, n, x) # prida cast polynomu poly.append(str(fx[i]) + ' * ' + str(base_eval)) return ' + '.join(poly) if __name__ == '__main__': x = list_input('Zadajte zoznam hodnot x') fx = list_input('Zadajte zoznam funkcnych hodnot fx') r = lagrange(x, fx) print('Polynom je:\n{0}'.format(r))
sum_a += a[i, j] * x1[j] for j in range(i + 1, a.rows): sum_b += a[i, j] * x[j] # vypocet dalsej aproximacie x1[i] = (1 / a[i, i]) * (b[i] - sum_a - sum_b) # vypocet rozdielu prvej a druhej aproximacie (norma) error = norm_error(x1, x) logger.info('x1 = {0}\nx = {1}\nerror = {2}\n'.format( list_as_float(x1), list_as_float(x), float(error))) # skonci pri dosiahnuti presnosti if error <= e: return list_as_float(x1) x = list(x1) if __name__ == '__main__': a = matrix_input('Zadajte maticu a') b = list_input('Zadajte vektor pravej strany b') x = list_input('Zadajte vektor aproximacie x') e = float_input('Zadajte presnost e', default=0.01) r = gaussseidel(a, b, x, e) print('Vysledny vektor:\n{0}'.format(r))