Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 26, 2017 09:20:45

tolk
Зарегистрирован: 2017-06-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение системы линейных уравнений

Добрый день!

Сразу хочу извиниться, что в данном вопросе о пайтоне будет говориться лишь косвенно.

Прохожу онлайн курс “Основы программирования на Python” на курсере, курс нравится хоть в задачах чаще больше логики и математики чем пайтона. Наткнулся на одну задачу которую не понимаю как решить, вот она:

Даны вещественные числа a, b, c, d, e, f. Известно, что система линейных уравнений:
ax + by = e
cx + dy = f
имеет ровно одно решение. Выведите два числа x и y, являющиеся решением этой системы.
Формат ввода
Вводятся шесть чисел a, b, c, d, e, f
- коэффициенты уравнений системы.
Формат вывода
Выведите ответ на задачу.
Тест 1
Входные данные:
1
0
0
1
3
3
Вывод программы:
3 3

Вопрос в следующем, я не понимаю как решается данная система, ведь если решить ее на бумаге методом подстановки или даже методом Крамера ответ будет х = 0, а у = 1. Откуда здесь х = 3, у = 3. Не понимаю. Подскажите пожалуйста.

Офлайн

#2 Июнь 26, 2017 09:41:13

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

Решение системы линейных уравнений

Тут даже из входных данных, без всяких методов подстановки и Крамера, видно что х=3 у=3

Отредактировано krok64 (Июнь 26, 2017 09:42:11)

Офлайн

#3 Июнь 26, 2017 09:52:48

tolk
Зарегистрирован: 2017-06-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение системы линейных уравнений

krok64
Тут даже из входных данных, без всяких методов подстановки и Крамера, видно что х=3 у=3
Мне не видно, потому и спрашиваю. Объясните, если Вам все очевидно. Для меня, например,
x(1) + y(0) = c(0);
х(1) = -у(0) + с(0);
х(1) = 0;
х = 0
очевидно, а вот почему получается х = 3, не очевидно.

Офлайн

#4 Июнь 26, 2017 10:00:38

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

Решение системы линейных уравнений

tolk
ax + by = e
cx + dy = f
tolk
Вводятся шесть чисел a, b, c, d, e, f
tolk
Входные данные:
1
0
0
1
3
3
аккуратно подставляем и:
1*х+0*у=3
0*х+1*у=3

Офлайн

#5 Июнь 26, 2017 10:20:29

tolk
Зарегистрирован: 2017-06-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение системы линейных уравнений

krok64
Ошибку своей невнимательности осознал, спасибо!

Офлайн

#6 Июнь 26, 2017 12:23:18

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Решение системы линейных уравнений

При решении данной задачи нужно учесть различные варианты:

1) система имеет множество решений, т.е. a,b,e = lambda*(c,d,f), где lambda – какая-то константа, отличная от нуля;
2) система не имеет решений, это когда (a,b) = lambda *(c, d), но e != lambda * f;
3) система имеет единственное решение: (a,b) != lambda*(c,d) при любом lambda != 0.

эти условия можно выразить через определитель матрицы: a*d-b*c,
в случае систем большой размерности, однако, для решения определители не используют, поскольку их вычисление может быть сопряжено с вычислительными погрешностями. Для решения систем используют ортогональные преобразования, которые позволяют привести матрицу, например, к верхнетреугольной форме, или даже двухдиагональной…

Офлайн

#7 Июнь 26, 2017 13:03:51

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

Решение системы линейных уравнений

scidam
При решении данной задачи нужно учесть различные варианты:
Чтобы не изобретать велосипед можно взять numpy.linalg.solve()

Офлайн

#8 Июнь 27, 2017 02:23:44

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Решение системы линейных уравнений

tolk
Даны вещественные числа a, b, c, d, e, f. Известно, что система линейных уравнений:
ax + by = e
cx + dy = f
имеет ровно одно решение. Выведите два числа x и y, являющиеся решением этой системы.

Известно, что система имеет одно решение, - значит, ничего проверять не надо. Просто в первом уравнении оставь один x в левой части, а во втором уравнении оставь один y в левой части.

x = (e - b * y) / a
y = (f - c * ((e - b * y) / a)) / d

x = (e - b * y) / a
y = ...



Отредактировано py.user.next (Июнь 27, 2017 03:00:51)

Офлайн

#9 Дек. 14, 2017 13:37:55

sahandalya
Зарегистрирован: 2017-12-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение системы линейных уравнений

Прохожу курс на одном онлайн ресурсе. Столкнулся с задачей по решению линейных уравнений. Автоматическая проверка указывает, что мой код выдает неверный ответ. Может кто-то подскажет где я ошибаюсь?

 a = float(input())
b = float(input())
c = float(input())
d = float(input())
e = float(input())
f = float(input())
if (a * d - b * c) != 0:
    if (a * f - e * c) == 0:
        y = 0
        if a != 0:
            if (e - b * y) == 0:
                x = 0
                print(float(x), float(y))
            else:
                x = (e - b * y) / a
                print(float(x), float(y))
    else:
        y = (a * f - e * c) / (a * d - b * c)
        if a != 0:
            if (e - b * y) == 0:
                x = 0
                print(float(x), float(y))
            else:
                x = (e - b * y) / a
                print(float(x), float(y))

Отредактировано sahandalya (Дек. 14, 2017 13:39:14)

Офлайн

#10 Дек. 15, 2017 11:25:21

sahandalya
Зарегистрирован: 2017-12-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение системы линейных уравнений

Сам решил.

 a = float(input())
b = float(input())
c = float(input())
d = float(input())
e = float(input())
f = float(input())
if b != 0:
    y = (c * e - a * f) / (b * c - a * d)
    if c != 0:
        x = (f - d * y) / c
        print(x, y)
else:
    if a != 0:
        x = (f * b - d * e) / (b * c - d * a)
        if d != 0:
            y = (f - c * x) / d
            print(x, y)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version