Salta al contenuto
Guida di Varlig
Pagina iniziale di Varlig

Matematica avanzata: funzioni e limiti

Questa pagina riassume le funzioni matematiche avanzate di Varlig Calc: liste, vettori e matrici, numeri complessi, somme e prodotti, risoluzione di equazioni e analisi matematica. Per ogni funzione indica cosa fa, quali argomenti accetta, quanto sono esatti i risultati e quali limiti si applicano. Consultala per verificare i dettagli quando un risultato ti sorprende.

Per un'introduzione con altri esempi, vedi Liste e statistica, Vettori e matrici, Numeri complessi e Sommatorie, equazioni e analisi matematica.

A colpo d'occhio

Funzione Esempio Risposta
Elenco [1, 2+3, 4*2] [1, 5, 8]
Elemento di una lista [10, 20, 30][1] 20
Elemento di una lista annidata [[1,2],[3,4]][1][0] 3
Totale delle quantità sum([1 kg, 500 g]) 1.5 kg
Statistiche average([1,2,3]), median([5,1,3]) 2, 3
Intervallo in ordine decrescente range(5, 1, -2) [5, 3, 1]
Somma di liste [1,2] + [3,4] [4, 6]
Prodotto fra matrici [[1,2],[3,4]] * [[1,0],[0,1]] [[1, 2], [3, 4]]
Inversa inverse([[1,2],[3,4]]) [[-2, 1], [1.5, -0.5]]
Determinante det([[1,2],[3,4]]) -2
Trasposta transpose([[1,2],[3,4]]) [[1, 3], [2, 4]]
Sistema lineare solve_system([[2,1],[1,2]], [34,29]) [13, 8]
Aritmetica complessa (2+3i) * (2-3i) 13
Radice quadrata complessa sqrt(complex(-4,0)) 2i
Valore più frequente mode([1,2,2,3]) 2
Percentile percentile([1,2,3,4],25) 1.75
Deviazione standard della popolazione population_stddev([1,2,3,4]) 1.1180339887
Somma su un intervallo sum(k^2, k, 1, 10) 385
Prodotto su un intervallo product(k, k, 1, 5) 120
Risolvi esattamente un'equazione solve(x^2 - 5x + 6 = 0) [2, 3]
Risolvi un'equazione nell'intervallo solve(x^2 = 4, x, 0, 3) 2
Derivata simbolica differentiate(sin(x), x) cos(x)
Derivata in un punto derivative(x^3, x, 2) 12
Integrale definito integrate(x^2, x, 0, 3) 9

Liste, matrici e numeri complessi sono valori come gli altri. Puoi assegnare loro un nome e passarli alle funzioni che definisci; vengono ricalcolati quando modifichi una riga precedente.

calc
squares(n) = sum(k^2, k, 1, n)
squares(3) dà 14
first(items) = items[0]
first([10, 20]) dà 10
root(y) = solve(x^2 = y, x, 0, 10)
root(9) dà 3

Cosa garantisce il motore

Tutto ciò che trovi in questa pagina segue una regola: un calcolo produce un risultato che Varlig può garantire, oppure un errore che spiega il problema. Un calcolo esatto non viene mai sostituito con un numero soltanto plausibile.

Quanto è esatta una risposta

Metodo di calcolo Cosa copre
Frazioni esatte Coefficienti di un'equazione e radice di un'equazione lineare; radici di un'equazione di secondo grado il cui discriminante è un quadrato perfetto; operazioni +, -, * su matrici, moltiplicazione per un numero, transpose, det, inverse, rank e solve_system; median, mode, modes, percentile, quartile e tutte e tre le varianze
Radice quadrata decimale stddev, sample_stddev, population_stddev e le radici delle altre equazioni di secondo grado
Virgola mobile binaria eigenvalues, qr, lu, svd, integrate e solve con quattro argomenti

