Example #1
0
def solve_getinfo(a, b, x, sample):
    mat = np.array(a)
    (size, _) = a.shape
    result = []
    a_cond = linalg.cond(mat)
    (a_maxcond, _, a_subcond) = rdft.get_leading_maxcond(mat)
    for i in range(0, sample):
        # RDFT solve
        (x1, fra, fr, ra, x1_orig) = solve_rdft(a, b, x)
        (fra_maxcond, _, fra_subcond) = rdft.get_leading_maxcond(fra)
        fra_cond = linalg.cond(fra)
        err_rdft_iter = linalg.norm(x1 - x)
        err_rdft = linalg.norm(x1_orig - x)
        # RDFT improved solve
        (x1_imp, fra_imp, fr_imp, ra_imp,
         x1_imp_orig) = solve_rdft_improved(a, b, x)
        (fra_maxcond_imp, _, fra_subcond_imp) = rdft.get_leading_maxcond(fra)
        fra_cond_imp = linalg.cond(fra_imp)
        err_rdft_imp_iter = linalg.norm(x1_imp - x)
        err_rdft_imp = linalg.norm(x1_imp_orig - x)
        # RDFT givens solve
        (x5_imp, x5_imp_orig) = solve_rdft_givens(a, b, x)
        err_rdft_givens_iter = linalg.norm(x5_imp - x)
        err_rdft_givens = linalg.norm(x5_imp_orig - x)
        # RDFT givens solve
        (x7_imp, x7_imp_orig) = solve_rdft_givens_both(a, b, x)
        err_rdft_givens_both_iter = linalg.norm(x7_imp - x)
        err_rdft_givens_both = linalg.norm(x7_imp_orig - x)
        # GAUSS solve
        (x2, ga, _, x2_orig) = solve_gauss(a, b, x)
        (ga_maxcond, _, ga_subcond) = rdft.get_leading_maxcond(fra)
        ga_cond = linalg.cond(ga)
        err_gauss_iter = linalg.norm(x2 - x)
        err_gauss = linalg.norm(x2_orig - x)
        # Partial Pivot
        a_float = np.array(a, dtype=np.float64)
        b_float = np.array(b, dtype=np.float64)
        (x3, pl, pu, swapped_a, swapped_b) = pp.solve(a_float, b_float)
        err_pp = linalg.norm(x3 - x)
        ##x3_i = iteration.iteration(swapped_a, pl, pu, swapped_b, x3, linalg.cond(a_float))
        #result make
        result.append(
            ([
                a_maxcond / a_cond, fra_maxcond / fra_cond, fra, a_subcond,
                fra_subcond, fr, ra, err_rdft_iter, err_rdft,
                err_rdft_imp_iter, err_rdft_imp
            ], [err_rdft_givens_iter, err_rdft_givens
                ], [err_rdft_givens_both_iter, err_rdft_givens_both],
             [ga_maxcond / ga_cond, ga, ga_subcond, err_gauss_iter,
              err_gauss], [err_pp]))
    return result
Example #2
0
def const_r():
    for i in range(0, 50):
        size = 200
        mat = np.zeros((size, size))
        r = rdft.generate_r(size)  # use constant r
        for j in range(0, size):
            for k in range(0, size):
                mat[j, k] = random.uniform(-100, 100)
        f = rdft.generate_f(size)
        fr = f.dot(r)
        fra = fr.dot(mat)
        (a_maxcond, _, _) = rdft.get_leading_maxcond(mat)
        (fra_maxcond, _, _) = rdft.get_leading_maxcond(fra)
        a_cond = linalg.cond(mat)
        fra_cond = linalg.cond(fra)
        print("A:  ", a_maxcond / a_cond)
        print("FRA:", fra_maxcond / fra_cond)
Example #3
0
File: main.py Project: warelle/rdft
def const_r():
  for i in range(0, 50):
    size = 200
    mat = np.zeros((size,size))
    r   = rdft.generate_r(size)            # use constant r
    for j in range(0,size):
      for k in range(0,size):
        mat[j,k] = random.uniform(-100,100)
    f = rdft.generate_f(size)
    fr  = f.dot(r)
    fra = fr.dot(mat)
    (a_maxcond,_,_)   = rdft.get_leading_maxcond(mat)
    (fra_maxcond,_,_) = rdft.get_leading_maxcond(fra)
    a_cond   = linalg.cond(mat)
    fra_cond = linalg.cond(fra)
    print("A:  ", a_maxcond/a_cond)
    print("FRA:", fra_maxcond/fra_cond)
