ForHosting KIT · Strumenti per sviluppatori

Calcolatore di numero di condizionamento

L'API del numero di condizionamento prende una matrice quadrata e restituisce il suo numero di condizionamento in norma 2: il rapporto tra il valore singolare più grande e quello più piccolo della matrice.

● BetaGratis · nel tuo browser
Usalo da WebAPIEmailTelegramApp presto

Questo unico numero Le dice quanto un piccolo errore nei Suoi dati — un arrotondamento, un rumore di misura, un coefficiente troncato — possa essere amplificato quando risolve un sistema lineare o inverte la matrice. Un numero di condizionamento vicino a 1 significa che il problema è stabile; uno grande avverte che la risposta potrebbe essere dominata dal rumore. Il calcolo avviene in un'unica passata deterministica: la matrice viene convalidata, si forma A-trasposta-A e i suoi autovalori si ottengono con un'iterazione classica di Jacobi, le cui radici quadrate sono i valori singolari.

Che cosa misura davvero un numero di condizionamento

Quando risolve numericamente un sistema Ax = b, quasi mai lavora con A e b esatti. I coefficienti provengono da misurazioni, da calcoli precedenti o da inserimenti decimali arrotondati lungo il percorso. Il numero di condizionamento di A è il fattore di amplificazione, nel caso peggiore, di quell'incertezza: se l'ingresso cambia di una quantità relativa epsilon, la soluzione può cambiare fino a kappa volte epsilon. Con kappa = 10, un errore dell'uno per cento nei dati può produrre un errore del dieci per cento nella risposta. Con kappa = 1,000,000, può perdere sei delle circa sedici cifre decimali che un double può contenere. Il numero di condizionamento in norma 2 calcolato qui, kappa_2, è definito attraverso i valori singolari di A: il valore singolare più grande sigma_max misura il massimo con cui la matrice può allungare un vettore, il più piccolo sigma_min il massimo con cui può contrarlo, e il loro rapporto è kappa_2. Una matrice ortogonale, come una rotazione, ha kappa_2 esattamente 1 — il meglio possibile. Una matrice con righe linearmente dipendenti ha sigma_min = 0 e kappa_2 infinito, ed è per questo che questa capacità rifiuta le matrici singolari invece di stampare un numero enorme e privo di senso.

Come viene calcolato qui il numero

L'algoritmo è deterministico e autonomo, senza alcuna libreria numerica esterna. Per prima cosa il Suo ingresso viene normalizzato: i coefficienti possono essere inviati come un array di righe oppure come testo semplice con righe separate da a capo o punti e virgola, e valori separati da virgole o spazi. Ogni coefficiente deve essere un numero finito, tutte le righe devono avere la stessa lunghezza e la matrice deve essere quadrata — una matrice 2 per 3 non ha un numero di condizionamento in questo senso, quindi la richiesta viene rifiutata con un errore chiaro che nomina il campo colpevole. Il codice forma poi la matrice simmetrica G = A^T A e ne estrae gli autovalori con l'iterazione ciclica classica di Jacobi: una sequenza fissa di rotazioni piane che azzerano le voci fuori diagonale una a una finché la matrice diventa diagonale alla precisione di lavoro. Poiché l'ordine delle rotazioni, la convenzione dei segni e il limite di sweep sono fissi, la stessa matrice produce sempre la stessa risposta, bit per bit. Gli autovalori di G sono i quadrati dei valori singolari di A, quindi le loro radici quadrate danno sigma_max e sigma_min, e il rapporto, arrotondato a dodici cifre decimali per un'uscita stabile, è il numero di condizionamento restituito. Le matrici il cui valore singolare più piccolo scende sotto una soglia numerica scalata — circa kappa_2 oltre dieci miliardi — sono segnalate come numericamente singolari, perché la doppia precisione non può distinguerle onestamente da una matrice carente di rango.

Leggere il risultato e usarlo bene