Esatto significa esatto: tra la lettura della riga e la visualizzazione del risultato non viene applicato alcun arrotondamento. Un risultato esatto rimane tale anche quando gli assegni un nome, lo memorizzi e lo riutilizzi. Un risultato approssimativo usa invece lo stesso decimale a precisione limitata restituito da sqrt. L'ultima cifra visualizzata non è necessariamente arrotondata correttamente, quindi confrontare due risultati approssimativi con == non è affidabile: solve(x^2 - 2 = 0) e sqrt(2) mostrano entrambi 1.4142135624, ma non sono uguali.

Uno stesso risultato non mescola valori esatti e approssimativi. Se il discriminante di un'equazione di secondo grado non è un quadrato perfetto, entrambe le radici sono approssimative.

Unità

Operazione Regola
Matrici Solo numeri semplici; unità, denaro e voci complesse sono rifiutate
Equazioni Solo numeri semplici, su entrambi i lati
median, mode, modes, percentile, quartile, stddev, population_stddev Valori con la stessa dimensione fisica, oppure numeri semplici. Le unità compatibili vengono convertite nell'unità del primo valore, che viene mantenuta nel risultato
variance, sample_variance, population_variance Solo numeri semplici: il calcolo della varianza eleva al quadrato le osservazioni e non conserva le unità

Mescolare valori con unità e valori senza unità genera un errore: le unità non vengono ignorate implicitamente. Esiste una sola eccezione consolidata: uno 0 senza unità assume quella degli altri valori.

Cosa viene rifiutato

Nessuno dei casi seguenti restituisce un numero o una frase. Ciascuno genera un errore che indica l'operazione non supportata e, quando esiste, la sintassi da usare al suo posto:

  • Un'equazione polinomiale di grado superiore a 2, un'equazione non polinomiale, un'incognita al denominatore o all'esponente, due nomi privi di valore, un'equazione senza incognite oppure un'equazione con unità o importi monetari. In tutti questi casi, il messaggio rimanda alla versione numerica di solve con quattro argomenti.
  • Un'equazione priva di radici reali genera un errore anziché restituire radici complesse. Anche un'equazione soddisfatta da qualsiasi valore genera un errore anziché scegliere arbitrariamente una soluzione.
  • Un'operazione su matrici con dimensioni incompatibili o non quadrate, l'inversa di una matrice singolare oppure un elemento che non è un semplice numero.
  • mode quando nessun valore si ripete o più valori hanno la stessa frequenza massima; un percentile fuori dall'intervallo da 0 a 100; un quartile fuori dall'intervallo da 0 a 4; qualsiasi statistica diversa da sum, product e count applicata a una lista vuota.

Per scelta progettuale, non sono supportati: trasformazioni simboliche oltre la raccolta dei coefficienti polinomiali, sistemi di equazioni non lineari, radici complesse di un'equazione reale, matrici con unità o importi monetari, integrazione simbolica e grafici di funzioni.

I messaggi stessi sono elencati in Errori, diagnostica e limiti.

Scrivere liste e funzioni matematiche

  • Le virgole separano gli elementi e gli argomenti. Una virgola seguita da uno spazio separa sempre, e una virgola seguita da esattamente tre cifre raggruppa le migliaia, quindi [1,200, 1,800] ha due elementi. Senza spazi, ogni virgola separa, come in [12,-51,4]. Dove le virgole potrebbero essere lette in entrambi i modi, come in [1,234], l'errore mostra entrambi i modi per scriverlo. Usa il punto decimale per le frazioni di un valore numerico.
  • Le matrici sono elenchi di righe, come [[1,2],[3,4]]. Non c'è una scorciatoia punto e virgola come [1,2;3,4].
  • Gli indici partono da 0 e devono essere numeri interi non negativi. Un indice oltre la fine della lista genera un errore: non riparte dall'inizio e non viene ridotto automaticamente a un valore valido.
  • Il numero di argomenti viene verificato. sqrt(4,9) genera un errore: il calcolatore non tenta di indovinare cosa intendevi.

Liste e statistica