Example #4
0
File: main.py Project: warelle/rdft
def const_a(sample, size, rand_range):
  result = []
  mat = np.zeros((size,size))
  for j in range(0,size):
    for k in range(0,size):
      mat[j,k] = random.uniform(-rand_range,rand_range)
  for i in range(0, sample):
    f   = rdft.generate_f(size)
    r   = rdft.generate_r(size)
    fr  = f.dot(r)
    fra = fr.dot(mat)
    (a_maxcond,_,a_subcond)   = rdft.get_leading_maxcond(mat)
    (fra_maxcond,_,fra_subcond) = rdft.get_leading_maxcond(fra)
    a_cond   = linalg.cond(mat)
    fra_cond = linalg.cond(fra)
    result.append([mat, a_maxcond/a_cond, fra_maxcond/fra_cond, fra, a_subcond, fra_subcond])
    #print("A:  ", a_maxcond/a_cond)
    #print("FRA:", fra_maxcond/fra_cond)
  return result
Example #5
0
def solve_getinfo(a,b,x,sample):
  mat = np.array(a)
  (size,_) = a.shape
  result = []
  a_cond   = linalg.cond(mat)
  (a_maxcond,_,a_subcond)   = rdft.get_leading_maxcond(mat)
  for i in range(0, sample):
    # RDFT solve
    (x1, fra, fr, ra, x1_orig) = solve_rdft(a,b,x)
    (fra_maxcond,_,fra_subcond) = rdft.get_leading_maxcond(fra)
    fra_cond = linalg.cond(fra)
    err_rdft_iter = linalg.norm(x1-x)
    err_rdft = linalg.norm(x1_orig-x)
    # RDFT improved solve
    (x1_imp, fra_imp, fr_imp, ra_imp, x1_imp_orig) = solve_rdft_improved(a,b,x)
    (fra_maxcond_imp,_,fra_subcond_imp) = rdft.get_leading_maxcond(fra)
    fra_cond_imp = linalg.cond(fra_imp)
    err_rdft_imp_iter = linalg.norm(x1_imp-x)
    err_rdft_imp = linalg.norm(x1_imp_orig-x)
    # RDFT givens solve
    (x5_imp, x5_imp_orig) = solve_rdft_givens(a,b,x)
    err_rdft_givens_iter = linalg.norm(x5_imp-x)
    err_rdft_givens = linalg.norm(x5_imp_orig-x)
    # RDFT givens solve
    (x7_imp, x7_imp_orig) = solve_rdft_givens_both(a,b,x)
    err_rdft_givens_both_iter = linalg.norm(x7_imp-x)
    err_rdft_givens_both = linalg.norm(x7_imp_orig-x)
    # GAUSS solve
    (x2, ga, _, x2_orig) = solve_gauss(a,b,x)
    (ga_maxcond,_,ga_subcond) = rdft.get_leading_maxcond(fra)
    ga_cond = linalg.cond(ga)
    err_gauss_iter = linalg.norm(x2-x)
    err_gauss = linalg.norm(x2_orig-x)
    # Partial Pivot
    a_float = np.array(a,dtype=np.float64)
    b_float = np.array(b,dtype=np.float64)
    (x3, pl, pu, swapped_a, swapped_b) = pp.solve(a_float,b_float)
    err_pp = linalg.norm(x3-x)
    ##x3_i = iteration.iteration(swapped_a, pl, pu, swapped_b, x3, linalg.cond(a_float))
    #result make
    result.append(([a_maxcond/a_cond, fra_maxcond/fra_cond, fra, a_subcond, fra_subcond, fr, ra, err_rdft_iter, err_rdft,err_rdft_imp_iter,err_rdft_imp],[err_rdft_givens_iter,err_rdft_givens],[err_rdft_givens_both_iter,err_rdft_givens_both],[ga_maxcond/ga_cond, ga, ga_subcond, err_gauss_iter, err_gauss],[err_pp]))
  return result
