* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Maggio 15, 2024, 12:59:20 pm

Inserisci il nome utente, la password e la durata della sessione.

563 Visitatori, 0 Utenti

Autore Topic: Sul determinate, vettori, matrici e ricorsione  (Letto 1109 volte)

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Sul determinate, vettori, matrici e ricorsione
« il: Giugno 29, 2023, 03:45:24 am »
Apro un 3ad su dei massimi sistemi filosofici con cui si deve cimentare  quando si fa un attimo di calcolo scientifico : vettori, matrici e processi ricorsivi.

Su vettori e matrici:
In pratica chi inizia a fare un minimo di calcolo scientifico il primo argomento con cui deve fare i conti sono i vettori e le matrici.

La premessa principale, la "master equation" , è semplice: la ruota è già stata scoperta e non è nemmeno coperta da brevetto; alias, lazarus ha già nel "firmware di base"  quanto serve per gestire matrici e vettori in maniera egregia:

https://wiki.freepascal.org/NumLib_Documentation

Purtuttavia mi ha sempre incuriosito incuriosito la storia del determinante di una matrice:

https://it.wikipedia.org/wiki/Storia_del_determinante

Nella libreria sopracitata c'è già la routine per il calcolo del determinante, on line poi ci sono una infinità di siti che ne parlano .

Quindi nel caso serva per una qualche applicazione il calcolo matriciale, gli strumenti già ci sono e sono pure ben collaudati, di nuovo c'è ben poco da scoprire.

Ora, il determinante mi incuriosisce per le implicazioni che ha nel mondo del calcolo automatico.
Mi spiego meglio: fino alle matrici 3*3 ci sono delle semplici regole per calcolarlo, nulla che non si possa fare in un attimo .

Per matrici di ordine superiore c'è l' algoritmo di Laplace

https://it.wikipedia.org/wiki/Teorema_di_Laplace

E' un algoritmo ricorsivo , ossia la ricorsione compare come un fatto "naturale"  , anzi, la ricorsione fa parte delle cose di madre natura, non è un sfizio da rivista di enigmistica.

Nella "logica" del nostro quotidiano la ricorsione è un fatto a cui non diamo peso perché  dietro l'angolo c'è sempre la fallacia logica del ragionamento circolare

https://it.wikipedia.org/wiki/Diallele