Queste funzioni accettano una lista: length o count, sum, product, average o mean, median, min, max, mode e modes, percentile e quartile, oltre alle funzioni di dispersione variance, sample_variance, population_variance, stddev, sample_stddev e population_stddev.

  • mode restituisce un risultato solo se un unico valore ha la frequenza più alta. Se più valori sono a pari merito, o nessuno si ripete, genera un errore che suggerisce modes, median o average. modes restituisce tutti i valori con frequenza massima.
  • percentile(list, rank) accetta un rango da 0 a 100 e interpola linearmente tra le due posizioni più vicine, secondo la definizione inclusiva: il 50° percentile è la mediana, mentre lo 0° e il 100° corrispondono al minimo e al massimo. quartile(list, k) accetta un intero k da 0 a 4 ed equivale a percentile(list, 25k).
  • variance e stddev sono le versioni campionarie: dividono per n - 1 e richiedono almeno due valori. population_variance e population_stddev dividono per n e richiedono almeno un valore. sample_variance e sample_stddev sono nomi estesi delle versioni brevi.
  • Una lista vuota ha una sum di 0, un product di 1 e un count di 0. Altre statistiche di una lista vuota sono errori.
  • Due liste della stessa lunghezza si sommano e si sottraggono elemento per elemento. Puoi moltiplicare o dividere una lista per un numero e confrontare due liste con ==.
  • range(start, end, step) include entrambi gli estremi. Il passo è facoltativo.
  • dot(a, b) moltiplica due vettori reali.
calc
spend = [420, 385, 510, 460] dà [420, 385, 510, 460]
sum(spend) dà 1,775
average(spend) dà 443.75
median(spend) dà 440
spend[0] dà 420
spend * 1.1 dà [462, 423.5, 561, 506]
range(0, 1, 0.25) dà [0, 0.25, 0.5, 0.75, 1]

Trasformazioni di liste

Chiamata Risposta Cosa fa
sort([3,1,2]) [1, 2, 3] Ordina i numeri senza unità in ordine crescente; gli elementi uguali mantengono il loro ordine
reverse([1,2,3]) [3, 2, 1] Inverte qualsiasi lista
unique([3,1,3,2]) [3, 1, 2] Mantiene la prima occorrenza di ciascun valore; gli elementi devono coincidere esattamente, unità comprese
slice([10,20,30,40], 1, 3) [20, 30] Prende gli elementi dall'indice iniziale fino a, ma non incluso, l'indice finale
map(x^2, x, [1,2,3]) [1, 4, 9] Calcola l'espressione per ogni elemento
filter(x > 1, x, [1,2,3]) [2, 3] Mantiene gli elementi per cui la condizione è vera
variance([1,2,3]) 1 Varianza campionaria esatta, dividendo per il numero di elementi meno uno
  • slice ha bisogno di numeri interi dove 0 ≤ inizio ≤ fine ≤ lunghezza della lista. Altri limiti sono errori.
  • variance richiede almeno due numeri senza unità.
  • map e filter prendono prima l'espressione, poi il nome da usare per ogni elemento, poi l'elenco. Il nome si applica solo all'interno della chiamata, quindi non cambia un nome che hai definito altrove. L'espressione in filter deve dare true o false.

Vettori e matrici

I vettori sono elenchi piatti e le matrici sono elenchi di righe. Le matrici devono essere rettangolari, contenere numeri reali senza unità e avere da 1 a 32 righe e colonne.

Funzione Cosa fa
A * B Prodotto matriciale; il numero di colonne di A deve coincidere con il numero di righe di B
transpose(A) Scambia righe e colonne
shape(A) [rows, columns]
identity(n) Una matrice identità di dimensioni n per n
trace(A) Somma degli elementi diagonali di una matrice quadrata
det(A) Determinante di una matrice quadrata
inverse(A) Inversa di una matrice quadrata; una matrice singolare genera un errore
rank(A) Rango calcolato tramite eliminazione esatta, per qualsiasi matrice rettangolare
dot(a, b) Prodotto scalare di due vettori della stessa lunghezza
cross(a, b) Prodotto vettoriale di due vettori con tre componenti
solve_system(A, b) Risolve A*x = b per una matrice quadrata A e un vettore piatto b
eigenvalues(A) Autovalori di una matrice quadrata reale, comprese le coppie complesse, in nessun ordine fisso
qr(A) [Q, R], dove Q*R è approssimativamente A
lu(A) [P, L, U], dove P*A è approssimativamente L*U; solo matrici quadrate
svd(A) [U, s, Vt], dove s è una lista piatta di valori singolari e A è approssimativamente U*diag(s)*Vt

