Come si fa la moltiplicazione scalare e la matrice inversa quando le variabili sono di dimensione 1000 bit?

0

Sto facendo operazioni aritmetiche su numeri davvero enormi.

Ad esempio, mi vengono date sei variabili, a_ {11}, a_ {12}, a_ {21}, a_ {22}, x_1 e x_2.

Anche se i precedenti sono termini matematici, queste sei variabili sono numeri interi a 1000 bit.

Quello che voglio fare è calcolare (1) due numeri z_1 e z_2 e (2) la matrice inversa.

(1) z_1 = a_ {11} * x_1 + a_ {12} * x2 e z_2 = a_ {21} * x_1 + a_ {22} * x2

(2) se A è una matrice definita come A = [a_ {11} a_ {12}; a_ {21} a_ {22}], vuoi calcolare A ^ {- 1}

So come fare quanto sopra quando queste sei variabili sono normali punti fluttuanti.

Ma la mia domanda è come calcolarli in C o Python quando le sei variabili sono tutte di dimensione 1000-bit?

    
posta user4478 09.01.2013 - 19:57
fonte

1 risposta

2

Tipo long di Python ( documenti qui ) è precisione arbitraria. Quindi, nell'interesse di salvare una risorsa preziosa (ad esempio il tuo tempo ), proverei a farlo per primo e vedere se è Good Enough ™. Dai anche un'occhiata a NumPy se hai a che fare con grossi pezzi di big data.

Aggiornamento:

Sì, puoi semplicemente assegnare un grande numero di suoneria. Per es.

x = 1071508607186267320948425049060001810561404811705533607443750388370351051124936122493198378815695858127594672917553146825187145285692314043598457757469857480393456777482423098542107460506237114187795418215304647498358194126739876755916554394607706291457119647768654216766042983165262438683720566806937638839928883123

o in binario

y = 0b1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

print x
print y
print x+y
    
risposta data 09.01.2013 - 20:03
fonte

Leggi altre domande sui tag