A mio avviso è stata proprio l'informatica a far emergere l' importanza della ricorsione staccandola dal limbo del Petitio principii (https://it.wikipedia.org/wiki/Petitio_principii).

In sinesi , la ricorsione è una forma di ragionamento circolare valida purché nella sua definizione ci sia un inizio e una fine certa, ossia  non si crei un  loop infinito, alias ancora  purché converga ad un risultato.

L'esempio classico della ricorsione è il calcolo del fattoriale e .. e anche il calcolo delle aliquote delle tasse .

Tornando al determinante, l'algoritmo di Laplace all'apparenza è semplice,  ma nasconde dentro di sé la complessità, una complessità  enorme perché q quando si cerca di reificarlo con carta e penna (o con due righe di programma), il numero di calcoli da eseguire va all' infinito in un attimo: leggevo che per una matrice 100*100 il tempo di calcolo richiesto sia dell' ordine di  quello dell'età dell' universo.
Questo ha portato allo sviluppo di alternative per il calcolo del determinante,  molte delle quali si basano sulla natura simmetrica delle cose (alias, se le matrici sono simmetriche e magari anche sparse o a bande le cose si semplificano e di molto pure).

La curiosità mi ha così portato a cercare sul web del codice per il calcolo del determinante con il metodo di Laplace ,ed essenzialmente si trova del codice in c , un esempio:

https://www.tutorialspoint.com/cplusplus-program-to-compute-determinant-of-a-matrix#

Ho provato a convertirlo  in pascal - non ho un compilatore c++ né il tempo per cercarlo - e il risultato è  ...è  che non funziona, in un attimo appaiono messaggi del tipo "stack overflow" e il pc va in crash di brutto, si deve resettare tutto .

Ora non so se è un casino fatto dal software  "C to Pascal converter" o se il codice c non funzionava di suo già all' inizio , però la cosa interessante sta proprio in questo "casino", ossia di come con il debugger di lazarus si riesca seguire il codice passo passo, visualizzare il valore delle variabili, matrici comprese e risalire così alle parti di codice che non vanno.

Si erano cose già presenti nel Turbo Pascal della Borland ma è sempre affascinante  seguire il codice passo passo e vedere dove le variabili  dei loop port all'errore  classico dello sfondamento dei limiti degli array .

Conclusioni: quel codice C non va e  ho riscritto una routine analoga in pascal che funziona - dalla serie "portabilità del software -.

Morale ? Nessuna se non quella di "validate il codice prima".

« Ultima modifica: Giugno 29, 2023, 04:46:04 am da Avogadro »

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1272
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #1 il: Giugno 29, 2023, 10:14:41 am »
A parte la disgressione sul determinante, che varrebbe la pena approfondire (faccio solo un accenno che ora per i calcoli matriciali / vettoriali vengono usate le più avanzate risorse hardware quali avx, avx2, avx-512 e via di seguito ma che compilatori in grado di usare tali tecnologie si contano sulle dita di "mezza mano"  ;D ), la morale finale di validare il codice  e non prendere tutto per buono è fondamentale, essenziale e un "MUST" per ogni programmatore (e non solo).

Al giorno d'oggi dove l'AI si stà imponendo in maniera così pesante ed invasiva, dove sembra che il programmatore sparirà soppiantato dalle suddette tecnologie è sempre più importante fare attenzione a ciò che si usa e da cui si deriva poi il lavoro.

Ho scritto in altri post (non ricordo se in questo forum) che la base di uso di un componente di terze parti (qui presuppongo che l'uso dei componenti base integrati in un ambiente non abbia segreti) DEVE ESSERE CAPITA E COMPRESA, e dirò di più .... molte volte il componente lo ritocco se non addirittura rifarlo. E non tanto per il gusto di "perdere tempo" ma perchè così riesco a comprendere se effettivamente sono "padrone" di quel codice.
Tutto ciò che faccio per lavoro poi ha una ripercussione in caso di malfunzionamenti (magari legati a degli aggiornamenti) e quindi non posso permettermi il lusso di avere dubbi o di lasciare lacune vaganti che con il tempo diventano piu che "LAGUNE" veri e propri "ABISSI" di vuoto (è un gioco di parole per fare capire meglio lo stato d'animo).

Tornando al codice, si trova molto spesso codice che sembra "buono" ma poi si incappa nella solita "eccezione" non prevista che manda a monte molto spesso parte del lavoro e che ci costringe a reinventare la ruota.

E guardate che se avete avuto a che fare con l'AI questa è la norma. Il codice fornito da queste tecnologie è sempre incompleto e se con linguaggi "interpretati" come JAVA o PYTHON ci si avvicina molto alla realtà operativa (ma sempre e comunque incompleta), in altri linguaggi è molto spesso incongruente oltre ad essere incompleto.

Il programmatore non sparirà, cambierà probabilmente veste ma diventerà sempre di più essenziale riuscire a comprendere ciò che si ha davanti se si vuole "sopravvivere".

Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

doc

  • Jr. Member
  • **
  • Post: 96
  • Karma: +2/-0
  • "L'Ingegnere sa quello che fa e fa quello che sa".
    • Spagnotto Ing. Mirko
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #2 il: Giugno 29, 2023, 09:23:51 pm »
“Il computer non è una macchina intelligente che aiuta le persone stupide, anzi, è una macchina stupida che funziona solo nelle mani delle persone intelligenti.”
Il programmatore non sparirà mai, perchè è lui, e solo lui, la vera Intelligenza.

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #3 il: Giugno 29, 2023, 09:52:54 pm »
Se puo' servire, il semplice codice che ho sviluppato per il calcolo del determinante , nulla di che, due pulsanti e un meno in cui fare il logout ;
la ricorsione , un argomento affascinante ;
al posto degli if then else, strausati negli esempi sulla  ricorsione.  preferisco il selettore multiplo case ... of , rende il codice piu' "leggibile", anzi "piu' seguibile", mi si passi il termine ; poi va da sè che tutto è perfettibile.

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, ComCtrls,
  ActnList, StdCtrls, Buttons, StdActns, rxctrls, math,numlib;

type

  { TForm1 }

  TForm1 = class(TForm)
    Action1: TAction;
    Action2: TAction;
    ActionList1: TActionList;
    Button1: TButton;
    Button2: TButton;
    EditCopy1: TEditCopy;
    EditCut1: TEditCut;
    EditDelete1: TEditDelete;
    EditPaste1: TEditPaste;
    EditSelectAll1: TEditSelectAll;
    EditUndo1: TEditUndo;
    ImageList1: TImageList;
    Memo1: TMemo;
    Memo2: TMemo;
    PageControl1: TPageControl;
    Panel1: TPanel;
    StatusBar1: TStatusBar;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    procedure Action1Execute(Sender: TObject);
    procedure Action2Execute(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Action1Execute(Sender: TObject);
begin
  application.Terminate;
end;

procedure TForm1.Action2Execute(Sender: TObject);
const
  nmax: integer=10; // max matrix dim.

  type
    tmatrix =  array of array of Double;

const
    matrice: tmatrix =((1,2,1,1),(2,1,3,1), (0,2,2,0), (1,2,0,0)); // det = 10

  function determinant( matrix: tmatrix; n: Integer ): double;
  var
    i,i1,j,j1,p: integer;  // p: pivot, colonna scelta
    ism,jsm: integer; // indici sub matrice
    ik,jK:integer;
    submatrix: tmatrix;
    res: double;
    s: string;

  begin
     res:=0;
     case inrange(n,1,nmax) of
          false: determinant:=res;
          true: begin
                  case n of
                       // i, j scalati di 1
                       1: res:= matrix[0,0];
                       2: Res:= matrix[0,0]*matrix[1,1]-matrix[1,0]*matrix[0,1];
                       3: Res:= matrix[0,0]*matrix[1,1]*matrix[2,2]+
                                matrix[0,1]*matrix[1,2]*matrix[2,0]+
                                matrix[0,2]*matrix[1,0]*matrix[2,1]-
                                matrix[0,2]*matrix[1,1]*matrix[2,0]-
                                matrix[0,1]*matrix[1,0]*matrix[2,2]-
                                matrix[0,0]*matrix[1,2]*matrix[2,1] ;
                               // a11*a22*a33+a12*a23*a31+a13*a21*a32
                               //-a13*a22*a31-a12*a21*a33-a11*a23*a32
                  else begin
                        SetLength(submatrix, n-1, n-1);
                        p:=0; // pivot, per ora è la prima colonna
                       {
                        https://www.tutorialspoint.com/cplusplus-program-to-compute-determinant-of-a-matrix#
                        (1,2,1,1),
                        (2,1,3,1),
                        (0,2,2,0),
                        (1,2,0,0)
                         det = 10
                       }
                       //
                       // loop sulle righe
                       for i:=0 to n-1 do begin
                           // reset submatrix
                           for ik:= 0 to n-2 do
                               for jk:=0 to n-2 do
                                   submatrix[ik,jk]:=0;
                           // loop sulle righe
                           ism:=0;
                           for i1:=0 to n-1 do begin
                               case (i1=i) of
                                    false: begin
                                             //loop sulle colonne
                                             jsm:=0;
                                             for j:=0 to n-1 do begin
                                                 case (j=p) of
                                                      false: begin
                                                               submatrix[ism,jsm]:=matrix[i1,j];
                                                               inc(jsm);
                                                               end;
                                                      true:;
                                                  end;
                                                 end; // loop sulle colonne
                                             inc(ism);
                                             end;
                                    true: ;
                               end; //  case
                               end; // loop sulle righe
                               for ik:=0 to Ism-1 do begin
                                   s:='';
                                   for jk:=0 to jsm-1 do  begin
                                       s:=s+floattostr(submatrix[ik,jk])+ ' ';
                                       end;
                                   memo1.lines.add(s);
                                   memo1.Refresh;
                                   end;
                               memo1.lines.add(' ');
                               res:= res+power(-1, i) * matrix[i,p] *determinant( submatrix, n-1);
                               memo1.lines.add('res = ' + floattostr(res));
                               memo1.lines.add(' ');
                           end;
                       end;
                  end; // case
          end;
     end; // case
    determinant:=res;
END;   // function

begin
  // calcolo determinante
  showmessage(floattostr(determinant( matrice,4)));

end;

end.
     
« Ultima modifica: Giugno 29, 2023, 09:57:26 pm da Avogadro »

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #4 il: Luglio 04, 2023, 07:29:08 am »
Sempre se puo' servire, allego il file "zippato" della semplice routine per il calcolo del determinate .

Senza output step-by-step per una matrice 7*7 ci mette un attimo

Per matrici piu grandi non ho trovato esempi in giro , ma lo scopo del codice voleva essere un semplice "esercizio" , giusto per non fossilizzarsi sempre su report di stampa e grafici con linee  di tendenza.

L' input non l' ho implementato, l'avrei fatto attraverso un campo memo e la funzione sscanf* + un parser ** , l' ho messo come costante nel codice .

Bye.

*
https://www.freepascal.org/docs-html/rtl/sysutils/sscanf.html

**
https://forum.lazarus.freepascal.org/index.php?topic=34321.0
« Ultima modifica: Luglio 04, 2023, 07:31:56 am da Avogadro »

doc

  • Jr. Member
  • **
  • Post: 96
  • Karma: +2/-0
  • "L'Ingegnere sa quello che fa e fa quello che sa".
    • Spagnotto Ing. Mirko
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #5 il: Luglio 04, 2023, 08:07:58 pm »
Visto che si parla tanto di matrici, la butto lì (esempi):
a) matrice 1x10 (una riga, in pratica) --> dicesi vettore;
b) matrice 3x3 --> quella che, sacrosantamente, è la matrice (bidimensionale) a tutti nota in geometria;
c) matrice 3x3x3 --> che l'é? Beh, possiamo definirla matrice tridimensionale;
d) matrice 3x3x3x3 --> e la quarta "dimensione" come la immaginiamo? E come diceva Franchino...magia, portami via.
e) che succede espandendo lo spazio matriciale in 3x...[n]...x3 ? Riuscite ad immaginarlo? L'elaboratore sì.

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1272
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #6 il: Luglio 04, 2023, 09:15:01 pm »
Oilala, siamo arrivati ormai alla nuvola multidimensionale ;D

