Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2016 17:20:58

Volobuev_Ilya
Зарегистрирован: 2016-03-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Перемножение квадратных матриц 4 на 4

from NumPy import *
def Mult(str1,str2): # строки в виде 0;2;6
   arr1=str1.split(';')
   arr2=str2.split(';')
   if len(arr1)==len(arr2):
      for x in arr:
         res=res+arr1[x]*arr2[x]
      return res
   else:
   return "Не могу перемножить."
a=[[input() for y in range(4)] for x in range(4)]
b=[[input() for y in range(4)] for x in range(4)]
res=[[input() for y in range(4)] for x in range(4)]
for y in range(4):
   for x in range(4):
      res[y][x]=Mult(';'.join(a[y],';'.join(b[:,x])

Написал такой код. Верный он?

Отредактировано Volobuev_Ilya (Март 3, 2016 17:23:50)

Офлайн

#2 Март 3, 2016 20:01:27

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Перемножение квадратных матриц 4 на 4

Volobuev_Ilya
Верный он?
нет



Офлайн

#3 Март 4, 2016 00:06:51

Volobuev_Ilya
Зарегистрирован: 2016-03-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Перемножение квадратных матриц 4 на 4

Где ошибка можете подсказать?

Офлайн

#4 Март 4, 2016 00:39:36

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Перемножение квадратных матриц 4 на 4

Зачем вам модуль numpy если вы им не пользуетесь, Вот вам пример, если что не ясно - можно почитать в документации к NumPy про то что такое array, reshape, dot.

>>> import numpy as np
>>> a = np.array(range(16))
>>> a = a.reshape(4,4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
>>> b=np.array(range(15,-1,-1))
>>> b = b.reshape(4,4)
>>> b
array([[15, 14, 13, 12],
       [11, 10,  9,  8],
       [ 7,  6,  5,  4],
       [ 3,  2,  1,  0]])
>>> a*b
array([[ 0, 14, 26, 36],
       [44, 50, 54, 56],
       [56, 54, 50, 44],
       [36, 26, 14,  0]])
>>> np.dot(a, b)
array([[ 34,  28,  22,  16],
       [178, 156, 134, 112],
       [322, 284, 246, 208],
       [466, 412, 358, 304]])



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Март 4, 2016 02:13:43

Volobuev_Ilya
Зарегистрирован: 2016-03-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Перемножение квадратных матриц 4 на 4

Спасибо, конечно.
НО мне надо без NumPy.

Офлайн

#6 Март 4, 2016 02:15:36

Volobuev_Ilya
Зарегистрирован: 2016-03-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Перемножение квадратных матриц 4 на 4

В функцию Mult хочу передать строку списка a и столбец списка b.

Офлайн

#7 Март 4, 2016 03:00:51

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Перемножение квадратных матриц 4 на 4

Volobuev_Ilya
НО мне надо без NumPy.
Тогда поясните назначение первой строчки кода в вашем первом посте.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Март 4, 2016 11:38:29

Volobuev_Ilya
Зарегистрирован: 2016-03-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Перемножение квадратных матриц 4 на 4

Тогда она не нужна.

Офлайн

#9 Март 4, 2016 11:41:09

Volobuev_Ilya
Зарегистрирован: 2016-03-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Перемножение квадратных матриц 4 на 4

def Mult(arr1,arr2):
   if len(arr1)==len(arr2):
      for x in arr:
         res=res+arr1[x]*arr2[x]
      return res
   else:
   return "Не могу перемножить."
a=[[input() for y in range(4)] for x in range(4)]
b=[[input() for y in range(4)] for x in range(4)]
res=[[input() for y in range(4)] for x in range(4)]
for y in range(4):
   for x in range(4):
      res[y][x]=Mult(a[y],b[:,x])
Может так?

Офлайн

#10 Март 5, 2016 01:54:16

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Перемножение квадратных матриц 4 на 4

А давайте я расскажу вам про концепцию тестов. Очень кратко. Допустим вы написали функцию которая делает что то с вхрдными данными и возвращает результат. Как понять что функция правильно работает? Ее надо протестировать. у вас есть некие входные данные A в результате обработки функцией FOO должен получиться результат B. Если ваша функция не выполняет это условие т.е. дает результат C то она работает неверно.
В вашем случае у вас входные данные это 2 матрицы а выходные 1 матрица. Вы можете выбрать тестовые матрицы и вручную или иначе перемножить их .



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version