Risultati esatti. det, inverse, rank e solve_system usano frazioni esatte. rank non ha tolleranza di arrotondamento. solve_system segnala un errore per un sistema singolare e non gestisce sistemi non lineari o sistemi con un numero infinito di soluzioni.

Risultati approssimativi. eigenvalues, qr, lu e svd usano numeri in virgola mobile e verificano che il risultato sia finito. qr e svd accettano matrici rettangolari e restituiscono i fattori in forma compatta ("thin"). Il calcolo degli autovalori e della SVD si interrompe dopo 10.000 iterazioni. Nel risultato visualizzato, un elemento dovuto soltanto a un errore di arrotondamento rispetto all'elemento maggiore appare come 0; accedendo tramite indice si ottiene invece il valore memorizzato. Le matrici mal condizionate possono perdere precisione, quindi non confrontare questi risultati con ==.

calc
# Two adult tickets and one child ticket cost 34; one adult and two children cost 29
solve_system([[2,1],[1,2]], [34,29]) dà [13, 8]
det([[2,1],[1,2]]) dà 3
rank([[1,2],[2,4]]) dà 1

Numeri complessi

i è l'unità immaginaria, a meno che tu non abbia definito un nome o un'unità personalizzata chiamata i.

  • Funzioni: complex(real, imaginary), real, imag, conj, abs, arg (in radianti) e sqrt (radice principale) accettano tutte numeri complessi.
  • Esattezza: le componenti, le operazioni aritmetiche e le potenze con esponente intero rimangono esatte. Le radici generali e arg danno risultati approssimativi.
  • Risultati reali: quando le parti immaginarie si annullano, come in (2+3i) * (2-3i), il risultato è un normale numero reale. Un valore scritto in forma complessa, come -4 + 0i o complex(-4,0), rimane complesso nelle operazioni aritmetiche e quando gli assegni un nome, anche se viene visualizzato come -4.
  • Radici quadrate e logaritmi di numeri negativi: sqrt(-4), ln(-1) e log(-100) restano nel dominio reale e mostrano un errore relativo ai numeri immaginari. Il messaggio indica la forma complessa da usare, ad esempio sqrt(-4 + 0i). Questa espressione, come sqrt(complex(-4,0)), restituisce 2i.
  • Visualizzazione: una componente dovuta soltanto all'arrotondamento in virgola mobile appare come 0; per questo exp(i*pi) mostra -1. Il valore memorizzato conserva tutte le sue cifre.
  • Confronti: < e > funzionano soltanto quando entrambe le parti immaginarie sono zero.
  • Altre funzioni: sin, cos, tan e le rispettive inverse, le funzioni iperboliche e le rispettive inverse, exp, ln, log o log10, log2, cbrt e le potenze con esponenti frazionari o complessi accettano tutte numeri complessi. Usano la virgola mobile e i rami principali. Il logaritmo di zero e qualsiasi risultato non finito generano un errore.
calc
(2+3i) * (2-3i) dà 13
abs(3+4i) dà 5
sqrt(-4 + 0i) dà 2i
sqrt(complex(-4,0)) dà 2i
sqrt(-4) dà Error: imaginary number. For a complex answer, write sqrt(-4 + 0i)
exp(i*pi) dà -1

Somme e prodotti

sum(expression, name, from, to) somma il valore dell'espressione per ogni intero da from a to, estremi inclusi. summation è un nome alternativo della stessa funzione; product moltiplica i valori anziché sommarli.

  • Il nome è locale alla chiamata. Non modifica un nome già definito e non crea una dipendenza della riga da quel nome.
  • Puoi mettere una somma o un prodotto all'interno di un altro.
  • Se to è inferiore a from, l'intervallo è vuoto: la somma è 0 e il prodotto è 1.
  • Una singola chiamata può avere al massimo 10.000 termini.