Ci farà dare un sbirciata a altri mondi o realtà multidimensionali alternative ?

Scherzi a parte, a me è sempre mancata l'immaginazione sulle matrici ... tengo più all' ...... AMATRICIANA  ;D

Ciao e buona matematica
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #7 il: Luglio 04, 2023, 09:38:03 pm »
Stare con la testa tra le nuvole ed immaginare cose nuove  è alla base di tutto; o meglio, madre natura con i meccanismi misteriosi dell'evoluzione ha trovato nei pensieri astratti un'altra euristica con cui poi affrontare il quotidiano*.

La mia interpretazione è   che vettori e matrici  sono un'astrazione che ci siamo creati per poter in un qualche modo tradurre le osservabili del mondo in modelli matematici che permettano di superare i limiti dell' intuizione e di poter fare previsioni affidabili.

Si inizia così con gli "scalari", alias, semplici numeri, che si possono idealizzare come i punti di una retta, poi si passa al piano cartesiano o spazio bidimensionale, poi allo spazio 3d ; e fin qui vettori e matrici conservano la natura di astrazione necessaria di cose concrete .

Poi è naturale portare l'astrazione e immaginare così modelli matematici a n dimensioni,  modelli matematici che secondo talune teorie avrebbero anche una contropartita fisica reale, ma non entro nel merito di queste teorie.

