Как найти конкретную матрицу путем генерации случайной матрицы - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь увеличить охват моего теста, создав тестовый пример, который будет проверять условие if матрицы s в следующей программе.Я не знаю, какую матрицу я передаю функции np.linalg.svd, чтобы получить конкретную s-матрицу для моего тестового примера.
Чтобы найти эту матрицу, я создал следующую программу и ожидал ее запуска до тех пор, пока не получу эту матрицу.Однако по какой-то причине он останавливается после нескольких выполнений, генерирующих ошибку. Превышена максимальная глубина рекурсии.Я не знаю, почему он так себя ведет.
Я запускаю его по python program.py
Пожалуйста, помогите

import numpy as np
import random
import pivot as p


def randomGenerator():
    condition = True
    while(condition):
        matrices = np.random.rand(4, 4)
        print(matrices)
        u, s, v = np.linalg.svd(matrices, full_matrices=False)
        Rank = 0
        for i in range(len(s)):
            if s[i] < 0.01:
                s[i] = 0
                print(s)
                condition = False
            else:
                randomGenerator()
# Main #
randomGenerator()

1 Ответ

0 голосов
/ 05 марта 2019

Ответ делает это без рекурсии.Спасибо Г. Андерсону.

import numpy as np
import random
import pivot as p

condition = True
while(condition):
    matrices = np.random.rand(4, 4)
    print(matrices)
    u, s, v = np.linalg.svd(matrices, full_matrices=False)
    Rank = 0
    for i in range(len(s)):
        if s[i] < 0.01:
            s[i] = 0
            print(s)
            condition = False
...