예제 #1
0
 def _print_F_i_transformed_denormed(self, i):
     """
     Returns string of F function in special polynomial form
     :param i: an index for Y
     :return: result string
     """
     strings = list()
     constant = 0
     for j in range(3):
         for k in range(len(self.psi[i][j])):
             shift = sum(self._solution.deg[:j]) + k
             raw_coeffs = self._transform_to_standard(self.c[i][j] * self.a[i][shift] * self.psi[i][j][k])
             diff = self.maxX[j][k] - self.minX[j][k]
             mult_poly = np.poly1d([1 / diff, -self.minX[j][k]] / diff)
             add_poly = np.poly1d([1])
             current_poly = np.poly1d([0])
             for n in range(len(raw_coeffs)):
                 current_poly += add_poly * raw_coeffs[n]
                 add_poly *= mult_poly
             current_poly = current_poly * (self.maxY[i] - self.minY[i]) + self.minY[i]
             constant += current_poly[0]
             current_poly[0] = 0
             current_poly = np.poly1d(current_poly.coeffs, variable="(x{0}{1})".format(j + 1, k + 1))
             strings.append(str(_Polynom(current_poly, "(x{0}{1})".format(j + 1, k + 1))))
     strings.append(str(constant))
     return " +\n".join(strings)
예제 #2
0
 def _print_F_i_transformed(self, i):
     """
     Returns string of F function in special polynomial form
     :param i: an index for Y
     :return: result string
     """
     strings = list()
     constant = 0
     for j in range(3):
         for k in range(len(self.psi[i][j])):
             shift = sum(self._solution.deg[:j]) + k
             current_poly = np.poly1d(
                 self._transform_to_standard(self.c[i][j] * self.a[i][shift] * self.psi[i][j][k])[::-1],
                 variable="(x{0}{1})".format(j + 1, k + 1),
             )
             constant += current_poly[0]
             current_poly[0] = 0
             strings.append(str(_Polynom(current_poly, "(x{0}{1})".format(j + 1, k + 1))))
     strings.append(str(constant))
     return " +\n".join(strings)