Noto solo che il rischio di questa astrazione crescente è la reificazione, ossia, per il rischio è commettere un errore logico, appunto la reificazione:   "La reificazione è una fallacia, o un'ambiguità, quando un'astrazione (i.e., una credenza astratta o un costrutto ipotetico) viene trattata come se fosse un concreto evento reale o un'entità fisica (fallacy of misplaced concreteness) (da wikipedia).

Morale ? Nessuna, solo tenere distinte le astrazioni (es. spazi a n dimensioni) dalle osservabili fisiche misurabili (lunghezza, massa etc ) .


Off topic :

Quanto all''amatriciana, un fatto che mi è capitato: in illo tempore non superai un concorso per due chili in piu',  il tipo mi disse " ti hanno fregato i bucatini all'amatriciana"; in effetti era così,; morale: sono le diverse sfaccettature  delle cose del mondo **,  l'amatriciana è un'eccellenza  gastronomica***, la contro partita è avere dei chili di troppo.


*
un esempio è l' NMR, la risonanza magnetica nucleare: si è partiti dal pensare a cosa succede ad un atomo quando è immerso in campo magnetico e si è arrivati a strumenti diagnostici inimmaginabili fino a qualche decennio fa.


**
dicono in Dune - il film -: "non si può ottenere nulla senza il suo contrario"


