Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/29: Рейтинг темы: голосов - 29, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.11.2018
Сообщений: 1

Двумерные массивы, ошибка в коде, приведение матрицы к треугольному виду

13.11.2018, 14:57. Показов 5604. Ответов 1

Студворк — интернет-сервис помощи студентам
Задача состоит в том, что с помощью допустимых преобразований необходимо привести матрицу к треугольному виду.

В коде присутствует баг, иногда на случайно генерируемых массивах программа может выдать матрицу вида
https://pp.userapi.com/c848628... u233og.jpg
Вместо ожидаемого нуля программа выводит непонятно откуда взявшиеся число, как , например, на скриншоте, приложенном выше, A[7][0] !=0 , а A[7][0]=-7.105427357601002e-15. Укажите , почему так происходит, пожалуйста.
Код практически списан с учебника, но ...

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from random import *
from math import *
 
print("Введите размерность матрицы, где x - кол-во столбцов, а y - строк")
x = int(input("x: "))
y = int(input("y: "))
A = []
x1 = x
y1 = y
 
def ZamenaStr(A, x, y, IX, MaxIndY):
    if x > y:
        x = y
    if IX >= y:
        return A
    for i in range(x):
        self = A[MaxIndY][i]
        A[MaxIndY][i] = A[IX][i]  
        A[IX][i] = self
    return A
 
def ChangeMax(A, x, y):     #преобразует матрицу 
    for ix in range(x):
        max = -inf
        for iy in range(ix, y):
            if (A[iy][ix] > max):
                max = A[iy][ix]
                maxIndY = iy  # A[iy][ix]
        A = ZamenaStr(A, x, y, ix, maxIndY)
    return A
 
for i in range(y):
    A.append([0] * x)
for Oy in range(y):
    for Ox in range(x):
        A[Oy][Ox] = randint(-100, 100)
 
for Oy in range(y):
    print(A[Oy])
print("---------")
 
A = ChangeMax(A, x1, y1)
for Oy in range(y):
    print(A[Oy])
 
for i in range(y - 1):
    for j in range(i + 1, y):
        try:
            DelA = A[j][i] / A[i][i]
        except ZeroDivisionError:
            continue
        for k in range(i, y):
            A[j][k] -= A[i][k] * DelA
    print("---------")
    for Oy in range(y):
        print(A[Oy])
    print("---------")
print("---------")
 
for i in range(y1):
    print(A[i])
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.11.2018, 14:57
Ответы с готовыми решениями:

Приведение матрицы к треугольному виду
Необходимо создать программу для работы с матрицами. В принципе проблем с этим нет, кроме приведения матрицы к треугольному виду... Я...

Приведение матрицы к треугольному виду
задать матрицу вывести матрицу привести к треугольному виду выводим обратный ход

Приведение матрицы к треугольному виду
Изначально задание звучит так: Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых...

1
30 / 24 / 22
Регистрация: 12.11.2011
Сообщений: 181
14.11.2018, 08:59
Число -7.10e-15 похоже на ошибку округления, а не на ошибку алгоритма. Например код
Python
1
2
3
4
k=0.0
for i in range(20):
    k+=0.01
print(k)
у меня выдает 0.20000000000000004.
Думаю что проще всего делать вывод с округлением до n-ого знака после запятой
P.S алгоритм не проверял

Добавлено через 11 секунд
Число -7.10e-15 похоже на ошибку округления, а не на ошибку алгоритма. Например код
Python
1
2
3
4
k=0.0
for i in range(20):
    k+=0.01
print(k)
у меня выдает 0.20000000000000004.
Думаю что проще всего делать вывод с округлением до n-ого знака после запятой
P.S алгоритм не проверял
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2018, 08:59
Помогаю со студенческими работами здесь

Приведение матрицы к треугольному виду
Доброго дня дамы и господа. Предстоит долгая работа с матрицами. Не охота самому писать какие-либо костыли, поэтому ищу библиотечку,...

приведение матрицы к треугольному виду
вводится размерность матрицы,нужно привести ее к треугольному виду. Помогите,пожалуйста. прочитала все темы из киберфорума,но только там...

Приведение матрицы к треугольному виду
Доброго времени суток. Возникла проблема при решении данной,незамысловатой задачи. Вот мой код: #include <stdio.h> #include...

Приведение матрицы к треугольному виду
Здравствуйте! Мне необходимо написать программу,которая могла бы привести матрицу к треугольному виду. Метод разложения сам я...

Приведение матрицы к треугольному виду
Здравствуйте. Нужно сделать задание на питоне по двумерный массивам, а сроки совсем поджимают. Возможно, у кого-то уже есть готовый код,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru