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.
squares(n) = sum(k^2, k, 1, n)squares(3) dà 14first(items) = items[0]first([10, 20]) dà 10root(y) = solve(x^2 = y, x, 0, 10)root(9) dà 3Cosa 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
solvecon 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.
modequando 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 dasum,productecountapplicata 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.
moderestituisce 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 suggeriscemodes,medianoaverage.modesrestituisce 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 interokda 0 a 4 ed equivale apercentile(list, 25k).varianceestddevsono le versioni campionarie: dividono pern - 1e richiedono almeno due valori.population_varianceepopulation_stddevdividono perne richiedono almeno un valore.sample_varianceesample_stddevsono nomi estesi delle versioni brevi.- Una lista vuota ha una
sumdi 0, unproductdi 1 e uncountdi 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.
spend = [420, 385, 510, 460] dà [420, 385, 510, 460]sum(spend) dà 1,775average(spend) dà 443.75median(spend) dà 440spend[0] dà 420spend * 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 |
sliceha bisogno di numeri interi dove 0 ≤ inizio ≤ fine ≤ lunghezza della lista. Altri limiti sono errori.variancerichiede almeno due numeri senza unità.mapefilterprendono 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 infilterdeve daretrueofalse.
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 ==.
# Two adult tickets and one child ticket cost 34; one adult and two children cost 29solve_system([[2,1],[1,2]], [34,29]) dà [13, 8]det([[2,1],[1,2]]) dà 3rank([[1,2],[2,4]]) dà 1Numeri 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) esqrt(radice principale) accettano tutte numeri complessi. - Esattezza: le componenti, le operazioni aritmetiche e le potenze con esponente intero rimangono esatte. Le radici generali e
argdanno 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 + 0iocomplex(-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)elog(-100)restano nel dominio reale e mostrano un errore relativo ai numeri immaginari. Il messaggio indica la forma complessa da usare, ad esempiosqrt(-4 + 0i). Questa espressione, comesqrt(complex(-4,0)), restituisce2i. - 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,tane le rispettive inverse, le funzioni iperboliche e le rispettive inverse,exp,ln,logolog10,log2,cbrte 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.
(2+3i) * (2-3i) dà 13abs(3+4i) dà 5sqrt(-4 + 0i) dà 2isqrt(complex(-4,0)) dà 2isqrt(-4) dà Error: imaginary number. For a complex answer, write sqrt(-4 + 0i)exp(i*pi) dà -1Somme 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 afrom, l'intervallo è vuoto: la somma è 0 e il prodotto è 1. - Una singola chiamata può avere al massimo 10.000 termini.
sum(k^2, k, 1, 10) dà 385product(k, k, 1, 5) dà 120k = 7 dà 7sum(k, k, 1, 3) dà 6k dà 7Risolvere 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 solutionpiuttosto 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.
solve(2x + 6 = 10) dà 2solve(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 solutionsolve(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
lowerinferiore aupper. - 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-10e 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.
solve(1500 + 12*x = 20*x, x, 0, 1000) dà 187.5solve(x^2 = 2, x, 0, 2) dà 1.4142135624Calcolo
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,lnesqrt. - 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.
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.
derivative(x^3, x, 2) dà 12f(x) = x^2derivative(f(x), x, 3) dà 6differentiate(a*x^2, x) dà (a*(2*(x^(2-1))))derivative(a*x^2, x, 3) dà Unsupported: Unknown name: aIntegrali 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-9volte il valore assoluto del risultato, oppure a1e-9per 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.
integrate(x^2, x, 0, 3) dà 9integrate(x^2, x, 3, 0) dà -9Argomenti e unità nelle funzioni matematiche
factorialè un altro nome perfactetruncperint.signrestituisce -1, 0 o 1.atan2(y, x)restituisce un angolo in radianti come un numero semplice.- Il secondo argomento facoltativo di
round,flooreceilè 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.
gcd(12, 18) dà 6round(17, 5) dà 15sin(30°) dà 0.5sqrt(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
sumoproduct - 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.