欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 如何解決稀疏矩陣運(yùn)算

 更新時(shí)間:2021年05月26日 09:19:36   作者:Thole Lee  
這篇文章主要介紹了Python 解決稀疏矩陣運(yùn)算的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。

用Python求解微分線(xiàn)性方程

因?yàn)橹坝胢atlab也編寫(xiě)過(guò),所以前不久試著用python寫(xiě),感覺(jué)之間互通點(diǎn)也蠻多的,易理解。

題目:稀疏線(xiàn)性方程組的求解方法

簡(jiǎn)單的方程如: AX=b

其中

A矩陣與b向量

python有很多功能庫(kù),這些庫(kù)對(duì)于編程很有幫助,可以在pycharm的Project Interpreter導(dǎo)入庫(kù),例如numpy、os、scipy等比較基礎(chǔ)的庫(kù),

下面是用來(lái)求解的代碼:

import numpy as np
from scipy import linalg
import os
#輸入矩陣維數(shù)
print("你好,這里是計(jì)算稀疏矩陣線(xiàn)性方程組的地方,非誠(chéng)勿擾!")
dism_num = input("你的A矩陣維數(shù)是:")
dism_num = int(dism_num)
print("接下來(lái)請(qǐng)你依次輸入矩陣的行向量(注意只能輸入英文逗號(hào),):")
A =[]
#X =[]
for i in range(1,dism_num+1):
    a=input("第"+str(i)+"行向量是:")
    alist = a.split(",")
    alist = [int(alist[j]) for j in range(len(alist))]
    A.append(alist)
print("你所輸入的矩陣行向量是:")
print(A)
#記錄輸入的X矩陣

#輸入向量b
print("輸入b向量")
b = input("b向量是:")
b_list = b.split(",")
b_list = [int(b_list[j]) for j in range(len(b_list))]
print("你輸入的b向量是:")
print(b_list)
#記錄b向量

#詢(xún)問(wèn)是否計(jì)算單個(gè)答案(單元素)
ask = input("是否只需求解單個(gè)值:(是或否)")
while(True):
    if ask == '是':
        ask_a = 'T'
        ask_num = input("請(qǐng)繼續(xù)輸入你所需要的答案序號(hào):")
        ask_num = int(ask_num)
        if ask_num<=dism_num and ask_num>0:
            print("OK,馬上幫你計(jì)算")
            break
        else:
            print("輸入的值超出矩陣維數(shù),請(qǐng)重新輸入:")
    if ask == '否':
        ask_a = 'F'
        break
#詢(xún)問(wèn)完成,只有當(dāng)用戶(hù)輸入正確的序號(hào)才可以進(jìn)行計(jì)算,否則重新詢(xún)問(wèn)

#開(kāi)始計(jì)算x向量了
A = np.array(A)
b = np.array(b_list)
x = linalg.solve(A,b)
print("計(jì)算的結(jié)果的:")
if ask_a == 'F':
    print(x)
if ask_a =='T':
    print(x[ask_num-1])
#計(jì)算完x向量了

os.system("pause")
#用于py文件結(jié)束玩暫停顯示結(jié)果

其基本流程如圖:

代碼開(kāi)發(fā)流程

運(yùn)行結(jié)果如下:

補(bǔ)充:python 多線(xiàn)程稀疏矩陣乘法

看代碼吧~

import threading, time
import numpy as np
res = []
class MyThread(threading.Thread):
    def __init__(self,i,j,m1,m2):
        threading.Thread.__init__(self)
        self.x, self.y = i,j
        self.m1, self.m2 = m1, m2
    def run(self):
        global res, lock
        if lock.acquire():
            m1 = self.m1[self.m1[:,0]==self.x]
            m2 = self.m2[self.m2[:,1]==self.y]
            value = 0.
            for item1 in m1:
                for item2 in m2:
                    if item1[1] == item2[0]:
                        value += item1[2]*item2[2]
            res.append([self.x,self.y,value])
            lock.release()
