CALCOLATRICI, MACCHINE (VIII, p. 352; App. I, p. 339; II, 1, p. 482)
Nel campo delle macchine c. importanza sempre crescente hanno assunto, in questi ultimi anni, le c. elettroniche, cioè le macchine che svolgono calcoli, su numeri o su funzioni, mediante l'uso di dispositivi elettronici. Queste macchine si possono dividere in due grandi categorie, che nettamente si differenziano per struttura e per principio di funzionamento: a) c. elettroniche digitali (o numeriche), che operano su numeri; b) c. elettroniche analogiche, che operano su grandezze fisiche, cioè, in definitiva, su funzioni.
Calcolatrici elettroniche digitali.
Generalità. - Notevolissimi i progressi conseguiti nello sviluppo delle c. elettroniche digitali in questi ultimi quindici anni: per averne un'idea basti pensare che mentre il modello Mark 1 - il modello cotruito nel 1944 dalla IBM in collaborazione con l'università Harvard eseguiva una moltiplicazione in 6 secondi, la recentissima c. "Stretch", prodotto dalla IEM per la commissione americana per l'energia atomica, effettua, in un solo secondo, 1 milione di moltiplicazioni.
Oggi i dati necessarî alle elaborazioni vengono letti o scritti su nastri magnetici in ragione di 3 milioni di lettere o cifre al secondo, il che consente agli organi aritmetici e logici della macchina di eseguire tutti i calcoli a velocità altrettanto sbalorditive.
In genere, le applicazioni delle c. digitali nella scienza e nelle industrie e commercio sono di una varietà straordinaria.
In una prima categoria si possono mettere varî calcoli numerici che s'incontrano in varie questioni di meccanica applicata, di fisica, di statistica matematica, ecc., quali: a) la differenziazione, l'integrazione e l'analisi delle funzioni sperimentali; b) la determinazione degli zeri dei polinomî e delle funzioni trascendenti; c) la risoluzione dei sistemi algebrici e l'integrazione delle equazioni differenziali; d) la determinazione delle traiettorie di missili e di satelliti artificiali, ecc.
Una seconda categoria di applicazioni è rappresentata dai problemi di carattere tecnico scientifico come, ad esempio, i problemi di progettazione o la determinazione di certi schemi operativi, quali: a) progettazione di autostrade, di ponti, ecc., e valutazioni del loro costo; b) calcolo delle strutture di cemento armato, o metalliche; c) calcoli per rilevazioni geofisiche, ecc.
Una terza categoria di applicazioni può essere rappresentata dalla risoluzione di quei problemi economici a carattere nazionale, come per esempio, l'approvvigionamento delle forze armate, la determinazione dei piani di produzione di certi settori industriali, ecc., in genere di quei problemi per i quali, oltre la potenza del calcolo, occorre anche la possibilità di prendere automaticamente delle decisioni logiche.
Un'ultima classe di applicazioni è fornita dalla risoluzione di tutti quei problemi contabili, statistici e amministrativi che si presentano nella gestione di grandi enti assicurativi, assistenziali, bancarî, finanziarî. Caratteristica precipua di questo tipo di applicazioni è la vastità dei dati da elaborare e la necessità di ottenere tempestivamente un gran numero di risultanze diverse; ciò richiede alle c. non solo una elevata flessibilità e capacità di elaborazione, ma anche l'alta velocità di entrata e uscita dei dati che può essere ottenuta attraverso i nastri magnetici.
Struttura generale. - Una c. elettronica digitale, qualunque sia il tipo e la grandezza, è un insieme equilibrato di organi (o unità) collegati tra loro e destinati a esplicare specifiche funzioni per l'esecuzione delle operazioni che sono alla base di una elaborazione elettronica dei dati e cioè: la lettura dei dati, l'elaborazione calcolatoria e logica, la restituzione dei risultati. In linea di massima, una c. digitale è formata da una unità centrale e da parecchie unità periferiche dette genericamente di entrata e di uscita (fig. 1).
L'unità centrale costituisce l'elemento di coordinamento dell'intero processo elaborativo ed è formata da tre parti ben distinte: una unità aritmetica e logica; una unità di memoria; una unità di controllo.
L'unità aritmetica e logica rappresenta l'organo vero e proprio di lavoro della macchina, cioè quello che elabora le informazioni immesse. Essa può essere realizzata in moltissimi modi ma, solitamente, è rappresentabile mediante una memoria "labile" nella quale le informazioni immesse subiscono un ordinamento diverso da quello primitivo in modo tale che le informazioni emesse costituiscono un elaborato. Questa unità si chiama "aritmetica e logica" perché, oltre a svolgere le quattro operazioni aritmetiche, somma, sottrazione, moltiplicazione e divisione, o qualunque altra operazione complessa che ne deriva, è capace di eseguire anche alcune operazioni logiche, come, per esempio: trasferimento dei dati, a seconda delle necessità di elaborazione; scelta di una procedura di calcolo invece di un'altra in relazione all'ordine di grandezza di certi risultati intermedî, ecc.
L'unità di memoria ha come funzione principale di immagazzinare i dati da elaborare come pure le istruzioni date alla macchina per svolgere una determinata sequenza di calcoli. Generalmente essa è costituita da tamburi magnetici o memorie a nuclei magnetici. Spesse volte, per aumentare la capacità di memoria, vengono aggiunte anche delle unità a nastro magnetico.
L'unità di controllo presiede a tutto il funzionamento della macchina e interviene in caso di errore o di guasto per evitare che le informazioni fornite dalla macchina risultino inesatte. Di solito si possono distinguere due tipi di controllo: uno "funzionale", che provvede a controllare il buon andamento della macchina e l'esatto funzionamento delle singole parti, che denunzia i guasti e provvede ad arrestare la macchina quando il suo funzionamento risulta anormale; l'altro è costituito da una seconda unità aritmetica la quale o ripete integralmente le operazioni già effettuate o le ripete utilizzando procedimenti più approssimati, in modo da garantire l'uscita di quegli elaborati che coincidono e per i quali, pertanto, la probabilità di errore è praticamente nulla.
Le altre unità sono gli organi mediante i quali si fanno accedere nel sistema i dati sui quali l'elaborazione deve venire svolta o attraverso i quali l'elaboratore stesso restituisce i risultati cui è pervenuto.
L'unità di entrata è genericamente intesa come quella parte del complesso capace di accogliere le informazioni dovute e di inserirle nella macchina, nella forma ad essa conforme.
Essa può essere rappresentata da una o parecchie delle seguenti macchine collegabili: una lettrice a schede che permette l'immissione dei dati sotto forma di schede perforate; una lettrice di banda che permette l'immissione dei dati a mezzo di banda perforata; una lettrice di documenti che permette la lettura diretta di documenti scritti con inchiostri magnetizzabili.
L'unità di uscita è l'organo che collega la macchina al mondo esterno, cioè rende note le informazioni in essa contenute. I risultati vengono comunicati in codice, sotto forma di schede perforate, o in chiaro, sotto forma di prospetti stampati.
A queste unità fondamentali possono essere aggiunte altre unità ausiliarie, e precisamente: a) le unità a nastro magnetico, che possono essere apparecchiature sia d'immissione dei dati che di emissione dei risultati: il mezzo attraverso il quale queste operazioni si esplicano è costituito da un lungo nastro magnetico, capace di contenere milioni di cifre e che viene svolto, letto, scritto e riavvolto sotto il controllo dell'unità centrale; b) le unità a dischi magnetici, che hanno la stessa funzione operativa delle unità a nastro, solo che il mezzo recante i dati è formato da dischi rotanti, anziché da nastri magnetici: esse permettono l'accesso a caso a milioni di posizioni di memorie e consentono l'immissione e l'emissione dei dati senza alcun ordine precostituito; c) le unità d'interrogazione, che costituiscono dei mezzi ausiliarî che integrano le memorie a dischi magnetici: esse permettono d'interrogare quanto può essere contenuto nelle memorie a disco e di ricevere automaticamente, e dopo poche frazioni di secondo, le risposte dattiloscritte alle domande rivolte all'elaboratore.
Durante l'elaborazione avviene un continuo scambio di dati attraverso l'unità centrale che costituisce il nucleo logico ed aritmetico del complesso.
In sostanza, una c. digitale può: leggere dei dati riportati su schede perforate, nastrì magnetici ed altri simili mezzi; ricordare ciò che essa ha letto o ha elaborato; fare una scelta tra parecchie serie di operazioni, secondo l'ordine di grandezza di certi dati immagazzinati nella sua memoria; svolgere operazioni aritmetiche (addizioni, sottrazioni, moltiplicazioni e divisioni e qualsiasi altra operazione complessa che ne deriva); scrivere i risultati elaborati in chiaro: cioè stampare dei prospetti su fogli di carta oppure presentare i dati in un linguaggio convenzionale, cioè perforare delle schede o imprimere dei "bits" su nastri magnetici.
Dotata di certe apparecchiature speciali, può essere anche interrogata su alcuni risultati parziali o per ottenere informazioni contenute nella sua memoria.
Struttura della "memoria" e del "sistema di numerazione"che ne deriva. - L'organo che risiede alla base dell'automazione delle c. digitali è la cosiddetta memoria, cioè quell'insieme di dispositivi meccanici o elettronici capace di conservare un certo numero d'informazioni per un certo tempo.
Per quanto riguarda la loro costituzione, le "memorie" possono essere: meccaniche (a linee di ritardo, a camme, a incisione, ecc.); elettroniche (a relè, a tubi elettronici, a transistori, ecc.); magnetiche (a nastro, a tamburo, a dischi, a nuclei di ferrite, ecc.); varie (a scheda o nastro perforato, a fotoincisione, a elio liquido, ecc.). Le più usate peraltro sono quelle magnetiche.
Da un punto di vista più generale, le memorie possono suddividersi in: labili, permanenti, funzionali. Memoria labile è una memoria che registra una informazione e la restituisce non appena venga a cessare l'obbligo di conservarla. Esempio tipico è un relè qualsiasi che resta eccitato fino a quando il suo circuito resta chiuso su una sorgente di energia elettrica. Le memorie permanenti, invece, conservano immutabilmente le informazioni ricevute; esse vengono adoperate sempre che una macchina debba compiere una sequenza di operazioni fisse ed ogni qual volta si desideri automatizzare una sequenza di operazioni standard. La memoria funzionale è quella che normalmente viene intesa come memoria. Essa si suddivide in: memoria di lavoro (a rapido accesso) e memoria di sostegno (ad accesso veloce).
Una prima, importante famiglia di organi di memoria è costituita dalle memorie a nuclei magnetici.
Per comprendere il funzionamento di queste memorie, si consideri un anellino magnetico (nucleo magnetico) che, sotto l'azione della corrente elettrica, che percorre un conduttore infilato in esso, può essere magnetizzato in un senso o nell'altro; essendo magnetizzato conserva questo suo stato in assenza di ogni azione esterna. La magnetizzazione può venire invertita facendo passare attraverso il conduttore una corrente elettrica in senso inverso (fig. 2).
Parecchi conduttori elettrici vengono fatti passare attraverso ciascuno di questi anellini, in modo che ogni nucleo possa essere magnetizzato senza alterare lo stato degli altri.
I due possibili stati magnetici del nucleo corrispondono all'elemento minimo d'informazione, il "bit" (v. anche informazione, teoria della in questa App.); l'alternativa nella quale si è posti può essere rappresentata da diversi simboli, per es. + e − oppure 0 e 1.
Ogni "posizione" di memoria a nuclei è costituita da un certo numero di piani o livelli di nuclei magnetici. Varie combinazioni di "bits" indicano cifre, lettere o caratteri speciali.
In una seconda famiglia di organi di memoria, la funzione di memoria è affidata a nastri o a dischi magnetici, secondo il ben noto procedimento della "registrazione magnetica" (v. suono, in questa App.).
I dati possono essere letti da diverse sorgenti di informazioni e registrati quindi sul nastro magnetico. I punti magnetizzati rappresentano le informazioni che sono state memorizzate sul nastro e vi rimangono inalterati fino a che non vengono sostituiti con nuove registrazioni. Ciò significa che, oltre ad essere usati come elementi di memoria, i nastri magnetici possono venire impiegati come mezzi per l'immissione e l'uscita dei dati. In tal modo essi costituiscono una memoria ideale per grandi quantità di dati, poiché non vi è limite al numero delle informazioni che possono essere mantenute permanentemente. Le bobine di nastro possono essere tolte dal sistema ed archiviate (e possono pure essere trasportate da un posto all'altro per essere usate con altri sistemi). I dati memorizzati sui nastri magnetici vengono letti in sequenza, a differenza dei dati registrati sui dischi magnetici, che vengono letti in modo diretto e immediato.
Il sistema di elaborazione può ispezionare il nastro o il disco per ricercare il dato che deve intervenire nell'elaborazione. Anche il programma può essere memorizzato su nastri (o su dischi) magnetici, e questo metodo di memorizzazione è comunemente usato, specialmente per i grandi sistemi. Un altro grande vantaggio offerto dalla memoria a nastri magnetici consiste nella possibilità di memorizzare su di essa i dati destinati alla stampa, ed eseguire quindi, come operazione indipendente dal sistema di elaborazione, il trasferimento dei dati dal nastro magnetico alla stampatrice.
Linguaggio. - Nel campo dell'elaborazione dei dati a mezzo di schede perforate il linguaggio comprensibile delle macchine è rappresentato dai fori esistenti sulle schede. La scheda è costituita da un cartoncino rettangolare di dimensioni variabili da Casa a Casa: ad esempio, IBM, Remington ed Olivetti Bull utilizzano il formato seguente: lunghezza: 183,3 mm; larghezza: 82,55 mm; spessore: 0,1675 mm; mentre altre case, come la SAMAS, utilizzano il formato 119 mm × 51 mm.
La scheda IBM (fig. 4) ed Olivetti Bull è composta di 80 colonne numerate nella parte inferiore. Ogni colonna ha 12 posizioni: 10 posizioni sono numerate dallo 0 al 9; al di sopra dello 0 è lasciato in bianco lo spazio corrispondente a due posizioni supplementari, 11 e 12. Si hanno in tal modo sul rettangolo 12 righe orizzontali (due delle quali non tracciate), ognuna individuata da un numero.
Il metodo di lettura delle perforazioni si basa sulla chiusura di un circuito elettrico che si determina non appena un organo di esplorazione "sente" il foro praticato sulla scheda.
Le informazioni da registrare sulla scheda contengono naturalmente sia numeri che parole. Le perforazioni numeriche utilizzano le righe dallo 0 al 9. Ad ogni cifra corrisponde il foro di posizione minima su una colonna. Le perforazioni delle cifre di uno stesso numero devono essere effettuate su colonne adiacenti. Per le perforazioni alfabetiche non è possibile seguire lo stesso criterio dell'unicità di perforazione su ogni colonna (la scheda dovrebbe disporre di almeno 26 righe): si adottano pertanto, ad esprimere le 26 alternative corrispondenti alle lettere dell'alfabeto, le combinazioni di due perforazioni sulla stessa colonna, l'una praticata su una delle tre righe 12 - 11 - 0, che prendono il nome, in questo caso, di "componenti sopraelevate o di zonatura", l'altra su una qualsiasi delle righe da 1 a g, che vengono denominate "componenti numeriche".
Di seguito si riportano i codici alfabetici IBM e Olivetti Bull:
Sui nastri magnetici i dati vengono registrati con il codice a 7 bits (fig. 5) su canali paralleli. Le registrazioni sono separate tra loro da una zona non registrata della lunghezza di 3/4 di pollice, chiamata "inter-record gap" (IRG). Un controllo "di parità" garantisce l'esattezza della scritturazione dei dati sul nastro.
Ogni carattere deve essere rappresentato da un numero pari di bits magnetici; viene quindi automaticamente aggiunto un bit di controllo C (fig. 5) a tutti i caratteri che sono rappresentati con un numero dispari di bits. Oltre a questo controllo di parità verticale, viene eseguito, per ogni registrazione, un controllo di parità orizzontale. I bits per ogni riga orizzontale vengono contati automaticamente mentre la registrazione viene effettuata e alla fine di ogni riga viene eventualmente posto un bit (simile per le sue funzioni al bit di controllo verticale) in modo che sia pari il numero dei bits di ciascuna riga.
Sistema di numerazione binario. - Per la natura stessa del "bit", che rappresenta l'esistenza di uno dei due stati possibili, i numeri, nell'elaborazione interna di una calcolatrice elettronica, vengono rappresentati nel sistema binario (base 2) anziché nell'ordinario sistema decimale.
Questo vuol dire che, invece di avere 10 simboli differenziati (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), se ne hanno soltanto 2 e precisamente: 1 per l'esistenza di un "bit" e 0 per la non esistenza (fig. 6). I numeri sono quindi scritti in base alla potenza di 2, invece che alla potenza di 10 come comunemente si usa, e cioè:
dove i coefficienti Ci possono prendere solamente i valori 0 e 1.
Similmente alla scrittura in forma decimale, un numero espresso in sistema binario si può scrivere sinteticamente sotto la forma:
Adove la posizione (da destra a sinistra) indica la rispettiva potenza della base di numerazione.
Per esempio, il numero 653 (sistema decimale), che vuol dire:
si scriverà, adoperando le potenze di 2:
oppure in forma sintetica:
Le trasformazioni da un sistema all'altro sono compiute automaticamente dalla macchina stessa in modo che l'operatore comunica alla c. le informazioni numeriche in sistema decimale e riceve poi gli elaborati in codice o in chiaro (prospetti stampati) sempre in forma decimale.
Praticamente si adoperano però sistemi misti, come per esempio, il codice "bi-quinario" o il codice "bi-decimale". In quest'ultimo sistema (utilizzato dalla IBM nei suoi più recenti calcolatori), i dati memorizzati, trasferiti o elaborati sono rappresentati come digits decimali in una notazione numerica binaria.
Il valore delle cifre decimali è la somma rappresentata dai bits presenti nelle posizioni 8, 4, 2, 1. vengono utilizzate solamente le combinazioni di bits la cui somma è 9 o meno. Considerando solamente le posizioni di bits numerici, la cifra 6 è rappresentata da 0110, la cifra 7 dal 0111 e la cifra 8 da 1000 (fig. 7).
Un digit consiste di 6 posizioni di notazione binaria: 4 bits numerici, un "flag bit" F e un bit di controllo C. Il flag bit può essere utilizzato in varî modi, in funzione dell'operazione che deve eseguire. Per es., la presenza o l'assenza di un flag bit nella posizione unitaria di un dato numerico determina il segno di quel dato (assenza, segno più; presenza segno meno). Il bit C è utilizzato per il controllo di parità, secondo il principio dianzi esposto.
Nello stesso sistema misto, vengono scritte anche le lettere o altri caratteri speciali, adoperando un codice basato su combinazioni di digits numerici.
La memoria è suddivisa in tante celle, ciascuna delle quali è destinata ad accogliere una "parola" e cioè un raggruppamento di cifre; il numero di tali cifre dicesi "lunghezza della parola". Il numero d'ordine della cella di memoria, dove può essere collocata una determinata parola, chiamasi "indirizzo"; evidentemente vi saranno tanti indirizzi quante "parole" contiene la memoria. Una parola può rappresentare una istruzione o un dato numerico. In quest'ultimo caso sorge il problema di indicare la posizione della virgola.
Vi sono due tipi di rappresentazione del numero decimale: quello a virgola fissa e quello a virgola mobile. Il sistema a virgola fissa è caratterizzato dal fatto che la virgola deve essere posizionata a seconda delle necessità del calcolo: nell'addizionare due numeri bisognerà allineare le virgole, nel moltiplicarli bisognerà tener conto del numero delle cifre decimali dei fattori, ecc.
In questo caso, non sempre si possono utilizzare tutte le posizioni decimali di una parola per le cifre significative. Ad esempio, volendo rappresentare il numero 0,00000005324678 in una "parola" di "lunghezza" uguale a 10, si dovranno trascurare le ultime quattro cifre:
(si suppone che la virgola preceda il primo zero).
Per eliminare gli svantaggi del sistema a virgola fissa, le calcolatrici moderne adoperano il sistema a virgola mobile. Questo sistema si avvantaggia del fatto che due numeri decimali che differiscono solo per la posizione delle virgole possono ottenersi l'uno dall'altro mediante moltiplicazione per una potenza di 10. Ad esempio:
Per ragioni pratiche si conviene che la virgola deve essere sempre posizionata dopo la prima cifra significativa e che alla potenza di 10 si aggiunge sempre il numero positivo costante 50. In tal modo si vengono ad eliminare gli esponenti negativi.
Nell'ipotesi che la "parola" abbia una lunghezza di 10 cifre, allora le prime otto posizioni decimali sono riservate alle sole cifre significative e le rimanenti due all'informazione riguardante la virgola. Ad esempio il numero 579,72 = 5,7972.102 viene rappresentato dalla seguente "parola":
In questo modo, con una "lunghezza di parola" uguale a 10, si possono rappresentare tutti i numeri compresi tra 10-49 e 9,9999999.1049
Cenno sui circuiti elettronici componenti l'unità aritmetica. - Lo schema elettrico dell'unità aritmetica è di una complessità straordinaria. A titolo di esempio, considereremo brevemente i circuiti che servono per le quattro operazioni elementari.
Benché i numeri scritti nel sistema di numerazione a base 2 comportino, nella loro espressione, più simboli di quelli del sistema a numerazione decimale, le regole di calcolo nel sistema binario sono molto più semplici. Per es., nell'addizionare due numeri valgono le seguenti tre semplicissime regole: 0 + 0 = 0; 0 + 1 = 1; 1 + 1 = 10. L'ultima di esse significa che si ha il riporto di uno nella posizione immediatamente vicina a sinistra della colonna che si sta addizionando. Siano da sommare, per es. i numeri 25 + 13. Trasformandoli nel sistema binario abbiamo lo schema seguente:
La traduzione di questo calcolo in termini di circuiti elettronici è immediata.
I simboli in cui sono espressi i numeri in sistema binario (0 e 1) vengono rappresentati tramite impulsi elettrici, per es. 1 con un impulso positivo e 0 con un impulso nullo. Supposto che si tratti di una operazione in serie, l'organo Elettronico che svolge un'addizione (addizionatore completo) è composto da due semi-addizionatori e da una linea di ritardo. I semi-addizionatori possono sovrapporre gli impulsi elettrici (dello stesso valore posizionale) dei due numeri, secondo le regole già esposte, ricavandone un impulso di somma parziale, accompagnato o no da un impulso di riporto (questo compare solo nel caso 1 + 1 = 10). L'impulso riporto è condotto alla linea di ritardo, la cui funzione è di ritardare il suo arrivo al secondo semi-addizionatore finché non arrivano gli impulsi di valore posizione immediatamente superiore.
Questo modo di addizionare in serie è però un po' lento, in conseguenza del fatto che gli impulsi di valore posizionale crescente entrano nell'addizionatore uno dopo l'altro. Per eliminare questi inconveniente si è immaginato di svolgere l'operazione in parallelo, cioè di far entrare contemporaneamente, nell'addizionatore, tutte le paia di impulsi che caratterizzano i due numeri da sommare. È evidente che questo modo di operare richiederà tanti addizionatori completi quanti sono le paia di digits da sommare.
Per quanto riguarda la sottrazione, essa si può svolgere in modo diretto, applicando delle regole più o meno simili a quelle già esposte, oppure per complemento; in quest'ultimo caso, la sottrazione viene trasformata in una addizione.
Le regole di calcolo per la moltiplicazione sono ancora più semplici, in quanto esse non comportano la nozione del "riporto". Esse sono infatti: 0.1 = 0; 0.0 = 0; 1.1 = 1. Uno dei più semplici organi per la moltiplicazione è composto da parecchi semi-addizionatori e addizionatori completi, opportunamente combinati. L'inconveniente di questo schema è che esso diventa sempre più complesso mano a mano che aumenta l'ordine di grandezza dei numeri da moltiplicare. Una soluzione più pratica (ed è quella adottata correntemente) è di eseguire la moltiplicazione per addizioni successive; si richiede allora uno schema elettrico speciale per gli spostamenti dei prodotti parziali prima di essere addizionati tra loro.
A causa delle analogie che esistono tra la divisione e la moltiplicazione, la maggior parte dei circuiti che servono per la moltiplicazione servono pure per la divisione. Aspetti particolari di questa operazione complicano tuttavia, in misura notevole, lo schema elettrico. Per questa ragione molte case produttrici, per limitare il costo delle macchine hanno messo sul mercato delle c. che possono eseguire la divisione tramite certi accorgimenti matematici, quali, ad esempio, il moltiplicare il dividendo per l'inverso del divisore.
Programmazione. - La risoluzione di un problema numerico viene ottenuta mediante l'esecuzione di un certo numero di operazioni elementari che possono essere sia aritmetiche (addizioni, moltiplicazioni, divisioni, ecc.) sia logiche (comparazioni). Ogni singola operazione elementare viene eseguita sotto la direzione di una istruzione, precedentemente memorizzata, redatta secondo un codice speciale. Prima dell'inizio del calcolo è necessario quindi che un operatore umano abbia scelto, tra le varie operazioni che la c. ha la facoltà di compiere, quelle necessarie per ottenere il risultato desiderato: un gruppo di istruzioni, che rappresentano le operazioni da eseguire per la soluzione di un problema, costituisce un programma.
Il programma e i dati numerici vengono registrati su schede o nastri e introdotti nell'unità d'ingresso; da qui l'informazione viene portata, sotto forma di impulsi elettrici, alla memoria, ove viene immagazzinata. Durante l'esecuzione del calcolo, le istruzioni che compongono il programma sono prelevate dalla memoria e portate in un organo di controllo che le esamina e predispone i circuiti logici della macchina all'esecuzione delle operazioni ad esse inerenti. Naturalmente il programma viene eseguito in sequenza cioè la c. inizia con la prima istruzione e successivamente svolge tutte le altre istruzioni di cui è costituito il programma, interpretandole ed eseguendole una alla volta. Comunque questa sequenza di operazioni può essere cambiata utilizzando delle istruzioni che ordinano alla macchina di non eseguire l'istruzione successiva ma di rimandarla ad una istruzione che segue nel programma.
L'insieme delle istruzioni che determinano l'esecuzione delle varie operazioni che la calcolatrice può compiere costituisce il cosiddetto "linguaggio macchina": esse sono le sole che l'organo di controllo è in grado di conoscere e di eseguire. È evidente che le prestazioni di una calcolatrice sono tanto maggiori quanto più grande è il numero delle istruzioni codificate che compongono il linguaggio macchina; a tale numero è però posto un limite da motivi economici, in considerazione del fatto che l'introduzione di nuove istruzioni nel linguaggio macchina richiede un'estensione tale dei circuiti elettronici dell'organo di controllo da portare rapidamente a valori proibitivi del costo. È per questo motivo, ad esempio, che nel linguaggio macchina non è generalmente compresa l'istruzione necessaria per l'esecuzione della divisione: essa viene eseguita, per sottrazioni successive, mediante un certo numero di istruzioni elementari.
In genere una istruzione è composta da varie parti: una che indica l'operazione da eseguire ed altre che indicano gli indirizzi delle celle dalle quali prelevare i dati e nelle quali collocare i risultati intermedî o definitivi.
Per esempio, un'istruzione composta di 10 cifre si può suddividere in 4 parti, di cui una di una sola cifra e le altre di 3 cifre.
Supposto che l'operazione "codice 1" significhi aggiungere al contenuto della memoria A il contenuto della memoria d'indirizzo B e collocare la somma nella cella di memoria d'indirizzo C, l'istruzione seguente
fa aggiungere al numero contenuto nella cella di memoria 318 quello contenuto in 521 e colloca la somma nella cella 255.
Il compito del programmatore è notevolmente complicato, avendo egli a disposizione relativamente poche istruzioni elementari. Bisogna tener conto, inoltre, del fatto che ogni istruzione deve contenere, oltre l'indicazione dell'operazione da effettuare, anche gli indirizzi delle celle di memoria da cui prelevare i dati e, rispettivamente, in cui memorizzare i risultati.
La programmazione diviene particolarmente onerosa durante l'impostazione di problemi di carattere scientifico: tali problemi, infatti, comportano una notevole massa di operazioni elementari eseguite elaborando pochi dati iniziali, il che richiede programmi molto più lunghi che nelle altre applicazioni, dove generalmente si tratta di ripetere poche operazioni su di una grande massa di dati iniziali. Altra caratteristica dei problemi scientifici è che essi richiedono l'uso continuo di operazioni e funzioni matematiche speciali, quali: estrazione di radice, elevazione a potenza, logaritmi, seno, coseno, ecc., per l'esecuzione delle quali occorre predisporre tutta una serie di sottoprogrammi da riagganciare, al momento giusto, al programma principale. Occorre notare che l'operazione di "riaggancio" richiede un certo numero di istruzioni, e che quindi se durante l'esecuzione del programma principale si ricorre numerose volte alla collezione di sottoprogrammi, il numero delle istruzioni aumenta in misura notevole.
Per rendere meno gravoso il compito del programmatore si sono create delle tecniche di programmazione particolare. Una prima semplificazione della programmazione è stata ottenuta con l'uso dei cosiddetti "sistemi interpretativi", mediante i quali la c. viene trasformata in una macchina fittizia diversa, con un linguaggio di macchina dalla struttura generalmente più semplice del linguaggio proprio della c. stessa. Una maggiore semplificazione della programmazione dei problemi di carattere scientifico si realizza con i cosiddetti "sistemi compilativi", che usano un linguaggio simile a quello algebrico in cui al posto degli indirizzi delle celle di memoria e dei codici operativi figurano simboli letterali, segni algebrici, parentesi, ecc., ed al posto di istruzioni ad uno o più indirizzi compaiono ordini espressi in un linguaggio convenzionale prossimo alla lingua parlata. Il primo sistema di programmazione compilativa è stato messo a punto dal Carnegie Institute of Technology con il nome di IT (Internal Translator).
Recentemente la IBM ha messo a punto un altro sistema di programmazione compilativa, detto FORTRAN (FORmula TRANslation) per indicare che, grazie a questo sistema, la macchina su cui si programma è in grado di tradurre in termini operativi degli ordini espressi direttamente sotto forma di formule matematiche. La IBM ha poi fuso insieme il FORTRAN e l'IT creando il sistema FORTRANSIT che può essere utilizzato da diversi tipi di c. elettroniche.
Esempio di programma. - Per stendere un programma è opportuno preparare un diagramma schematico (organigramma), mediante il quale si stabilisce la sequenza con cui vengono compiute la maggior parte delle operazioni. Così per calcolare:
costruiremo il seguente organigramma:
Immagazziniamo le variabili e costanti nelle celle di memoria:
Il programma comincia con un'istruzione "leggi" che immagazzineremo nella cella 100 per precedere il calcolo che programmeremo a partire dalla 101 utilizzando le seguenti operazioni elementari (il codice 1 significa addizione, il 2 sottrazione, il 3 moltiplicazione, il 4 divisione):
Varî tipi di calcolatrici digitali. - Sebbene le prime c. numeriche siano state create a scopo scientifico, cioè per svolgere calcoli di alta matematica, oggi le case produttrici hanno cercato, e sono riuscite in questo proposito, di specializzare queste macchine elettroniche a seconda della natura del lavoro da svolgere. Sono apparsi così sul mercato due tipi di c.: un tipo destinato a calcoli scientifici e un altro tipo per le applicazioni di natura commerciale.
Differenza principale fra le esigenze dei due campi è il rapporto fra quantità delle elaborazioni e quantità dei dati. Le applicazioni scientifiche consistono, in genere, di molte e complesse elaborazioni partendo da pochi dati e per giungere a relativamente pochi risultati; nelle applicazioni commerciali le elaborazioni, anche se complesse dal punto di vista dell'elaborazione manuale o con mezzi meno spinti, sono sempre modeste rispetto alle possibilità dei mezzi elettronici, mentre la quantità di dati da inserire e di risultati da ottenere è immensa. Di conseguenza, anche se non ci sono differenze radicali di concezione fra macchine destinate a scopi scientifici e commerciali, è notevolmente diversa l'importanza di uno sviluppo da dare all'ampiezza e velocità dei diversi organi. Particolare importanza hanno peraltro, nelle macchine a scopo commerciale, gli organi di entrata e uscita dei dati, che nelle macchine a scopo scientifico sono spesso modestissimi. Anche i dispositivi di memoria debbono rispondere ad esigenze differenziate secondo lo scopo. Infatti il numero delle memorie nelle c. scientifiche è molto più grande che nelle c. commerciali; questo perché nello svolgere i complessi calcoli scientifici si rende necessario l'immagazzinamento di un gran numero di dati intermedî, mentre negli elaboratori di dati commerciali ciò non è necessario o tutt'al più lo è in misura assai ridotta.
Ecco alcune caratteristiche tecniche delle più importanti c. numeriche oggi esistenti sul mercato.
Bibl.: E. Grabbe, S. Ramo, D. Wooldridge, Handbook of automation, computation and control, New York 1959; M. V. Wilkes, Automatic digital computers, Londra 1956; F. H. Raymond, L'automatique des informations, Parigi 1957; G. Albarella, Introduzione allo studio dei calcolatori elettronici, Napoli s.d.; F. Serbanescu, L'importanza dei calcolatori nella ricerca scientifica e nella elaborazione dei dati, in Produttività, agosto 1960.
Calcolatrici elettroniche analogiche.
Generalità. - Il primo problema che si incontra quando si vuole realizzare un dispositivo o una macchina per l'esecuzione di calcoli su grandezze, consiste nello scegliere un mezzo di rappresentazione delle grandezze stesse. Un tipo di rappresentazione che si può adottare è quello basato sulla corrispondenza tra la classe delle grandezze su cui si deve operare e una classe di grandezze fisiche continue misurabili. Queste possono essere di natura meccanica (ad es., le posizioni angolari di assi rispetto a un riferimento, e si hanno allora le c. analogiche "meccaniche"), di natura elettrica (ad es. tensioni elettriche, e si hanno allora le c. analogiche "elettriche") o di altra natura. Esse sono in ogni caso caratterizzate dal fatto di poter assumere infiniti valori nel loro campo di variazione (almeno con riferimento ai fenomeni macroscopici): questo fatto caratterizza il tipo di rappresentazione in questione, che viene chiamata analogica; analogiche vengono pure chiamate le grandezze così rappresentate e le macchine che operano su tali grandezze.
In effetti, la rappresentazione è continua solo in prima approssimazione, se non altro perché all'atto dell'associazione di un valore numerico a una grandezza fisica intervengono errori non sistematici legati alla sensibilità e alla precisione dei dispositivi di misurazione. In pratica i valori numerici che si possono associare a una grandezza fisica variabile in un determinato intervallo sono in numero finito.
È utile tener presente che attualmente si possono costruire dispositivi che consentono di passare automaticamente da grandezze analogiche a grandezze numeriche e viceversa; tali dispositivi, che si chiamano convertitori analogico-numerici e numerico-analogici, consentono di stabilire sempre un collegamento diretto tra i dati inizialmente disponibili in una certa rappresentazione (analogica o numerica) e il sistema di elaborazione (analogico o numerico), nonché di ottenere i dati finali nella rappresentazione desiderata (analogica o numerica). Ad es. il risultato fornito da una c. analogica può essere convertito in forma numerica; ed oggi effettivamente si applica anche questo procedimento di presentazione dei risultati.
Oltre che per il tipo di rappresentazione delle grandezze, le c. analogiche si distinguono da quelle numeriche per un altro fatto fondamentale. Infatti mentre nelle c. numeriche, nella quasi totalità dei casi, per eseguire più operazioni simili tra loro (per es. addizioni) si utilizza uno stesso elemento di calcolo (o operatore) successivamente nel tempo, nelle analogiche invece si hanno operatori distinti che eseguono contemporaneamente tali operazioni. Inoltre, mentre nelle c. numeriche operazioni tra loro diverse (addizioni, moltiplicazioni, integrazioni, ecc.) si riconducono generalmente ad una successione ordinata di operazioni semplici (al più di pochi tipi, per es. addizioni e moltiplicazioni), nelle analogiche si impiegano invece operatori diversi per le diverse operazioni (ad es. sommatori, moltiplicatori, integratori, ecc.). Per caratterizzare questa diversità di comportamento si dice spesso brevemente che le c. numeriche funzionano in serie e le analogiche in parallelo.
Il fatto che le c. analogiche si basano su un funzionamento in parallelo, invece che in serie, influenza in modo decisivo (oltre alla velocità di calcolo, come si vedrà più oltre) l'intera struttura della macchina.
Infatti il funzionamento in serie comporta la necessità di immagazzinare i dati finali di ciascuna operazione e quelli intermedî delle operazioni complesse, e cioè di impiegare organi di memoria; inoltre tale funzionamento richiede un coordinamento nel tempo delle singole operazioni e cioè l'impiego di complessi organi di controllo.
Viceversa in una macchina con funzionamento in parallelo le esigenze di immagazzinamento di dati e di coordinamento delle operazioni si configurano in maniera nettamente diversa e si riducono sostanzialmente all'immagazzinamento iniziale dei dati del problema e al coordinamento nello spazio (cioè al collegamento) degli operatori.
Classificazione. - Esistono molti tipi di c. analogiche, che si possono classificare in varî modi. Il criterio più diffuso è quello di distinguerle in due classi, le c. di tipo diretto e quelle di tipo indiretto, a seconda che si possa o no stabilire una corrispondenza diretta tra gli elementi fisici del sistema studiato e tra gli elementi di calcolo della macchina.
Le c. della prima classe sono in generale di tipo elettrico e in definitiva si presentano come uno strumento atto a costruire modelli elettrici; tra esse rientrano i cosiddetti analizzatori di reti che sono costituiti, per quanto riguarda gli elementi di calcolo, da resistori, induttori, condensatori e trasformatori.
Le grandezze fisiche prese in considerazione in tali macchine sono tensioni e correnti, tra le quali gli elementi prima indicati stabiliscono determinate relazioni matematiche. La classe dei problemi risolubile con gli analizzatori di reti è limitata dal tipo di operatori impiegati e dal loro numero. Così, ad esempio, per quanto riguarda i sistemi di equazioni differenziali ordinarie lineari a coefficienti costanti, sono risolubili con un numero finito di elementi di calcolo solo quelle che soddisfano alle condizioni di realizzabilità delle reti elettriche costituite da resistori, induttori, condensatori e trasformatori.
I primi analizzatori di reti sono stati costruiti intorno al periodo della prima guerra mondiale; essi vengono anche oggi impiégati per la risoluzione dei problemi relativi alle reti di trasmissione dell'energia (distribuzione dei carichi, studio di corti circuiti, ecc.) e di molti altri problemi (di elasticità, di meccanica, ecc.) Tra gli analizzatori di reti particolare fisionomia hanno quelli costituiti soltanto da resistori, che vengono impiegati per la risoluzione delle equazioni differenziali alle derivate parziali relative a campi vettoriali.
Passando a considerare le c. della seconda classe, cioè quelle di tipo indiretto, è possibile distinguere quelle in cui le grandezze sono elettriche, quelle in cui sono meccaniche, quelle in cui sono parte elettriche e parte meccaniche, ecc.; corrispondentemente si potrà parlare di c. analogiche elettriche, meccaniche, elettromeccaniche, ecc. Le c. elettriche sono spesso chiamate elettroniche in quanto utilizzano dispositivi elettronici. Nelle c. di tipo indiretto gli elementi di calcolo sono costituiti da operatori che consentono, in numero adeguato, di risolvere una classe di problemi più ampia di quella che si può risolvere con le c. di tipo diretto. Per questa ragione e per la possibilità di raggiungere precisioni più elevate, attualmente, salvo il caso di problemi speciali, le c. analogiche in uso sono sempre di tipo indiretto.
Nel seguito ci si occuperà soltanto delle macchine di questo tipo; si considererà inoltre il solo caso delle c. elettroniche che, realizzate durante la seconda guerra mondiale, hanno avuto da allora, per i numerosi vantaggi ch'esse offrono, un rapido e notevole sviluppo.
Per quanto riguarda la presentazione della soluzione, le c. analogiche possono essere distinte in lente e ripetitive. Le seconde sono caratterizzate dal fatto che una stessa soluzione si ripete automaticamente a una frequenza prefissata, in generale tale che la soluzione può essere visualizzata sullo schermo di un oscilloscopio a raggi catodici. Le macchine lente invece forniscono la soluzione una sola volta.
Il tipo ripetitivo ha il vantaggio di fornire una visualizzazione diretta e pronta delle modificazioni della soluzione al variare di uno o più parametri del sistema in studio; esso richiede elementi con risposta molto pronta, il che si può ottenere soltanto a scapito della precisione.
Il tipo oggi più largamente usato è quello lento. Tuttavia anche le macchine lente possono essere fatte funzionare in modo ripetitivo con l'aggiunta di opportuni organi; in tal modo si può procedere a una esplorazione di massima del comportamento del sistema con precisione ridotta e, passando successivamente al funzionamento lento, all'affinamento dei calcoli.
Precisione e velocità di calcolo. - Nelle c. analogiche la precisione raggiungibile è limitata, una volta fissato il campo di variazione delle grandezze, dalla precisione del dispositivo di misura dei risultati. Tale dispositivo può essere di tipo analogico, e cioè tale da fornire il diagramma di una variabile in funzione del tempo o di una variabile rispetto ad un'altra; in tal caso la precisione che può essere raggiunta è dell'ordine dello 0,01% (per segnali sufficientemente lenti). Oppure esso può essere di tipo numerico, e cioè tale da fornire i valori della variabile, con un certo intervallo di campionamento, in forma numerica; in tal caso la precisione raggiungibile è maggiore ed è limitata soltanto dalla precisione degli elementi di calcolo. Questa, nelle soluzioni attuali, non supera lo 0,01% per singolo operatore; la precisione effettiva dipende, naturalmente, dal numero di operatori impiegati, dalla natura del problema e dal modo da risolverlo. Ne consegue che in definitiva il valore limite superiore della precisione è dello 0,01%; in pratica la precisione con cui si può fornire un risultato è di 0,1%÷1%.
Quanto alla velocità di calcolo, si può subito dire che, grazie al funzionamento in parallelo, la velocità delle c. analogiche è tale da consentire, in generale, il funzionamento anche nelle condizioni più onerose che praticamente si presentano, senza comportare diminuzioni della precisione.
È utile osservare che la precisione delle c. analogiche è inferiore a quella raggiungibile con le c. numeriche, mentre la velocità di calcolo è maggiore. Ciò vale in termini generali e qualitativi; peraltro, il confronto va fatto volta per volta in relazione a problemi specifici. A questo proposito occorrerebbe distinguere nelle c. numeriche tra precisione della rappresentazione, che dipende soltanto dal numero di cifre e quindi dalle dimensioni della macchina, e precisione di calcolo che invece dipende anche dal procedimento di calcolo adottato e dal tempo concesso per l'esecuzione del calcolo stesso.
Campi preferenziali di impiego. - Le c. analogiche sono particolarmente adatte a risolvere sistemi di equazioni differenziali ordinarie (lineari e non); è questo perciò il loro specifico campo di impiego e talora anzi, per questa ragione, esse vengono chiamate analizzatori differenziali. È possibile risolvere con queste macchine anche problemi algebrici o di altro tipo, ma in questi casi l'impiego delle c. numeriche risulta spesso preferibile.
Per meglio individuare i settori in cui è più diffuso l'impiego delle c. analogiche conviene distinguere i problemi che si devono affrontare a seconda che si tratta di: a) risolvere uno specifico sistema di equazioni differenziali ordinarie; b) esplorare il comportamento di un sistema (per es. un servomeccanismo), in parte noto e in parte da progettare, per individuare quella configurazione del sistema stesso e quei valori dei parametri che consentono di conseguire le prestazioni prefissate.
La differenza tra i due casi sta sostanzialmente nel fatto che, mentre nel primo caso si tratta di trovare la soluzione una volta assegnata l'equazione, nel secondo caso invece occorre trovare l'equazione, e quindi le caratteristiche del sistema, una volta assegnata sia pure parzialmente la soluzione. Ora, mentre per i problemi del tipo a) sono disponibili metodi matematici ben definiti, che possono essere programmati anche sulle macchine numeriche, per quelli del secondo tipo non è disponibile un metodo rigoroso e generale. In effetti il metodo che si è dimostrato di maggiore efficacia a tale scopo è quello basato sull'applicazione dei concetti e dei metodi operatorî della moderna teoria delle reti elettriche; poiché le macchine analogiche sono particolarmente adatte ad affrontare i problemi da un punto di vista operatorio, ne risulta la convenienza dell'impiego di tali macchine quando i problemi da risolvere (purché legati in definitiva a equazioni differenziali) sono del tipo b). Poiché questi, d'altra parte, si incontrano nel progetto dei sistemi di controllo a controreazione (regolazione industriale, controllo di reattori nucleari, ecc.) si ha che in tale campo trovano particolarmente diffusione le c. analogiche; concorre a ciò la favorevole circostanza che la precisione richiesta di solito in questo tipo di problemi può essere largamente raggiunta con le attuali macchine analogiche.
Dal punto di vista dell'impiego, conviene anche distinguere le c. analogiche a seconda che hanno una struttura atta a consentire la risoluzione di una classe sufficientemente larga di problemi (c. di tipo universale) ovvero di un solo problema (c. di tipo speciale). Tra le c. speciali si possono citare gli analizzatori in serie di Fourier, i correlatori, gli isografi (risolutori di equazioni algebriche), le centrali di tiro, ecc.
Struttura. - Unità fondamentali. - Le c. analogiche elettroniche, sia di tipo lento sia di tipo ripetitivo, sono costituite da tre unità fondamentali: l'unità di calcolo, l'unità di immagazzinamento dei coefficienti, l'unità di collegamento e di controllo.
L'unità di calcolo è costituita da tutti gli operatori di calcolo della macchina.
Gli operatori, nei quali le variabili dipendenti sono tensioni elettriche e e la variabile indipendente è il tempo t, si dividono in due categorie: operatori lineari e non lineari.
Fra i primi sono:
a) i combinatori lineari, che forniscono a partire da n tensioni di ingresso ei1 (t), ei2 (t)..., ein (t) una tensione d'uscita eu (t) data dalla relazione:
essendo le ak costanti;
b) gli integratori, che forniscono a partire da una tensione d'ingresso ei(t) una tensione d'uscita eu(t) data dalla relazione:
essendo a una costante ed euo il valore iniziale di eu (t).
Gli operatori non lineari più diffusi sono sostanzialmente:
a) i generatori di funzioni, che a partire da una tensione ei(t) forniscono una tensione eu (t) = f [ei(t)], dove la f può essere scelta in una classe sufficientemente estesa attraverso una opportuna predisposizione dei parametri dell'operatore;
b) i moltiplicatori di due variabili, che a partire da due tensioni ei1 (t) ed ei2 (t) forniscono una tensione eu (t) = ei1(t) • ei2(t).
Nella tabella 1 sono indicati denominazioni, simboli e funzioni dei varî operatori.
Strettamente collegata all'unità di calcolo, è l'unità di immagazzinamento dei coefficienti, costituita dai componenti che consentono di inserire nella macchina stessa i coefficienti numerici relativi al problema da risolvere.
Queste due unità danno con il numero dei loro elementi (variabile da una decina a qualche centinaio) un'indicazione della potenzialità della macchina.
L'unità di collegamento e di controllo è costituita dagli organi che consentono di effettuare il collegamento dei diversi elementi delle altre due unità e da dispositivi per il comando delle varie fasi del calcolo.
Per quanto riguarda il collegamento, le soluzioni sono sostanzialmente di due tipi. In quelle del primo i terminali tra i quali si devono effettuare i collegamenti sono riportati a un pannello centrale di interconnessione; in tali macchine sono inoltre previsti uno o più pannelli (uguali tra loro) inseribili su quello centrale di interconnessione, sui quali si possono effettuare, con opportuni cavi, i collegamenti tra gli elementi di calcolo richiesti per la soluzione del problema allo studio. Nell'altro tipo di soluzione i terminali vengono previsti separatamente per i singoli elementi di calcolo, mentre opportuni cavi consentono, come nell'altro caso, di effettuare le connessioni. Le soluzioni del primo tipo sono ovviamente più onerose per i varî problemi meccanici ed elettrici da risolvere, ma offrono la possibilità di predisporre a parte il programma di calcolo e consentono quindi di impiegare la macchina per maggior tempo, sfruttando più pannelli mobili di interconnessione.
Per quanto riguarda i dispositivi per il comando delle varie fasi del calcolo, si tratta di circuiti che consentono di inserire le condizioni iniziali, di avviare il calcolo, di fermarlo, di eseguire prove degli schemi di calcolo, ecc. In generale sono circuiti molto semplici, che utilizzano relè per stabilire le connessioni corrispondenti alle diverse fasi. Nel caso delle macchine ripetitive in tale unità sono previsti anche gli organi per la ripetizione automatica della soluzione.
Accanto alle operazioni eseguite dalle tre anzidette unità fondamentali, occorre tener presenti le operazioni di connessione degli elementi di calcolo e di inserimento dei coefficienti, da un lato, e la presentazione dei risultati del calcolo, dall'altro, cioè in definitiva le operazioni corrispondenti a quelle svolte dall'unità di ingresso e dall'unità di uscita delle c. numeriche.
Per quanto riguarda le operazioni iniziali, esse vengono effettuate di norma da un operatore umano; solo in macchine di dimensioni notevoli può risultare conveniente renderle automatiche. Oggi sono disponibili unità di ingresso, che eseguono automaticamente la predisposizione della macchina, a partire da un programma di calcolo (connessione degli operatori, inserimento dei coefficienti, ecc.) introdotto su banda perforata o con altri sistemi equivalenti.
Per quanto riguarda la presentazione dei risultati, occorre tener presente che le soluzioni di un problema sono costituite, nelle macchine che si stanno esaminando, da tensioni che variano nel tempo, per cui l'unità di uscita è di norma costituita, per le macchine di tipo lento, da voltmetri registratori, del tipo a bobina mobile o del tipo ad asservimento. Tra questi ultimi, particolarmente diffusi per la loro intrinseca precisione sono i servoregistratori a due coordinate (ingl.: plotter); essi sono costituiti da due servomeccanismi che comandano il movimento di una penna scrivente secondo due assi ortogonali e consentono di ottenere il diagramma cartesiano della soluzione. Come unità di uscita possono essere usati anche un convertitore analogico-numerico e una stampatrice, che consentono di ottenere, a intervalli di tempo regolare, i valori numerici della soluzione. Nelle macchine di tipo ripetitivo si impiega invece, come s'è detto, un oscilloscopio a raggi catodici.
La descrizione anche sommaria dei circuiti che consentono di realizzare le varie funzioni delle anzidette unità richiederebbe troppo spazio; ci si limiterà perciò a descrivere gli operatori lineari dell'unità di calcolo e l'unità di immagazzinamento dei coefficienti, che costituiscono effettivamente il nucleo delle macchine.
Per quanto riguarda gli operatori non lineari dell'unità di calcolo le tecniche proposte e applicate per realizzare tali operatori sono molto varie; in effetti però le soluzioni più diffuse sono praticamente due, una basata sull'impiego di servomeccanismi e potenziometri (servooperatori), l'altra basata sull'impiego di diodi insieme con gli stessi componenti impiegati per gli operatori lineari (operatori a diodi): i primi sono in generale più precisi e meno rapidi dei secondi.
Gli operatori lineari dell'unità di calcolo. - Il combinatore lineare viene realizzato mediante il circuito di fig. 8; questo è costituito da un amplificatore, indicato con un settore nella figura, che ha guadagno e dà luogo a un'inversione di segno dell'uscita eu (t) rispetto al suo ingresso eg(t), da n resistori Rik (k = 1, 2,..., n) connessi tra i punti di applicazione delle tensioni d'ingresso eik (t) e l'ingresso P dell'amplificatore, e da un resistore Rr connesso tra l'uscita e l'ingresso dell'amplificatore. Scrivendo l'equazione di equilibrio delle correnti in P si trova che la eu(t) differisce (a parte il segno) dalla combinazione lineare delle tensioni di ingresso eik (t) di una quantità proporzionale a eg(t). Ma quest'ultima, pari a −eu (t)/G, si può rendere sufficientemente piccola aumentando il guadagno G dell'amplificatore; tale guadagno in pratica viene fatto così elevato da rendere l'errore percentuale inferiore a 1/10000. Con tale approssimazione è dunque valida la relazione
dove i coefficienti della combinazione Rr/Rik possono essere ⋛ 1 a seconda che sia Rr ⋛ Rik.
Casi particolari del combinatore sono l'invertitore, il moltiplicatore per una costante e il sommatore (v. tabella 2).
L'integratore viene realizzato mediante il circuito di fig. 9. L'equazione di equilibrio delle correnti in P si può scrivere nella forma:
La eg(t) è legata alla eu(t) dalla relazione eg (t) = −eu (t)/G; quindi, aumentando G, si può ridurre la differenza fra la tensione di uscita eu(t) e l'integrale, cambiato di segno e moltiplicato per 1/(RiCr), dell'ingresso. Compare però a secondo membro l'integrale di eg(t), per cui l'errore potrà essere contenuto entro limiti prefissati, una volta scelto G, soltanto limitando il tempo di integrazione. In pratica si può aumentare G in maniera che l'errore percentuale risulti di 1/10000 per un tempo massimo di integrazione di 100 sec circa. Con tali approssimazioni è valida la relazione
Il circuito di fig. 9 si può generalizzare disponendo più resistori d'ingresso; si ha così l'integratore-combinatore, per il quale schema, simbolo e funzione sono riportati nella tab. 2. L'esame di questa tabella mostra come gli operatori fondamentali corrispondono a casi particolari del circuito più generale di fig. 10 e si ottengono scegliendo per le impedenze, volta a volta, resistenze o capacità.
Dal rapido esame precedente risulta che gli operatori lineari sono in sostanza realizzati mediante amplificatori ad accoppiamento diretto, resistori e condensatori. Per quanto riguarda gli amplificatori, nelle macchine di elevate prestazioni (di tipo lento) essi sono a compensazione automatica della deriva (v. amplificatore elettrico, in questa App.) e hanno un guadagno statico dell'ordine di 108, una banda passante nel funzionamento da invertitore dell'ordine di 20÷30 kHz, una resistenza d'uscita nel funzionamento da invertitore dell'ordine di 0,01 Ω, una corrente di griglia dell'ordine di 10-12 A, una tensione di deriva equivalente nel funzionamento da integratore dell'ordine di 100 μV/sec, una tensione di rumore dell'ordine di qualche mV. Sono queste prestazioni molto spinte che assicurano la precisione (di cui prima si è detto) di 1/10000 per il combinatore e di 1/100000 (per 100 sec di funzionamento) per l'integratore. Naturalmente occorre anche che resistori e condensatori abbiano una precisione dello stesso ordine di grandezza cioè almeno di 1/10000; ciò richiede generalmente la necessità di mantenere tali elementi in termostato. Va infine notato che resistenze e capacità devono essere "pure" e ciò comporta l'adozione per le capacità di condensatori al polistirolo, che hanno un'elevatissima resistenza di isolamento.
Unità di immagazzinamento dei coefficienti. - Tali elementi sono costituiti da potenziometri. Si consideri infatti un potenziometro e sia ad esso applicata una tensione ei(t); se R è la sua resistenza totale ed r la resistenza del tratto compreso tra la massa e il cursore, ai capi di questo si raccoglie una tensione eu(t) = (r/R) ei(t) = ap ei(t), dove la costante ap varia tra 0 e 1 quando il cursore si sposta da A a B (fig. 11). Poiché per gli operatori fondamentali vengono previsti pochi e ben definiti valori dei coefficienti (ad es. 1 e 10), se si desidera realizzare un coefficiente avente il generico valore a ciò si potrà ottenere considerando a come il prodotto di uno dei coefficienti ottenibili con gli operatori fondamentali per un opportuno valore ap ottenibile con un potenziometro, secondo lo schema di fig. 12.
Il fatto che il potenziometro sia chiuso non su impedenza infinita ma su un'impedenza d'ingresso circa eguale a Rik porta a un errore la cui grandezza può giungere a qualche percento. Per tener conto degli effetti di carico si alimenta il potenziometro già connesso con l'operatore (e quindi già sottoposto al carico) con una tensione fissa E e si sposta il cursore fino a leggere sul voltmetro V (fig. 13) il valore apE, dove ap è il valore desiderato per il coefficiente. La precisione della predisposizione dipende da quella della tensione di riferimento E, da quella del voltmetro e, naturalmente, dal potere risolutivo del potenziometro. È normalmente disponibile una tensione di riferimento E = ± 100 V con precisione di 1/10000 (anche per l'inserimento delle condizioni iniziali); come voltmetro nelle macchine più recenti si usa un voltmetro numerico a quattro cifre; per avere un sufficiente potere risolutivo, si usano generalmente potenziometri a 10 giri. Una soluzione più economica, impiegata sulle macchine di piccole dimensioni, è quella di usare uno schema a ponte, confrontando la tensione da leggere con quella di un potenziometro di riferimento alimentato anch'esso dalla tensione E e non caricato (fig. 14).
Impiego. - Esempio di risoluzione di un'equazione differenziale. - Pur potendo impiegare, come si è detto, le c. analogiche per risolvere problemi di vario tipo, si limiterà l'esposizione al caso della risoluzione di equazioni differenziali ordinarie, che è l'impiego più diffuso di tali macchine. Si consideri dunque la seguente equazione del secondo ordine (ma quanto segue può estendersi a un sistema di equazioni di ordine n):
in cui x(t) è una funzione data, y(t) è la funzione da determinare e a0, a1, a2 e b sono coefficienti costanti. Siano inoltre assegnati i valori iniziali [y(t)]t=0 e
Si riscriva ora l'equazione [1] in maniera da lasciare al primo membro la derivata di ordine più elevato:
e si supponga di voler risolvere l'equazione [2] con un metodo di successive approssimazioni. Si può procedere in questo modo. Si fissano soluzioni di prima approssimazione per y(t) e
e siano y1(t) e
si sostituiscono tali valori al secondo membro della [2]; si esegue il calcolo indicato dall'espressione, e cioè la combinazione lineare di x(t), y1(t) e
Integrando il risultato si ottiene una soluzione di seconda approssimazione per la derivata prima e sia
integrando ancora si ottiene y2(t). In definitiva, per passare dai valori di prima approssimazione a quelli di seconda approssimazione sono state necessarie soltanto operazioni di combinazione lineare e di integrazione. I valori ottenuti, e cioè y2 (t) e
possono essere utilizzati per ottenere valori di terza approssimazione, e così via. Se il procedimento è convergente, yn (t) e
per n S-107??? ∞ tendono a y (t) e
rispettivamente.
Ciascuna fase di questo procedimento è realizzabile con gli operatori di una c. analogica, e precisamente con combinatori e integratori; si ha lo schema di fig. 15 (in cui sono usati i simboli della tabella 1).
Operando con questo schema, alla fine di ciascuna fase bisogna introdurre all'ingresso del combinatore i valori ottenuti; viene allora naturale collegare direttamente le uscite dei due integratori con gli ingressi corrispondenti del combinatore, eventualmente per il tramite di invertitori: nasce così lo schema definitivo di fig. 9, col quale le successive approssimazioni vengono effettuate automaticamente e molto rapidamente.
Si può anche interpretare lo schema di fig. 16 dicendo che partendo dagli operatori (in particolare da combinatori lineari e da integratori) si è costruito un circuito elettronico complessivo la cui evoluzione dinamica è descritta proprio dall'equazione da risolvere.
La soluzione fornita dalla macchina è la tensione d'uscita del secondo integratore, che può essere letta e registrata mediante un opportuno strumento.
Cenni sui problemi della programmazione. - L'esempio precedente dà un'indicazione sull'impiego delle c. analogiche per la risoluzione di equazioni differenziali ordinarie; per altri tipi di problemi occorre ricondursi a problemi di tipo differenziale oppure studiare programmi di calcolo specifici: tuttavia, uscendo dal campo delle equazioni differenziali, la programmazione delle c. analogiche diventa, come efficacemente è stato detto, un'arte piuttosto che l'applicazione di una serie di regole rigide.
Nella programmazione delle c. analogiche si possono distinguere due fasi. Una prima fase consiste nello scrivere le equazioni assegnate nel modo più adatto ai metodi del calcolo analogico nonché al tipo di macchina usato. Occorre tener presente che spesso per uno stesso problema è possibile immaginare molti schemi di calcolo; in generale conviene operare la scelta in maniera da avere uno schema aderente al problema fisico descritto dalle equazioni da risolvere.
Definite le equazioni da risolvere, occorre, e questa è la seconda fase, introdurre "fattori di scala" che consentono di passare dalle equazioni anzidette alle cosiddette "equazioni di macchina", cioè di passare dal dominio in cui è definita la soluzione del problema dato a quello in cui sono definite le variabili di macchina. Quest'ultimo, detto τ il "tempo di macchina" e detta e la tensione è definito dalle relazioni: 0 〈 τ 〈 τmax; emin 〈 e 〈 emax. τmax dipende dalla rapidità di risposta degli operatori e da altri fenonleni (si è già detto, ad es., che per un buon funzionamento degli integratori τmax deve essere dell'ordine di 100 sec); emin ed emax sono in generale uguali ed opposti (nelle macchine a tubi elettronici è normalmente emax = −emin = 100 V). Vedi tav. f. t.
Bibl.: G. A. Korn e T. M. Korn, Electronic analog computers, New York 1956; G. W. Smith e R. C. Wood, Principles of analog computation, New York 1959; A. S. Jackson, Analog computation, New York 1960; W. J. Karplus, Analog simulation, New York 1958.