На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
    > Умножение разреженных матриц , При использовании функции dot для умножения разреженной матрицы выдается ошибка как обойти избежать
      Проснулся - запустил программу. Оказалось, там из Py2 только pirnt в одном-единственном месте.

      Раз ты уж используешь scipy.sparse, почему просто не написал вместо цикла
      ExpandedWrap disabled
        r = B*x - b
      ? Зачем понадобилось умножать матрицу на вектор вручную?
      И ещё, в твоём варианте
      ExpandedWrap disabled
        s=np.copy(r)
      лучше вынести из цикла. Достаточно скопировать один раз, когда r будет готов.

      В общем у меня после переделки умножений получилось так (sg1.py)
      ExpandedWrap disabled
        __author__ = 'kardashevskiy'
        import numpy as np
        from scipy import sparse
         
        def sg1(B,b,tol=1.0e-8):
            """
            Solve the linear system Ax=b by conjugate gradient method
            """
            n=len(b)
            x=np.zeros((n),'float')
            r=np.copy(b)
            #for i in range(n):
                #r[i]=np.asscalar(np.dot(B[i,0:n],x[0:n]))-b[i]
            r=B*x-b
            s=np.copy(r)
            As=np.zeros((n),'float')
            for k in range(n):
                #for i in range(n):
                    #As[i]=np.dot(B[i,0:n],s[0:n])
                As=B*s
                alpha=np.dot(r,r)/np.dot(s,As)
                x=x-alpha*s
                #for i in range(n):
                    #r[i]=np.asscalar(np.dot(B[i,0:n],x[0:n]))-b[i]
                r=B*x-b
                if np.dot(r,r)<tol**2:
                    break
                else:
                    beta=-np.dot(r,As)/np.dot(s,As)
                    s=r+beta*s
            return x,k

      и картинка
      Прикреплённый файлПрикреплённый файлfigure_1.png (240,36 Кбайт, скачиваний: 634)
      Сообщение отредактировано: amk -
        Добрый день!
        Компания, в которой я работаю ищет программиста - разработчика Python/Django.
        Вот наши требования:- опыт работы с Django от 1 года
        Условия:
        - постоянная удаленная работа
        - оплата почасовая
        - свободный график
        - работа над крупными интернет и корпоративными проектам в команде профессионалов.

        если кого-то заинтересует данная информация, пишите мне на hr@smyt.ru
          Ваууу. Фантастика! Это надо же. Спасибоо.Ну нет слов.
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,4138 ]   [ 16 queries used ]   [ Generated: 18.07.25, 03:14 GMT ]