Создание массивов для решателя линейных уравнений с Python - PullRequest
0 голосов
/ 08 мая 2019

Я новичок в этом сайте и новичок в Python. Я помню, когда я учился в школе, я написал программу на бейсике (это было в восьмидесятых годах) для решения систем линейных уравнений с использованием матриц.

Я хотел бы сделать то же самое в Python, и я обнаружил, что это можно сделать с помощью кода, подобного следующему:

import numpy as np

a = np.array([[8, 3, -2], [-4, 7, 5], [3, 4, -12]])
b = np.array([9, 15, 35])

x = np.linalg.solve(a, b)

print (x)

Но я бы хотел, чтобы программа запросила коэффициенты, чтобы мне не приходилось редактировать их для каждого уравнения. Я уверен, что это возможно, но я искал несколько дней и ничего не нашел. Интересно, не могли бы вы дать мне подсказки о том, как это реализовать?

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Сделал небольшую модификацию:

    import numpy as np

    print("Resolving linear equations with unknown n:\n")
    m=int(input("Number of unknowns? \n"))
    n=m

    matrix_a=[]
    matrix_b=[]

    print("\n Enter the coefficients of Matrix[A]:\n")

    matrix_a=np.zeros((m,n),dtype=np.int)
    print(matrix_a)
    for i in range (0,m):
        for j in range (0,n):
            print (" Enter Coefficient [", i,",",j, "]?",end=" ")
            matrix_a[i][j] = eval(input())
    print(matrix_a)

    m=1
    print (" \n Enter the coefficients of Matrix [B] :\n")
    for i in range(0,n):
        matrix_b.append([])
    for i in range(0,n):
        for j in range(0,m):
            matrix_b[i].append(j)
            matrix_b[i][j]=0

    for i in range (0,n):
        for j in range (0,m):
            print (" Enter Coefficient [", i,",",j, "]?",end=" ")
            matrix_b[i][j] = eval(input())

    x = np.linalg.solve(matrix_a,matrix_b)
    print("Missing linear equation values:\n",x)
0 голосов
/ 12 мая 2019

Я нашел, как это сделать. Вот код:

import numpy as np

print (" Résolution de systèmes de n équations à n inconnues :")

# Saisie du nombre d’inconnues
print ("\n")
m = int(input(" Nombre d’inconnues ? "))
n = m

mat_a = []
mat_b = []

# Saisie des coefficients - matrice A
print ("\n")
print (" Saisie des coefficients – Matrice [A] :")
for i in range (0,n):
    mat_a.append([])
for i in range (0,m):
    for j in range (0,n):
        mat_a[i].append(j)
        mat_a[i][j]=0
for i in range (0,m):
    for j in range (0,n):
        print (" Coefficient [", i+1,", ",j+1, "] ?", end = " ")
        mat_a[i][j] = eval(input())

# Saisie des coefficients - matrice B
m = 1
print ("\n")
print (" Saisie des coefficients – Matrice [B] :")
for i in range (0,n):
    mat_b.append([])
for i in range (0,n):
    for j in range (0,m):
        mat_b[i].append(j)
        mat_b[i][j]=0
for i in range (0,n):
    for j in range (0,m):
        print (" Coefficient [", i+1,", ",j+1, "] ?", end = " ")
        mat_b[i][j] = eval(input())

# Création des matrices
a = np.array ([mat_a])
b = np.array ([mat_b])

# Résolution du système d’équations       
x = np.linalg.solve(a, b)

# Affichage des solutions
print ("\n")
print (" L’équation admet", n, "solutions. S = {", x, "}.")

# Sortie du programme
print ("\n")
input (" Appuyer sur <Entrée> pour quitter…")

Мне помогло видео на YouTube: Как создать 2D-список или матрицу на Python и получить данные от пользователя

После нескольких изменений мне удалось написать хороший код для моей маленькой программы.

Если вы хотите попробовать, со следующей системой, например:

4x + 2y = -1
3x - y = 2

Два решения: S = {0,3; -1,1} .

:)

W.

...