Example #6
0
def const_a(sample, size, rand_range):
    result = []
    mat = np.zeros((size, size))
    for j in range(0, size):
        for k in range(0, size):
            mat[j, k] = random.uniform(-rand_range, rand_range)
    for i in range(0, sample):
        f = rdft.generate_f(size)
        r = rdft.generate_r(size)
        fr = f.dot(r)
        fra = fr.dot(mat)
        (a_maxcond, _, a_subcond) = rdft.get_leading_maxcond(mat)
        (fra_maxcond, _, fra_subcond) = rdft.get_leading_maxcond(fra)
        a_cond = linalg.cond(mat)
        fra_cond = linalg.cond(fra)
        result.append([
            mat, a_maxcond / a_cond, fra_maxcond / fra_cond, fra, a_subcond,
            fra_subcond
        ])
        #print("A:  ", a_maxcond/a_cond)
        #print("FRA:", fra_maxcond/fra_cond)
    return result
Example #7
0
def const_a_test(test_num, sample, size, rand_range, way=-1, way_option=[]):
    counter = 0
    sample_counter = 0
    for i in range(0, test_num):
        [cd, fs, mat, mca, mcfra, fras, a_subcond,
         fra_subconds] = const_a_detection(sample, size, rand_range)
        a = np.array(mat)
        if way == 0:
            mat = mat.T
        elif way == 1:
            for (k, j) in way_option:
                mat = pp.swap(mat, k, j)
        if cd > sample * (2 / 3):
            np.savetxt("./test_result/test_result" + str(counter) + "_a.txt",
                       a)
            os.mkdir("./test_result/fra_" + str(counter))
            for i in range(0, len(fras)):
                np.savetxt(
                    "./test_result/fra_" + str(counter) + "/" + str(i) +
                    ".txt", fras[i])
            output = open(
                "./test_result/test_result" + str(counter) + "_a_subcond.txt",
                'w')
            output.write(str(a_subcond))
            output.close()
            output = open(
                "./test_result/test_result" + str(counter) +
                "_fra_subcond.txt", 'w')
            output.write(str(fra_subconds))
            output.close()
            output = open(
                "./test_result/test_result" + str(counter) + "_mca.txt", 'w')
            output.write(str(mca))
            output = open(
                "./test_result/test_result" + str(counter) + "_mcfra.txt", 'w')
            output.write(str(mcfra))
            output.close()
            output = open(
                "./test_result/test_result" + str(counter) + "_det.txt", 'w')
            output.write(str(np.linalg.det(a)))
            output.close()
            output = open(
                "./test_result/test_result" + str(counter) + "_cd.txt", 'w')
            output.write(str(cd))
            output.close()
            output = open(
                "./test_result/test_result" + str(counter) + "_cdnum.txt", 'w')
            output.write(str(linalg.cond(a)))
            output.close()
            sample_counter = 0
            a_subcond, fra_subconds = [], []
            while sample_counter < 100:
                f = rdft.generate_f(size)
                r = rdft.generate_r(size)
                fr = f.dot(r)
                fra = fr.dot(mat)
                (a_maxcond, _, a_subcond) = rdft.get_leading_maxcond(mat)
                (fra_maxcond, _, fra_subcond) = rdft.get_leading_maxcond(fra)
                fra_subconds.append(fra_subcond)
                sample_counter = sample_counter + 1
            np.savetxt(
                "./test_result/test_result" + str(counter) + "_z_mod_a.txt",
                mat)
            os.mkdir("./test_result/fra_" + str(counter) + "_" +
                     str(sample_counter))
            for i in range(0, len(fras)):
                np.savetxt(
                    "./test_result/fra_" + str(counter) + "_" +
                    str(sample_counter) + "/" + str(i) + ".txt", fras[i])
            output = open(
                "./test_result/test_result" + str(counter) +
                "_z_a_subcond.txt", 'w')
            output.write(str(a_subcond))
            output.close()
            output = open(
                "./test_result/test_result" + str(counter) +
                "_z_fra_subcond.txt", 'w')
            output.write(str(fra_subconds))
            output.close()
            output = open(
                "./test_result/test_result" + str(counter) + "_z_mca.txt", 'w')
            output.write(str(mca))
            output = open(
                "./test_result/test_result" + str(counter) + "_z_mcfra.txt",
                'w')
            output.write(str(mcfra))
            output.close()
            output = open(
                "./test_result/test_result" + str(counter) + "_z_det.txt", 'w')
            output.write(str(np.linalg.det(mat)))
            output.close()
            output = open(
                "./test_result/test_result" + str(counter) + "_z_cdnum.txt",
                'w')
            output.write(str(linalg.cond(mat)))
            output.close()
            counter = counter + 1
    print(str(counter) + "detected")