***
senza nulla togliere all'eccellenza dell'amatriciana,  il trucco è negli ingredienti; mi spiego meglio: per i misteriosi meccanismi dell'evoluzione siamo attratti dai cibi che hanno due caratteristiche:  che siano grassi e che siano dolci ;  il motivo di questa scelta evolutiva è ovvio, erano gusti legati ad abbondanza di calorie , che un tempo scarseggiavano; gli ingredienti base dell'amatriciana sono appunto una componete grassa , il guanciale, e una "dolce", gli amidi della pasta.
Diciamo che la nostra fortuna è avere questo tipo a di cibo a disposizione in pratica da sempre ,  amidi dal grano e proteine e grassi da animali da cortile, altrove non sono così fortunati, un esempio  : https://polarpedia.eu/it/kiviak-4/  - o si ha un un sistema immunitario corazzato o non si va lontano con questo tipo cibi, altro che i due chili di troppo dovuti all'amatriciana - .



« Ultima modifica: Luglio 05, 2023, 02:51:55 am da Avogadro »

doc

  • Jr. Member
  • **
  • Post: 96
  • Karma: +2/-0
  • "L'Ingegnere sa quello che fa e fa quello che sa".
    • Spagnotto Ing. Mirko
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #8 il: Luglio 07, 2023, 04:33:17 pm »
Potrà sembrare strano (lo sò, sembra che parlo di cose dell'altro mondo), ma gli spazi multidimensionali vengono trattati nella Geometria (chissà se esiste la pizza anche in altri spazi multidimensionali  ;D). Il modo di elaborare concetti numerici molto complessi (un esempio sono le simulazioni che vengono fatte per capire l'evoluzione di malattie neoplastiche) è uno di quei campi computazionali in cui gli iperspazi (di conseguenza, le ipermatrici) entrano in gioco. L'informatica quantistica applicata, che è ancora un bambino che procede a gattoni, ci aprirà un nuovo mondo di programmare proprio perchè perfettamente in grado di gestire situazioni in cui, faccio un esempio, un puntatore può puntare ad un elemento di una matrice 3x3x3x3x3. Pensate ad cosa potrebbe capitare se i registri di memoria venissero ad essere, improvvisamente, "spalmati" su di n livelli indipendenti come contenuto ma fisicamente legati al solo stato della materia (nei computer quantistici essa può assuemre più di uno stato, contemporaneamente, durante il funzionamento) che traduce il dato informatico in fattore elettronico (il transistor tanto per capirci).

Cristoforo Colombo era convinto di essere sbarcato nelle indie....tutti contenti. Poi si scoprì che, invece, era "inciampato" in un altro continente. Non si può mai dire con certezza quello che si trova lungo la strada. Vedremo.

Per chi mastica un pò di matematica https://web.math.unifi.it/users/ottavian/tesi/Tesi_Persichetti.pdf

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1272
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #9 il: Luglio 09, 2023, 10:40:34 pm »
I concetti di inderteminazione e di probabilità (ad esempio legate alle orbite elettroniche degli elettroni intorno ai nuclei atomici) sono piuttosto difficili da contemplare in ambito informatico. Chi sviluppa con il "deep learing" (l'AI applicata all'industria) ha confidenza con queste realtà.
Nonostante abbia sviluppato diversi progetti a tal riguardo, la mancanza di certezza (legata poi al fatto che non si sà esattamente da dove derivi ciò in quanto è una elaborazione AI non pienamente visibile ne controllabile) mi ha sempre dato un pò di "fastidio" ... è un pò come giocare ai dadi e dire che statisticamente il 6 esce quanto il numero 1.
Vero, però sembra veramente un terno al lotto, e quando per la legge di Murphy il 6 non esce mai se non dopo 100 volte che è uscito l'1 ... bhè c'è da sapccarsi la testa.

In un cartone animato abbastanza famoso "Bee Movie", mi è sempre piaciuta l'affermazione:

"Secondo le leggi dell'aeronautica le api non dovrebbero volare ..... eppure da milioni di anni continuano a planare di fiore in fiore; perché alle api non interessa quello che gli umani ritengono impossibile"

Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #10 il: Luglio 10, 2023, 11:59:39 pm »
Leggevo da qualche parte che la variable casuale non ha memoria .

Quanto ad elettroni e dintorni ed informatica, lì c'è un mondo, anzi, un universo .

Cerco di fare un piccolo riassunto.