calc
sum(k^2, k, 1, 10) dà 385
product(k, k, 1, 5) dà 120
k = 7 dà 7
sum(k, k, 1, 3) dà 6
k dà 7

Risolvere equazioni

solve(equation) legge un'equazione polinomiale di primo o secondo grado in una sola incognita e ne calcola le radici. L'incognita è l'unico nome dell'equazione privo di valore; i nomi già definiti vengono sostituiti con i rispettivi valori. Puoi omettere il membro destro: in tal caso l'espressione viene posta uguale a zero.

  • Un'equazione lineare restituisce un numero. Un'equazione di secondo grado restituisce la lista delle radici reali distinte in ordine crescente: una radice doppia produce quindi una lista con un solo elemento. Il formato del risultato dipende dal grado dell'equazione scritta, non dalle radici trovate.
  • I coefficienti e le loro trasformazioni sono esatti, così come le radici quando il discriminante è un quadrato perfetto. Negli altri casi, le due radici dell'equazione di secondo grado sono espresse come approssimazioni decimali.
  • Entrambi i lati devono essere numeri semplici. Unità, denaro e valori complessi vengono rifiutati.
  • Un'equazione senza radice reale dà Error: no real solution piuttosto che una radice complessa, e un'equazione che ogni valore soddisfa lo dice piuttosto che scegliere un valore.
  • Gli altri casi — grado 3 o superiore, equazione non polinomiale, incognita al denominatore o all'esponente, secondo nome privo di valore — vengono rifiutati con un messaggio che rimanda alla forma con quattro argomenti descritta qui sotto.
calc
solve(2x + 6 = 10) dà 2
solve(x^2 - 5x + 6 = 0) dà [2, 3]
solve(x^2 - 2 = 0) dà [-1.4142135624, 1.4142135624]
solve(x^2 + 1 = 0) dà Error: no real solution

solve(expression, name, lower, upper) è una funzione diversa: trova un valore reale di name tra lower e upper dove l'espressione è zero. solve(left = right, name, lower, upper) trova dove i due lati sono uguali.

  • I limiti devono essere numeri finiti, con lower inferiore a upper.
  • Una radice coincidente con un estremo è accettata. Altrimenti l'espressione deve essere positiva a un estremo e negativa all'altro, e dovrebbe essere continua nell'intervallo.
  • La ricerca dimezza l'intervallo a ogni passo. Riesce se, entro 128 passi, il valore dell'espressione dista da zero al massimo 1e-10 e l'intervallo è abbastanza stretto. Se l'espressione non è definita in uno dei punti valutati, oppure la ricerca non converge, la riga mostra un errore.
  • Trova una radice, non tutte. Per i sistemi di equazioni lineari, usa solve_system.
calc
solve(1500 + 12*x = 20*x, x, 0, 1000) dà 187.5
solve(x^2 = 2, x, 0, 2) dà 1.4142135624

Calcolo

Derivate simboliche

differentiate(expression, name), disponibile anche come derivative(expression, name), restituisce la derivata sotto forma di testo.

  • Applica le regole di derivazione della somma, del prodotto, del quoziente, della potenza e della funzione composta alle operazioni con numeri reali senza unità, oltre che a sin, cos, tan, sinh, cosh, exp, ln e sqrt.
  • Gli altri nomi nell'espressione sono trattati come costanti, che abbiano o meno un valore nella nota: differentiate(a*x^2, x) dà (a*(2*(x^(2-1)))).
  • Il risultato non è semplificato ed è limitato a 8.192 caratteri.
  • Altre funzioni, come abs, generano un errore; in quei casi usa la derivata numerica in un punto. Non si tratta di un sistema completo di algebra simbolica.
  • La derivata ha le stesse restrizioni di dominio dell'espressione originale.
calc
differentiate(sin(x), x) dà cos(x)
differentiate(x^3, x) dà (3*(x^(3-1)))

Derivate in un punto

derivative(expression, name, point), oppure differentiate con tre argomenti, calcola numericamente la pendenza in un punto. Usa differenze centrali con raffinamenti successivi e le confronta con stime unilaterali. L'espressione può usare funzioni definite da te, ma deve essere regolare vicino al punto e usare numeri reali senza unità. Se la stima non converge o l'espressione non è definita in uno dei punti campionati, la riga mostra un errore.