La risposta Le dà quattro cose: il numero di condizionamento stesso, sigma_max, sigma_min e un messaggio in linguaggio chiaro che classifica la matrice. Consideri ben condizionata qualsiasi kappa inferiore a circa 10 — i solutori diretti si comporteranno bene. Tra cento e un milione, preveda una perdita visibile di precisione e preferisca algoritmi stabili: decomposizione QR o LU con pivoting parziale invece di formare un inverso esplicito, che eleva al quadrato l'errore del calcolo che lo alimenta. Oltre un milione, la lettura onesta è che la risposta dipende più dal rumore dei Suoi dati che dal solutore, e la mossa giusta di solito è riscalare il problema, regolarizzarlo o riconsiderare se la matrice del modello è quella giusta. Due abitudini pratiche ripagano: controlli il numero di condizionamento prima di incolpare un solutore per una brutta risposta, perché una matrice mal condizionata produce risposte sbagliate con codice corretto; e confronti i numeri di condizionamento tra formulazioni, perché lo stesso problema fisico scritto con altre unità o funzioni di base può differire di ordini di grandezza in kappa. Lo stesso codice che gira qui viene eseguito gratis nel Suo browser in questa pagina, così può incollare una matrice e vedere il risultato prima di pagare $0.002 a richiesta per automatizzarlo.

Controllare un sistema lineare prima di risolverlo

Stimi quante cifre della soluzione può considerare affidabili prima di eseguire una risoluzione LU o QR su coefficienti misurati.

Diagnosticare una regressione che non converge

Una matrice di progetto quasi collineare appare come un numero di condizionamento enorme di X-trasposta-X molto prima che il solutore fallisca.

Confrontare discretizzazioni dello stesso problema

Due formulazioni agli elementi finiti o a funzioni di base dello stesso modello fisico possono differire di ordini di grandezza nel condizionamento; scelga quella stabile.

Quanto costa?

$0.002 a richiesta. L'esecuzione è gratuita anche nel Suo browser in questa pagina.

Perché la mia matrice è stata rifiutata come singolare?

Perché il suo valore singolare più piccolo è numericamente zero, il che rende infinito il numero di condizionamento. Questo copre anche le matrici tecnicamente invertibili ma carenti di rango in doppia precisione (kappa oltre circa dieci miliardi).

Perché la matrice deve essere quadrata?

Il numero di condizionamento in norma 2, kappa_2 = sigma_max / sigma_min, è definito attraverso i valori singolari di una matrice di coefficienti quadrata. Per i problemi ai minimi quadrati rettangolari, condizioni invece la matrice quadrata X-trasposta-X.

Come posso inviare la matrice?

Come un array di righe numeriche di uguale lunghezza, oppure come testo con righe separate da a capo o punti e virgola e coefficienti separati da virgole o spazi. Entrambe le forme danno risultati identici.

Che dimensione di matrice accetta?

Fino a 32 per 32, con valori assoluti dei coefficienti fino a 1e12. Il calcolo è aritmetica esatta in doppia precisione con un'iterazione di Jacobi deterministica.

Il risultato è riproducibile?

Sì. L'iterazione di Jacobi usa un ordine di rotazioni, una convenzione dei segni e un limite di sweep fissi, quindi lo stesso ingresso produce sempre la stessa uscita, arrotondata a dodici cifre decimali.

Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.

POSThttps://api.kit.forhosting.com/math/condition-number

Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.

curl -X POST https://api.kit.forhosting.com/math/condition-number \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"matrix":[[2,1],[1,2]]}'
{
  "matrix": [
    [
      2,
      1
    ],
    [
      1,
      2
    ]
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.condition_number",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.

per richiesta$0.002

Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.

max_rows32
max_cols32
max_abs1000000000000
HTTPCodiceSignificato
401unauthorizedChiave API mancante o non valida: controlla l'header Authorization.
402insufficient_balanceCredito esaurito: ricarica per continuare a eseguire attività.
404unknown_typeTipo di attività sconosciuto: controlla il campo type della richiesta.
429rate_limitedTroppe richieste in poco tempo: rallenta e riprova tra qualche secondo.

Leggi la documentazione completa del KIT →