Allora:
date n copri mutuamente interagenti (ad esempio gli elettroni di un atomo o di una molecola o pianeti e lune del sistema solare o le galassie etc ) , date le equazioni del moto e date delle condizioni iniziali,  il sistema di equazioni che ne deriva, con  cui poter prevedere come si muovo nel tempo  nel tempo questi n corpi,  non è risolvibile analiticamente se per casi molto, ma molto semplici e comunque con tutta una serie  di approssimazioni ;

fotoni, elettroni etc possono essere descritti sia da modelli che li trattano come corpuscoli sia da modelli che li trattano come onde (il mitico dualismo onda-particella, attenzione a non reificare, il dualismo si riferisce al modello con cui cerchiamo di interpretare le osservabili fisiche) ;

Quindi i tentativi di formulare delle equazioni sul comportamento degli elettroni in un atomo e da lì nelle molecole, è esprimibile in forma chiusa, alias , con delle equazioni, solo per casi semplici , ma molto semplici.

Quindi nel caso di atomi e molecole l'approccio da seguire deve essere diverso .

Ma perché approcciarsi a questo problema che a tutti i requisiti di essere un problema non per nulla banale ? Anzi, non lo è per nulla, di fatti è uno dei misteri tuttora irrisolti della scienza, ossia come come si formano le molecole e perché si formano o in quel modo e non in un altro ? *

Tutto nasce dal semplice fatto della scoperta del fatto che pesando un a porzione di materia di fatto si contano le particelle di cui è fatta ;  da qui alla sintesi chimica il passo è breve e il passo successivo è lo sviluppo di sostanze utili, ad esempio, i farmaci (e anche di sostanze inutili, la maggior parte).
 
Quindi, come sviluppare un modello matematico che permetta in un qualche modo di prevedere il comportamento di atomi e molecole ? 
Una risposta , ma non la sola,  fu la ben nota funzione d'onda dell'austrico Schrödinger - è impressionante vedere come la storia passi sempre per Vienna - .

l modello introdotto da Schrödinger non parla piu' in termini deterministici ma parla in termini probabilistici (alias "l'elettrone è lì da qualche parte, in qualche regione dello spazio intorno al nucleo , regioni chiamate orbitali")

C'è un problema:  nessuno sa quale sia la funzione d'onda esatta di un dato sistema di particelle .

Si fanno allora delle approssimazioni e si cerca di sviluppare dei modelli semplificati ma gestibili, ma per quanto semplificati, le equazioni che ne derivano e i calcoli da fare tendono all' infinito in un attimo, molto piu' del determinate  .

E qui entra in gioco l' informatica: adottando il modello della funzione d'onda all'algebra, è possibile ottenere un modello fatto di matrici e vettori gestibili da un calcolatore attraverso un linguaggio di programmazione (prima il fotran, poi il c , adesso pyton ed altri ancora)  **

E fu così che sorse la chimica computazionale - lo strumento ideale per consumare il costoso tempo di calcolo dei super computer

https://en.wikipedia.org/wiki/Computational_chemistry

e la relativa babele di software dedicati  (elenco parziale ed incompleto)

https://it.wikipedia.org/wiki/Software_di_chimica_computazionale

E così oggi è possibile esplorare nuovi mondi, ad esempio di quelli visitabili con Gaussian, il principale software di chimica computazionale:

https://gaussian.com/foxdimer/

Applicazioni oltre a quelle militari dell'esempio? I farmaci , attraverso il modello lo studio di come le molecole di interagiscono tra di loro .

Risparmio piu' evidente ? meno uso di cavie su cui sperimentare e fare statistiche.

Non male come risultato dell' essersi posti il problema di "ma come gira l'elettrone intorno al nucleo " ?

Ma tanto per cambiare i casini sono sempre dietro l'angolo , stavolta sotto forma di reificazione nel campo della logica.

Allora, la meccanica quantistica , nella formulazione proposta da Schrödinger, ha portato a risultati eccellenti.  Ma le su eleggi valgono nel suo ambito fatto di elettroni e nuclei atomici , non è lecito estenderli in altri ambiti , specie il quelli del macrocosmo .

Ma in realtà viene fatto e la reificazione che ne deriva è una fallacia logica insidiosa, l' appello alla meccanica quantistica con al quale ho visto sdoganare un po' di tutto in giro per il web ***:

https://www.logicallyfallacious.com/logicalfallacies/Quantum-Physics-Fallacy


*
misteri della chimica , che speriamo non trovino mai risposta per quello che implicano in questo mondo dove domina la cattiveria

