예제 #1
0
    def _lbcg_least_square_exp(self):
        """ """
        lbcg_solver_obj = LBCG()
        self._final_x_a, self._final_r_a, self._residual_hist_a = \
                 lbcg_solver_obj.lbcg_solver_least_square(self._mat, self._SB, self._SX, 8, self._tol, self._maxiter)
        self._final_x_b, self._final_r_b, self._residual_hist_b = \
                 lbcg_solver_obj.lbcg_solver_least_square(self._mat, self._SB, self._SX, 18, self._tol, self._maxiter)

        cbcg_solver_obj = CBCG()
        self._final_x_c, self._final_r_c, self._residual_hist_c = \
               cbcg_solver_obj.cbcg_solver_least_square(self._mat, self._SB, self._SX, 8, self._tol, self._maxiter)
        self._final_x_d, self._final_r_d, self._residual_hist_d = \
               cbcg_solver_obj.cbcg_solver_least_square(self._mat, self._SB, self._SX, 18, self._tol, self._maxiter)

        plot_worker = Presenter()
        residual_list = [
            self._residual_hist_a, self._residual_hist_b,
            self._residual_hist_c, self._residual_hist_d
        ]
        legend_list = [
            "lbcg_lstsq_s8", "lbcg_lstsq_s18", "cbcg_lstsq_s8",
            "cbcg_lstsq_s18"
        ]
        color_list = ["r", "k", "b", "y"]
        #plot_worker.instant_plot_y_log10(residual_list, "crystm01", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
        #plot_worker.instant_plot_y_log10(residual_list, "wathen100", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
        plot_worker.instant_plot_y_log10(residual_list, "bodyy06",
                                         "#iteration",
                                         "$\\frac{||x_1||}{||b_1||}$",
                                         legend_list, color_list)
예제 #2
0
    def _pc_lbcg_vs_cbcg(self):
        """ """
        #print(self._mat)
        self._pc_jacobi = diags(self._mat.diagonal())
        #print ("")
        #print ("dia")
        #print(self._pc_jacobi)
        self._pc_jacobi = np.sqrt(self._pc_jacobi)
        #print ("")
        #print(self._pc_jacobi)
        self._pc_jacobi = inv(self._pc_jacobi)
        #print ("")
        #print ("inverse")
        #print(self._pc_jacobi)
        #print(type(self._pc_jacobi))
        self._left_pcd_mat = aslinearoperator(self._pc_jacobi)(
            self._mat.toarray())
        #print ("")
        #print ("left pcd")
        self._pcd_mat = np.matmul(self._left_pcd_mat,
                                  self._pc_jacobi.toarray())
        #print ("")
        #print (csr_matrix(self._pcd_mat).diagonal())
        #print ("mat cond:", np.linalg.cond(self._mat.toarray()))
        #print ("pcd_mat cond:", np.linalg.cond(self._pcd_mat))

        self._pcd_mat = csr_matrix(self._pcd_mat)
        lbcg_solver_obj = LBCG()
        self._final_x_a, self._final_r_a, self._residual_hist_a = \
                 lbcg_solver_obj.lbcg_solver_least_square(self._pcd_mat, self._SB, self._SX, 8, self._tol, self._maxiter)
        self._final_x_b, self._final_r_b, self._residual_hist_b = \
                 lbcg_solver_obj.lbcg_solver_least_square(self._pcd_mat, self._SB, self._SX, 18, self._tol, self._maxiter)

        cbcg_solver_obj = CBCG()
        self._final_x_c, self._final_r_c, self._residual_hist_c = \
               cbcg_solver_obj.cbcg_solver_least_square(self._pcd_mat, self._SB, self._SX, 8, self._tol, self._maxiter)
        self._final_x_d, self._final_r_d, self._residual_hist_d = \
               cbcg_solver_obj.cbcg_solver_least_square(self._pcd_mat, self._SB, self._SX, 18, self._tol, self._maxiter)

        plot_worker = Presenter()
        residual_list = [
            self._residual_hist_a, self._residual_hist_b,
            self._residual_hist_c, self._residual_hist_d
        ]
        legend_list = [
            "pcd_lbcg_lstsq_s8", "pcd_lbcg_lstsq_s18", "pcd_cbcg_lstsq_s8",
            "pcd_cbcg_lstsq_s18"
        ]
        color_list = ["r", "k", "b", "y"]
        #plot_worker.instant_plot_y_log10(residual_list, "crystm01", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
        #plot_worker.instant_plot_y_log10(residual_list, "wathen100", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
        plot_worker.instant_plot_y_log10(residual_list, "bodyy06",
                                         "#iteration",
                                         "$\\frac{||x_1||}{||b_1||}$",
                                         legend_list, color_list)