Le forme numeriche calcolano un numero, quindi ogni nome diverso dalla variabile deve avere un valore. Questo vale per le derivate in un punto, sum, product, solve e integrate. Un nome privo di valore produce Unsupported: Unknown name: seguito dal nome.

calc
derivative(x^3, x, 2) dà 12
f(x) = x^2
derivative(f(x), x, 3) dà 6
differentiate(a*x^2, x) dà (a*(2*(x^(2-1))))
derivative(a*x^2, x, 3) dà Unsupported: Unknown name: a

Integrali definiti

integrate(expression, name, lower, upper) calcola l'area con segno sotto la curva dell'espressione tra due estremi finiti.

  • Lo scambio dei limiti cambia il segno della risposta e i limiti uguali danno zero.
  • Usa le regole adattive di Gauss–Kronrod a 7 e 15 punti, che campionano in punti non equidistanti. In questo modo un'onda regolare come cos(128*pi*x) non può ingannare il metodo: integrate(cos(128*pi*x), x, 0, 1) dà circa -1.3e-15, cioè zero entro l'errore di arrotondamento.
  • Il metodo mira a un errore totale stimato non superiore a 1e-9 volte il valore assoluto del risultato, oppure a 1e-9 per risultati di modulo inferiore a 1. Confronta almeno due livelli di dettaglio, tiene conto dell'errore di arrotondamento e raffina per prima la parte con l'errore stimato maggiore.
  • Il calcolo si interrompe dopo 2.048 raffinamenti, 20 livelli di suddivisione oppure 100.000 passi, condivisi con gli altri calcoli avanzati della stessa riga. Il raggiungimento di un limite o un valore non definito in un punto campionato generano un errore.
  • La stima dell'errore è un'indicazione utile, non una garanzia. Usa espressioni regolari con valori finiti. Espressioni con picchi, discontinuità o oscillazioni rapide possono dare risultati imprecisi.
  • Gli integrali indefiniti e i limiti infiniti non sono supportati.
calc
integrate(x^2, x, 0, 3) dà 9
integrate(x^2, x, 3, 0) dà -9

Argomenti e unità nelle funzioni matematiche

  • factorial è un altro nome per fact e trunc per int.
  • sign restituisce -1, 0 o 1. atan2(y, x) restituisce un angolo in radianti come un numero semplice.
  • Il secondo argomento facoltativo di round, floor e ceil è un passo, non un numero di cifre decimali: round(17, 5) arrotonda al multiplo di 5 più vicino. Per arrotondare a un certo numero di decimali, vedi Arrotondamento.
  • Logaritmi, esponenziali e funzioni iperboliche non accettano unità o denaro. La trigonometria ordinaria accetta angoli come 30°.
  • Le radici quadrate e cubiche conservano le unità quando il relativo esponente è divisibile per il grado della radice. Anche le potenze delle grandezze conservano le unità. Non è possibile elevare al quadrato o estrarre radici di temperature in Celsius o Fahrenheit.
calc
gcd(12, 18) dà 6
round(17, 5) dà 15
sin(30°) dà 0.5
sqrt(9 m²) dà 3 m
(2 kg)^2 dà 4 kg²

Limiti

I limiti vengono controllati prima che venga mostrata una risposta:

  • 1.024 elementi in una lista o in range
  • Matrici fino a 32 × 32
  • 10.000 termini in una sum o product
  • 16 livelli di elenchi nidificati e chiamate di funzione
  • 100.000 passaggi condivisi da tutta la matematica avanzata in una riga, comprese le chiamate annidate
  • 4.096 bit per il numeratore o il denominatore di una frazione, come nel resto di Varlig Calc

Quando raggiungi un limite, quella riga mostra un errore e il resto della nota continua a funzionare. Non riceverai mai una somma parziale, un'inversa incompleta o una radice non convergente presentata come risultato valido. Per tutti i limiti e i dettagli sulla precisione, vedi Leggere i risultati: visualizzazione e precisione.