Example #8
0
def const_a_test(test_num, sample, size, rand_range, way=-1, way_option=[]):
  counter = 0
  sample_counter = 0
  for i in range(0, test_num):
    [cd, fs, mat, mca, mcfra, fras, a_subcond, fra_subconds] = const_a_detection(sample, size, rand_range)
    a   = np.array(mat)
    if way == 0:
      mat = mat.T
    elif way == 1:
      for (k,j) in way_option:
        mat = pp.swap(mat,k,j)
    if cd > sample*(2/3):
      np.savetxt("./test_result/test_result" + str(counter) + "_a.txt",a)
      os.mkdir("./test_result/fra_" + str(counter))
      for i in range(0,len(fras)):
        np.savetxt("./test_result/fra_" + str(counter) + "/" + str(i) + ".txt", fras[i])
      output = open("./test_result/test_result" + str(counter) + "_a_subcond.txt",'w')
      output.write(str(a_subcond))
      output.close()
      output = open("./test_result/test_result" + str(counter) + "_fra_subcond.txt",'w')
      output.write(str(fra_subconds))
      output.close()
      output = open("./test_result/test_result" + str(counter) + "_mca.txt",'w')
      output.write(str(mca))
      output = open("./test_result/test_result" + str(counter) + "_mcfra.txt",'w')
      output.write(str(mcfra))
      output.close()
      output = open("./test_result/test_result" + str(counter) + "_det.txt",'w')
      output.write(str(np.linalg.det(a)))
      output.close()
      output = open("./test_result/test_result" + str(counter) + "_cd.txt",'w')
      output.write(str(cd))
      output.close()
      output = open("./test_result/test_result" + str(counter) + "_cdnum.txt",'w')
      output.write(str(linalg.cond(a)))
      output.close()
      sample_counter = 0
      a_subcond, fra_subconds = [], []
      while sample_counter < 100:
        f   = rdft.generate_f(size)
        r   = rdft.generate_r(size)
        fr  = f.dot(r)
        fra = fr.dot(mat)
        (a_maxcond,_,a_subcond)   = rdft.get_leading_maxcond(mat)
        (fra_maxcond,_,fra_subcond) = rdft.get_leading_maxcond(fra)
        fra_subconds.append(fra_subcond)
        sample_counter = sample_counter + 1
      np.savetxt("./test_result/test_result" + str(counter) + "_z_mod_a.txt",mat)
      os.mkdir("./test_result/fra_" + str(counter) + "_" + str(sample_counter))
      for i in range(0,len(fras)):
        np.savetxt("./test_result/fra_" + str(counter) + "_" + str(sample_counter) + "/" + str(i) + ".txt", fras[i])
      output = open("./test_result/test_result" + str(counter) + "_z_a_subcond.txt",'w')
      output.write(str(a_subcond))
      output.close()
      output = open("./test_result/test_result" + str(counter) + "_z_fra_subcond.txt",'w')
      output.write(str(fra_subconds))
      output.close()
      output = open("./test_result/test_result" + str(counter) + "_z_mca.txt",'w')
      output.write(str(mca))
      output = open("./test_result/test_result" + str(counter) + "_z_mcfra.txt",'w')
      output.write(str(mcfra))
      output.close()
      output = open("./test_result/test_result" + str(counter) + "_z_det.txt",'w')
      output.write(str(np.linalg.det(mat)))
      output.close()
      output = open("./test_result/test_result" + str(counter) + "_z_cdnum.txt",'w')
      output.write(str(linalg.cond(mat)))
      output.close()
      counter = counter + 1
  print(str(counter) + "detected")