Vấn đề về định nghĩa hàm sử dụng kiểu dữ liệu list

Em chạy chương trình và nó báo lỗi

Em muốn hỏi 2 vấn đề:

  1. Em khai báo hàm với kiểu dữ liệu list như thế đúng chưa =)))

  2. Lỗi của em là lỗi gì ạ

    from math import*
    def LapDon(n,Matrix=[]):

    Nhập nghiệm ban đầu

    x0 = [0 for i in range(n)]
    for i in range(n):
    x0 = float(input(“Nhập giá trị nghiệm ban đầu x0” + str(i+1) + ": "))
    y0 = [0 for i in range(n)]

    Nhập sai số hoặc số bước

    z=int(input("Bạn muốn nhập số bước(1) hay sai số(2): (Nhập 1 hoặc 2) "))

    Nếu nhập số bước

    if z == 1:
    SB = int(input("Nhập số bước: "))
    for i in range(SB):
    for k in range(n):
    for l in range(n):
    if l == k:
    continue
    else:
    y0[k] += Matrix[k][l]*x0[l]
    y0[k] = Matrix[k][n+1] - y0[k]
    # Đổi giá trị của x0 cho y0
    x0 = y0[:]
    y0 = [0 for i in range(n)]
    print("Nghiệm của phương trình sau “, SB,” bước là: ", x0)

    Nếu nhập sai số

    if z == 2:
    eps = float(input("Nhập sai số: "))
    Test = True
    while Test:
    for k in range(n):
    for l in range(n):
    if l == k:
    continue
    else:
    y0[k] += Matrix[k][l]*x0[l]
    y0[k] = Matrix[k][n+1] - y0[k]
    # Kiểm tra điều kiện dừng
    Test = False
    for i in range(n):
    if abs(y0[i] - x0[i]) > eps:
    Test = True
    # Đổi giá trị của x0 cho y0
    x0 = y0[:]
    y0 = [0 for i in range(n)]
    print(“Nghiệm của phương trình với sai số”, esp, "là: ", x0)

    Phần giải

    n = int(input("Nhập số phương trình của hệ: "))

    Khai báo và nhập ma trận

    Matrix = [[0 for i in range(n+1)] for i in range(n)]
    for i in range(n):
    for j in range(n):
    Matrix[i][j] = float(input(“Nhập hệ số a”+str(i+1)+str(j+1)+": "))

    Nhập cột giá trị của phương trình

    for i in range(n):
    Matrix[i][n] = float(input("Nhập giá trị của phương trình " + str(i+1)+ ": "))

    #Kiểm tra điều kiện hội tụ của hệ và giải
    Hang = [0 for i in range(n)]
    Cot = [0 for i in range(n)]
    for i in range(n):
    for j in range(n):
    Hang[i] = Hang[i] + abs(Matrix[i][j]/Matrix[i][i])
    for i in range(n):
    for j in range(n):
    Cot[i] = Cot[i] + abs(Matrix[j][i]/Matrix[i][i])
    if max(Hang) < 2:
    print(“Ta có thể áp dụng phương pháp lặp Jacobi với ma trận chéo trội hàng”)
    LapDon(n,Matrix)
    elif max(Cot) < 2:
    print(“Ta có thể áp dụng phương pháp lặp Jacobi với ma trận chéo trội cột”)
    LapDon(n,Matrix)
    else:
    print(“Tạm thời em chưa được học =)))”)

Tham số mặc định của Matrix phải là [][] chứ.

Lỗi xảy ra khi y0, Matrix[k] hoặc x0 của bạn không phải là mảng. In cả 3 cái đó ra xem nào.

Cảm ơn bạn. Mình kiểm tra và thấy lỗi ở nhập x0. Còn tham số mặc định của Matrix vẫn là []

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?