if "__main__" == __name__:
    m1 = [[2,2],[0,0,1],[0,1,2],[1,0,3],[1,1,4]]
    m2 = [[2,3],[0,0,2],[0,2,1],[1,2,3],[1,1,4]]
    s1, s2 = m1[0], m2[0]
    assert s1[1]==s2[0], 'mismatch'
    m1_value = np.array(m1[1:])
    m2_value = np.array(m2[1:])
    rows, cols = s1[0], s2[1]
    res.append([rows, cols])
    ThreadList = []
    lock = threading.Lock()
    for i in range(rows):
        for j in range(cols):
            t = MyThread(i,j,m1_value,m2_value)
            ThreadList.append(t)
    for t in ThreadList:
        t.start()
    for t in ThreadList:
        t.join()
    print (res)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python利用PsUtil實(shí)現(xiàn)實(shí)時(shí)監(jiān)控系統(tǒng)狀態(tài)

    Python利用PsUtil實(shí)現(xiàn)實(shí)時(shí)監(jiān)控系統(tǒng)狀態(tài)

    PSUtil是一個(gè)跨平臺(tái)的Python庫(kù),用于檢索有關(guān)正在運(yùn)行的進(jìn)程和系統(tǒng)利用率(CPU,內(nèi)存,磁盤(pán),網(wǎng)絡(luò),傳感器)的信息。本文就來(lái)用PsUtil實(shí)現(xiàn)實(shí)時(shí)監(jiān)控系統(tǒng)狀態(tài),感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • Python 中 Virtualenv 和 pip 的簡(jiǎn)單用法詳解

    Python 中 Virtualenv 和 pip 的簡(jiǎn)單用法詳解

    本篇文章主要介紹了Python 中 Virtualenv 和 pip 的簡(jiǎn)單用法詳解,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • Python常用模塊用法分析

    Python常用模塊用法分析

    這篇文章主要介紹了Python常用模塊用法分析,主要包括內(nèi)置函數(shù)、文件操作、正則匹配等等,需要的朋友可以參考下
    2014-09-09
  • Python面向?qū)ο缶幊讨嘘P(guān)于類(lèi)和方法的學(xué)習(xí)筆記

    Python面向?qū)ο缶幊讨嘘P(guān)于類(lèi)和方法的學(xué)習(xí)筆記

    類(lèi)與類(lèi)方法是面向?qū)ο蟮木幊陶Z(yǔ)言中必不可少的特性,本文總結(jié)了Python面向?qū)ο缶幊讨嘘P(guān)于類(lèi)和方法的學(xué)習(xí)筆記,需要的朋友可以參考下
    2016-06-06
  • Python中通過(guò)property設(shè)置類(lèi)屬性的訪(fǎng)問(wèn)

    Python中通過(guò)property設(shè)置類(lèi)屬性的訪(fǎng)問(wèn)

    為了達(dá)到類(lèi)似C++類(lèi)的封裝性能,可以使用property來(lái)設(shè)置Python類(lèi)屬性的訪(fǎng)問(wèn)權(quán)限,本文就介紹一下Python中通過(guò)property設(shè)置類(lèi)屬性的訪(fǎng)問(wèn),感興趣的可以了解一下,感興趣的可以了解一下
    2023-09-09
  • 使用cx_freeze把python打包exe示例

    使用cx_freeze把python打包exe示例

    這篇文章主要介紹了使用cx_freeze把python打包成exe的示例,大家參考使用吧
    2014-01-01
  • Python基于yield遍歷多個(gè)可迭代對(duì)象

    Python基于yield遍歷多個(gè)可迭代對(duì)象

    這篇文章主要介紹了Python基于yield遍歷多個(gè)可迭代對(duì)象,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)的示例代碼

    Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)的示例代碼

    本篇文章主要介紹了Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • django中的數(shù)據(jù)庫(kù)遷移的實(shí)現(xiàn)

    django中的數(shù)據(jù)庫(kù)遷移的實(shí)現(xiàn)

    這篇文章主要介紹了django中的數(shù)據(jù)庫(kù)遷移的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 超詳細(xì)Python解釋器新手安裝教程

    超詳細(xì)Python解釋器新手安裝教程

    這篇文章主要介紹了超詳細(xì)Python解釋器新手安裝教程,文中有非常詳細(xì)的圖文示例,對(duì)不會(huì)安裝python解釋器的小伙伴們很有幫助喲,需要的朋友可以參考下
    2021-05-05

最新評(píng)論