https://www.lescienze.it/news/2011/10/18/news/prova_articolo-597799/


**

una volta c'erano pagine interessanti sul web,  come questa che illustra i risultati dei calcoli per la molecola della formalina :

https://www.cup.uni-muenchen.de/ch/compchem/pop/orb_output.html

tempo di calcolo ? oggi un attimo, un tempo, sul vax,  una nottata se andava bene , sperando che qualcuno non si fregasse le stampe per farci carta riciclata per gli appunti a lezione delle ben piu' terrene cose di ingegneria o economia.



***

appunto "ho visto", ante covid-19 c'era tutto un fermento in giro sul web, poi tra pandemia e casini nell'est europa non so cosa sia successo, tutto tace; "che tempi, che modi" alias " da che parte va il mondo ? non lo so ", speriamo non verso la reificazione delle cose dei nuclei degli atomi, meglio elettrone che va girando alla ricerca dello spin giusto che il nucleo che si scinde .
« Ultima modifica: Luglio 11, 2023, 12:51:05 am da Avogadro »

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #11 il: Luglio 11, 2023, 10:08:04 pm »
Proseguendo il discorso sulla complessità ,  sul web ancora sopravvive qualcosa di interessante; un esempio tutto sommato semplice è la descricione del  caso dello ione H3+, uno degli ioni più abbondanti nell'universo:

https://it.wikipedia.org/wiki/Idrogenonio

Ecco come si reificano per esso i concetti dellameccanica quantistica:

https://onlinelibrary.wiley.com/doi/full/10.1002/qua.27015

Come si traduce tutto questo in righe di codice, fortran, C##, pascal o quant'altro ?

Un esempio è qui

https://gqcg.github.io/GQCP/examples/Integrals-over-GTOs.html

Morale : non lo so,  non c'è, noniclopedia dà il suo punto di vista

https://nonciclopedia.org/wiki/Meccanica_quantistica

La figura del gatto prima era rivolta a chi voleva affrontare questi problemi con i i pacchetti di office automation .

« Ultima modifica: Luglio 11, 2023, 10:15:35 pm da Avogadro »

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1272
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #12 il: Luglio 12, 2023, 11:04:02 am »
Bellissimo, ma conducendo il discorso a un piano più terreno è appartenente all'universo noto e concreto, tutto ciò fatti gli opportuni distinguo potrebbe equivalere a:

1) se il bosone (ammesso che esista) è in posizione X allora io mangio altrimenti muoio di fame;

e siccome il bosone risponde a leggi non del tutto note, ed essenzialmente casuali, in concreto morirei di fame.

Quindi meglio i piedi per terra, che il cliente vuole sapere esattamente in modo analitico e concreto se in posizione X c'è qualcosa, non gli interessa se dal punto di vista delle probabilità potrebbe ipoteticamente esserci qualcosa.

La concretezza e la certezza in questo momento vincono sulla probabilità, anche perchè gli investimenti per calcolare la probabilità sono molto ingenti (direi proibitivi) rispetto agli investimenti per avere certezza sulla cosa (con una bassissima percentuale di incertezza) ......

Fortune che esiste il mondo reale, perchè se esistesse solo il mondo su base bosone (per dirne uno ...) sarebbe veramente una tristezza.
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Sul determinate, vettori, matrici e ricorsione
« Risposta #13 il: Luglio 12, 2023, 02:24:14 pm »
In effetti è così, l'astrazione ha un costo , nel caso delle molecole ha costi di calcolo impressionanti, quei software girano su macchine da fantascienza, anche nei costi per secondo di cpu time .

E in effetti questo è un problema, si c'è qualcosa che adesso gira anche su un pc normale, ma se si vogliono fare studi seri ci voglio centri di calcolo dai costi esorbitanti.

Una volta provai ad usare un compilatore fortran per uno di quei codici sorgenti su un pc "386", a momenti fondeva l'hard disk .

Il problema diventa serio per le molecole di interesse biologico (proteine, polisaccaridi etc) ; la soluzione è stata ritornare alla vecchia meccanica classica e si è sviluppata la "meccanica molecolare", che ha costi di calcolo piu' che accettabili

https://it.wikipedia.org/wiki/Meccanica_molecolare

 

Recenti

How To

Utenti
Stats
  • Post in totale: 18817
  • Topic in totale: 2240
  • Online Today: 595
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 563
Total: 563

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.