Ejemplo n.º 1
0
def main():
    print("データの個数を入力してください--->")
    n = int(input())
    n -= 1  # データ数が n なので, n <- n-1 として添字を0,1,...,n とする

    print("補間点を入力してください--->")
    xi = float(input())

    x = Dvector(0, n)  # x[0...n]
    y = Dvector(0, n)  # y[0...n]

    # ファイルのオープン
    with open("input_lag.dat", "r") as fin:
        with open("output_lag.dat", "w") as fout:
            input_vector(x, "x", fin, fout)  # ベクトル x の入出力
            input_vector(y, "y", fin, fout)  # ベクトル y の入出力

            print("補間の結果は, P({:.6f})={:.6f}".format(xi,
                                                    lagrange(x, y, 0, n, xi)))

            # グラフを描くために結果をファイルに出力
            xi = x[0]
            while xi <= x[n]:
                fout.write("{:.6f} \t {:.6f}\n".format(
                    xi, lagrange(x, y, 0, n, xi)))
                xi += 0.01
Ejemplo n.º 2
0
def main():
    a = Dmatrix(1, N, 1, N) # 行列領域の確保
    x = Dvector(1, N)       # ベクトル領域の確保

    # ファイルのオープン
    with open("input_eigen.dat", "r") as fin:
        with open("result_eigen.dat", "w") as fout:
            input_matrix( a, 'A', fin, fout ) # 行列 A の入出力
            input_vector( x, 'x', fin, fout ) # ベクトル x の入出力
            power_method( a, x, fout )        # べき乗法
Ejemplo n.º 3
0
def main():
    global M, N

    x = Dvector(1, M)  # x[1...M]
    y = Dvector(1, M)  # y[1...M]

    # ファイルのオープン
    with open("input_func.dat", "r") as fin:
        with open("output_func.dat", "w") as fout:
            input_vector(x, 'x', fin, fout)  # ベクトル x の入出力
            input_vector(y, 'y', fin, fout)  # ベクトル y の入出力

            least_square(x, y, fout)  # 最小2乗近似
Ejemplo n.º 4
0
def main():
    global N
    a = Dmatrix(1, N, 1, N) # 行列 a[1...N][1...N]
    b = Dvector(1, N) # b[1...N]

    # ファイルのオープン
    with open("input.dat", "r") as fin:
        with open("output.dat", "w") as fout:
            input_matrix( a, 'A', fin, fout ) # 行列 A の入出力
            input_vector( b, 'b', fin, fout ) # ベクトル b の入出力
            b = simple_gauss( a, b )          # ガウス消去法

            # 結果の出力
            fout.write("Ax=b の解は次の通りです\n")
            for i in range(1, N+1):
                fout.write("{:.6f}\n".format(b[i]))
Ejemplo n.º 5
0
def main():
    global N

    a = Dmatrix(1, N, 1, N)
    b = Dvector(1, N)

    # ファイルのオープン
    with open("input.dat", "r") as fin:
        with open("output.dat", "w") as fout:
            input_matrix(a, 'A', fin, fout)  # 行列 A の入出力
            input_vector(b, 'b', fin, fout)  # ベクトル b の入出力
            b = gauss(a, b)  # ガウス消去法

            # 結果の出力
            fout.write("Ax=b の解は次の通りです\n")
            for i in range(1, N + 1):
                fout.write(f"{b[i]}\n")
Ejemplo n.º 6
0
def main():
    a = Dmatrix(1, N, 1, N) # 行列 a[1...N][1...N]
    b = Dvector(1, N)       # b[1...N]
    x = Dvector(1, N)       # x[1...N]

    # ファイルのオープン
    with open("input_sp.dat", "r") as fin:
        with open("output_sp.dat", "w") as fout:
            input_matrix( a, 'A', fin, fout ) # 行列 A の入出力
            input_vector( b, 'b', fin, fout ) # ベクトル b の入出力
            input_vector( x, 'x', fin, fout ) # 初期ベクトル x0 の入出力
            x = jacobi_lin( a, b, x )         # ヤコビ法

            # 結果の出力
            fout.write("Ax=b の解は次の通りです\n")
            for i in range(1, N+1):
                fout.write("{:.6f}\n".format(x[i]))
Ejemplo n.º 7
0
def main():
    a = Dmatrix(1, N, 1, N)  # 行列 a[1...N][1...N]
    b = Dvector(1, N)  # b[1...N]
    x0 = Dvector(1, N)  # x[1...N]

    # ファイルのオープン
    with open("input_sp.dat", "r") as fin:
        with open("output_sp.dat", "w") as fout:
            input_matrix(a, 'A', fin, fout)  # 行列 A の入出力
            input_vector(b, 'b', fin, fout)  # ベクトル b の入出力
            input_vector(x0, 'x0', fin, fout)  # 初期ベクトル x0 の入出力
            x = gauss_seidel(a, b, x0)  # ガウス・ザイデル法

            # 結果の出力
            fout.write("Ax=b の解は次の通りです\n")
            for i in range(1, N + 1):
                fout.write("{:.6f}\n".format(x[i]))
Ejemplo n.º 8
0
def main():
    global N

    a = Dmatrix(1, N, 1, N)  # 行列 a[1...N][1...N]
    b = Dvector(1, N)  # b[1...N]

    # ファイルのオープン
    with open("input_cho.dat", "r") as fin:
        with open("output_cho.dat", "w") as fout:
            input_matrix(a, 'A', fin, fout)  # 行列 A の入出力
            input_vector(b, 'b', fin, fout)  # ベクトル b の入出力
            a_cd = cholesky_decomp(a)  # 修正コレスキー分解
            b_cs = cholesky_solve(a_cd, b)  # 前進代入・後退代入

            # 結果の出力
            fout.write("Ax=bの解は次の通りです\n")
            for i in range(1, N + 1):
                fout.write("{:.6f}\t\n".format(b_cs[i]))
Ejemplo n.º 9
0
def main():
    global N

    a = Dmatrix(1, N, 1, N) # 行列 a[1...N][1...N]
    b = Dvector(1,N) # b[1...N]

    # ファイルのオープン
    with open("input_lu.dat", "r") as fin:
        with open("output_lu.dat", "w") as fout:
            input_matrix( a, 'A', fin, fout ) # 行列 A の入力
            input_vector( b, 'B', fin, fout ) # ベクトル b の入出力
            a_lu, p = lu_decomp( a )          # LU分解
            b_lu = lu_solve( a_lu, b, p )     # 前進代入・後退代入

            # 結果の出力
            fout.write("Ax=b の解は次の通りです\n")
            for i in b_lu:
                fout.write(f"{i}\n")