예제 #3
0
    def _db_lbcg_least_square_exp (self):
        """ """
        lbcg_solver_obj = LBCG()
        self._final_x_a, self._final_r_a, self._residual_hist_a = \
                 lbcg_solver_obj.lbcg_solver_least_square(self._mat, self._SB, self._SX, self._step_val, self._tol, self._maxiter)

        cbcg_solver_obj = CBCG() 
        self._final_x_b, self._final_r_b, self._residual_hist_b = \
               cbcg_solver_obj.cbcg_solver(self._mat, self._SB, self._SX, self._step_val, self._tol, self._maxiter)

        plot_worker = Presenter()
        residual_list = [self._residual_hist_a, self._residual_hist_b]
        legend_list = ["lbcg_lstsq_s2", "cbcg_s2"]
        color_list = ["r","k"]
        #plot_worker.instant_plot_y_log10(residual_list, "crystm01", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
        plot_worker.instant_plot_y_log10(residual_list, "wathen100", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
예제 #4
0
    def _db_lbcg_exp (self):
        """ """
        lbcg_solver_obj = LBCG()
        self._final_x_a, self._final_r_a, self._residual_hist_a = \
                 lbcg_solver_obj.lbcg_solver(self._mat, self._B, self._X, 2, self._tol, self._maxiter)
        self._final_x_b, self._final_r_b, self._residual_hist_b = \
                 lbcg_solver_obj.lbcg_solver(self._mat, self._B, self._X, 8, self._tol, self._maxiter)

        cbcg_solver_obj = CBCG() 
        self._final_x_c, self._final_r_c, self._residual_hist_c = \
               cbcg_solver_obj.cbcg_solver(self._mat, self._B, self._X, 8, self._tol, self._maxiter)

        plot_worker = Presenter()
        residual_list = [self._residual_hist_a, self._residual_hist_b, self._residual_hist_c]
        legend_list = ["lbcg_s2","lbcg_s8", "cbcg_s8"]
        color_list = ["r","k", "b"]
        #plot_worker.instant_plot_y_log10(residual_list, "crystm01", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
        plot_worker.instant_plot_y_log10(residual_list, "vanbody", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
예제 #5
0
    def _pc_lbcg_vs_cbcg(self):
        """ """
        #print(self._mat)
        self._pc_jacobi = diags(self._mat.diagonal())
        #print ("")
        #print ("dia")
        #print(self._pc_jacobi)
        self._pc_jacobi = np.sqrt(self._pc_jacobi)
        #print ("")
        #print(self._pc_jacobi)
        self._pc_jacobi = inv(self._pc_jacobi)
        #print ("")
        #print ("inverse")
        #print(self._pc_jacobi)
        #print(type(self._pc_jacobi))
        self._left_pcd_mat = aslinearoperator(self._pc_jacobi)(self._mat.toarray()) 
        #print ("")
        #print ("left pcd")
        self._pcd_mat = np.matmul (self._left_pcd_mat, self._pc_jacobi.toarray())
        #print ("")
        #print (csr_matrix(self._pcd_mat).diagonal())
        #print ("mat cond:", np.linalg.cond(self._mat.toarray()))
        #print ("pcd_mat cond:", np.linalg.cond(self._pcd_mat))

        self._pcd_mat = csr_matrix(self._pcd_mat)
        lbcg_solver_obj = LBCG()
        self._final_x_a, self._final_r_a, self._residual_hist_a = \
                 lbcg_solver_obj.lbcg_solver_least_square(self._pcd_mat, self._SB, self._SX, 8, self._tol, self._maxiter)
        self._final_x_b, self._final_r_b, self._residual_hist_b = \
                 lbcg_solver_obj.lbcg_solver_least_square(self._pcd_mat, self._SB, self._SX, 18, self._tol, self._maxiter)

        cbcg_solver_obj = CBCG() 
        self._final_x_c, self._final_r_c, self._residual_hist_c = \
               cbcg_solver_obj.cbcg_solver_least_square(self._pcd_mat, self._SB, self._SX, 8, self._tol, self._maxiter)
        self._final_x_d, self._final_r_d, self._residual_hist_d = \
               cbcg_solver_obj.cbcg_solver_least_square(self._pcd_mat, self._SB, self._SX, 18, self._tol, self._maxiter)

        plot_worker = Presenter()
        residual_list = [self._residual_hist_a, self._residual_hist_b, self._residual_hist_c, self._residual_hist_d ]
        legend_list = ["pcd_lbcg_lstsq_s8","pcd_lbcg_lstsq_s18" ,"pcd_cbcg_lstsq_s8", "pcd_cbcg_lstsq_s18" ]
        color_list = ["r","k", "b","y"]
        #plot_worker.instant_plot_y_log10(residual_list, "crystm01", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
        #plot_worker.instant_plot_y_log10(residual_list, "wathen100", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
        plot_worker.instant_plot_y_log10(residual_list, "bodyy06", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
예제 #6
0
    def _lbcg_least_square_exp (self):
        """ """
        lbcg_solver_obj = LBCG()
        self._final_x_a, self._final_r_a, self._residual_hist_a = \
                 lbcg_solver_obj.lbcg_solver_least_square(self._mat, self._SB, self._SX, 8, self._tol, self._maxiter)
        self._final_x_b, self._final_r_b, self._residual_hist_b = \
                 lbcg_solver_obj.lbcg_solver_least_square(self._mat, self._SB, self._SX, 18, self._tol, self._maxiter)

        cbcg_solver_obj = CBCG() 
        self._final_x_c, self._final_r_c, self._residual_hist_c = \
               cbcg_solver_obj.cbcg_solver_least_square(self._mat, self._SB, self._SX, 8, self._tol, self._maxiter)
        self._final_x_d, self._final_r_d, self._residual_hist_d = \
               cbcg_solver_obj.cbcg_solver_least_square(self._mat, self._SB, self._SX, 18, self._tol, self._maxiter)

        plot_worker = Presenter()
        residual_list = [self._residual_hist_a, self._residual_hist_b, self._residual_hist_c, self._residual_hist_d ]
        legend_list = ["lbcg_lstsq_s8","lbcg_lstsq_s18" ,"cbcg_lstsq_s8", "cbcg_lstsq_s18" ]
        color_list = ["r","k", "b","y"]
        plot_worker.instant_plot_y_log10(residual_list, "test", "#iteration", "$\\mathbf{log_{10}\\frac{||x_1||}{||b_1||}}$", legend_list, color_list)
예제 #7
0
    def _db_blbcg_exp(self):
        """ """
        lbcg_solver_obj = LBCG()
        self._final_x_a, self._final_r_a, self._residual_hist_a = \
                 lbcg_solver_obj.lbcg_solver(self._mat, self._SB, self._SX, 8, self._tol, self._maxiter)

        blbcg_solver_obj = BLBCG()
        self._final_x_b, self._final_r_b, self._residual_hist_b = \
                 blbcg_solver_obj.blbcg_solver(self._mat, self._BB, self._BX, 8, self._tol, self._maxiter, 0)

        bcbcg_solver_obj = BCBCG()
        self._final_x_c, self._final_r_c, self._residual_hist_c = \
                 bcbcg_solver_obj.bcbcg_solver(self._mat, self._BB, self._BX, 8, self._tol, self._maxiter, 0)

        plot_worker = Presenter()
        residual_list = [self._residual_hist_a, self._residual_hist_b, self._residual_hist_c]
        legend_list = ["lbcg_s8","blbcg_s8b10", "bcbcg_s8b10"]
        color_list = ["r","k", "b"]
        plot_worker.instant_plot_y_log10(residual_list, "bodyy6", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)
예제 #8
0
    def _db_blbcg_exp(self):
        """ """
        lbcg_solver_obj = LBCG()
        self._final_x_a, self._final_r_a, self._residual_hist_a = \
                 lbcg_solver_obj.lbcg_solver(self._mat, self._SB, self._SX, 8, self._tol, self._maxiter)

        blbcg_solver_obj = BLBCG()
        self._final_x_b, self._final_r_b, self._residual_hist_b = \
                 blbcg_solver_obj.blbcg_solver(self._mat, self._BB, self._BX, 8, self._tol, self._maxiter, 0)

        bcbcg_solver_obj = BCBCG()
        self._final_x_c, self._final_r_c, self._residual_hist_c = \
                 bcbcg_solver_obj.bcbcg_solver(self._mat, self._BB, self._BX, 8, self._tol, self._maxiter, 0)

        plot_worker = Presenter()
        residual_list = [self._residual_hist_a, self._residual_hist_b, self._residual_hist_c]
        legend_list = ["lbcg_s8","blbcg_s8b10", "bcbcg_s8b10"]
        color_list = ["r","k", "b"]
        plot_worker.instant_plot_y_log10(residual_list, "bodyy6", "#iteration", "$\\frac{||x_1||}{||b_1||}$", legend_list, color_list)