Как мне построить только те значения, которые я хочу? - PullRequest
0 голосов
/ 18 ноября 2018

В настоящее время у меня есть код, и у меня возникли некоторые проблемы при его построении, я знаю, что в этом случае попытка построить и ymax, и y не сработает, но как мне построить график только для значения y? Я построил функцию раньше, удалив ymax из возвращаемого значения, но мне нужно распечатать значения и построить решение для y.

import numpy as np
import matplotlib.pyplot as plt

def GaussElimination(A):
    '''
    Description: Use Gauss elimination to solve a set of simultaneous equations
    Parameters: A  a matrix of coefficient and constant value for the system
    Return: a matrix holding the solution to the equation.  This corresponds to the last n 
    '''
    nr,nc=A.shape
    B= A.copy()

    # start the gauss elimination
    for r in range(nr):
        #pivoting
        max=abs(B[r][r])
        maxr = r
        for rr in range(r,nr):
            if max < abs(B[rr][r]):
                max = abs(B[rr][r])
                maxr = rr

        if max == 0:
            print("Singular Matrix")
            return []

        # swap if needed
        if (maxr != r):
            for c in range(nc):
                temp = B[r][c]
                B[r][c]=B[maxr][c]
                B[maxr][c] = temp

        # scale the row
        scale = B[r][r]
        for c in range(r,nc):
            B[r][c] = B[r][c]/scale

        # eliminate values in the columns
        for rr in range(nr):
            if rr != r:
                scale = B[rr][r]
                for c in range(r,nc):
                    B[rr][c]=B[rr][c] - scale*B[r][c]

    if (nc == nr+1):
        return B[:,nc-1]
    else:
        return B[:,(nr):nc]

def SimplySupportedBeam(n):
    M = np.zeros([n+1,n+1])
    C = np.array([[0],[150],[0],[0],[0],[0]])
    for r in range(n-3):
        M[r][r] = 1
        M[r][r+1] = -4
        M[r][r+2] = 6
        M[r][r+3] = -4
        M[r][r+4] = 1

    M[n-3][1] = 1
    M[n-2][n-1] = 1

    M[n-1][n-5] = 1
    M[n-1][n-4] = -2
    M[n-1][n-3] = 1
    M[n][n-2] = 1
    M[n][n-1] = -2
    M[n][n] = 1

    A = np.concatenate((M,C), axis=1)
    y0 = GaussElimination(A)
    y = y0[1:n]
    ymax = np.amax(abs(y))

    return y, ymax



n = int(input("Index of the last node: "))
print (SimplySupportedBeam(n))

plt.figure(1)
plt.plot(SimplySupportedBeam(n))
plt.show()

Как бы я отобразил только значение, полученное для y из моего кода?

1 Ответ

0 голосов
/ 18 ноября 2018

Кажется, что у - это 1D-массив.

Если вы просто хотите отобразить его значения относительно их индексов, вы можете сделать это, используя

plt.plot(SimplySupportedBeam(n)[0])

или

y, ymax = SimplySupportedBeam(n)
plt.plot(y)

Проблема заключалась в том, чтоФункция возвращает два значения: y и ymax.(Я не

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...