Avancerad matematik: funktioner och gränser
Den här sidan sammanfattar den avancerade matematiken i Varlig Calc: listor, vektorer och matriser, komplexa tal, summor och produkter, ekvationslösning samt differential- och integralkalkyl. För varje område beskrivs vad funktionerna gör, vilka indata de godtar, hur exakta resultaten är och vilka begränsningar som gäller. Använd sidan för att kontrollera detaljerna när ett resultat överraskar dig.
För introduktioner med fler exempel, se Listor och statistik, Vektorer och matriser, Komplexa tal och Summering, ekvationslösning och analys.
Översikt
| Funktion | Exempel | Resultat |
|---|---|---|
| Lista | [1, 2+3, 4*2] |
[1, 5, 8] |
| Element ur en lista | [10, 20, 30][1] |
20 |
| Element ur en nästlad lista | [[1,2],[3,4]][1][0] |
3 |
| Summa av storheter | sum([1 kg, 500 g]) |
1.5 kg |
| Statistik | average([1,2,3]), median([5,1,3]) |
2, 3 |
| Intervall med nedräkning | range(5, 1, -2) |
[5, 3, 1] |
| Addera listor | [1,2] + [3,4] |
[4, 6] |
| Matrisprodukt | [[1,2],[3,4]] * [[1,0],[0,1]] |
[[1, 2], [3, 4]] |
| Invers | inverse([[1,2],[3,4]]) |
[[-2, 1], [1.5, -0.5]] |
| Determinant | det([[1,2],[3,4]]) |
-2 |
| Transponering | transpose([[1,2],[3,4]]) |
[[1, 3], [2, 4]] |
| Linjärt system | solve_system([[2,1],[1,2]], [34,29]) |
[13, 8] |
| Komplex aritmetik | (2+3i) * (2-3i) |
13 |
| Komplex kvadratrot | sqrt(complex(-4,0)) |
2i |
| Vanligaste värdet | mode([1,2,2,3]) |
2 |
| Percentil | percentile([1,2,3,4],25) |
1.75 |
| Populationsstandardavvikelse | population_stddev([1,2,3,4]) |
1.1180339887 |
| Summering över ett intervall | sum(k^2, k, 1, 10) |
385 |
| Produkt över ett intervall | product(k, k, 1, 5) |
120 |
| Lös en ekvation exakt | solve(x^2 - 5x + 6 = 0) |
[2, 3] |
| Lös en ekvation i intervallet | solve(x^2 = 4, x, 0, 3) |
2 |
| Symbolisk derivata | differentiate(sin(x), x) |
cos(x) |
| Derivata i en punkt | derivative(x^3, x, 2) |
12 |
| Bestämd integral | integrate(x^2, x, 0, 3) |
9 |
Listor, matriser och komplexa tal är vanliga värden. Du kan ge dem namn och skicka dem till egna funktioner. De räknas om när du ändrar en tidigare rad.
squares(n) = sum(k^2, k, 1, n)squares(3) ger 14first(items) = items[0]first([10, 20]) ger 10root(y) = solve(x^2 = y, x, 0, 10)root(9) ger 3Vad beräkningsmotorn garanterar
Allt på den här sidan följer en regel: en beräkning ger antingen ett resultat som Varlig kan garantera eller ett felmeddelande som förklarar varför det inte går. En exakt beräkning ersätts aldrig med ett tal som bara ser rimligt ut.
Hur exakt resultatet är
| Beräknas som | Vad det täcker |
|---|---|
| Exakta bråk | Ekvationskoefficienter och roten till en linjär ekvation; rötterna till en andragradsekvation vars diskriminant är en perfekt kvadrat; matrisoperationerna +, -, *, multiplikation med ett tal, transpose, det, inverse, rank och solve_system; median, mode, modes, percentile, quartile och alla tre variansformerna |
| Kvadratrot med decimalprecision | stddev, sample_stddev, population_stddev och rötterna till övriga andragradsekvationer |
| Binära flyttal | eigenvalues, qr, lu, svd, integrate och solve med fyra argument |
Exakt betyder exakt: inget avrundas mellan tolkningen av raden och visningen av resultatet. Ett exakt resultat förblir därför exakt när det får ett namn, lagras och återanvänds. Ett approximativt resultat är samma slags decimalvärde med begränsad precision som sqrt returnerar. Det är inte korrekt avrundat till den sista visade siffran, så == är inget tillförlitligt sätt att jämföra två approximativa resultat. solve(x^2 - 2 = 0) och sqrt(2) visas båda som 1.4142135624 men är inte lika.
Ett resultat blandar aldrig exakta och approximativa värden. Om en andragradsekvations diskriminant inte är en perfekt kvadrat blir båda rötterna approximativa.
Enheter
| Operation | Regel |
|---|---|
| Matriser | Endast vanliga tal; enheter, pengar och komplexa element godtas inte |
| Ekvationer | Endast vanliga tal i båda leden |
median, mode, modes, percentile, quartile, stddev, population_stddev |
En gemensam dimension eller vanliga tal. Kompatibla enheter omvandlas till det första värdets enhet, som resultatet behåller |
variance, sample_variance, population_variance |
Endast vanliga tal: variansberäkningen kvadrerar observationerna och bevarar inga enheter |
Om värden med enheter blandas med värden utan enheter blir det ett fel. Enheterna ignoreras inte tyst. Det finns ett sedan tidigare gällande undantag: ett ensamt 0 räknas i de övriga värdenas enhet.
Det här godtas inte
Inget av följande ger ett tal eller en mening som resultat. Varje fall ger ett fel som anger vad som inte stöds och, när ett alternativ finns, vilken form du kan skriva i stället:
- En polynomekvation av högre grad än 2, en ekvation som inte är ett polynom, en obekant i en nämnare eller exponent, två namn utan värden, en ekvation utan obekant eller en ekvation med enheter eller pengar. Alla dessa hänvisar till numerisk
solvemed fyra argument. - En ekvation utan reell rot ger ett fel i stället för en komplex rot. En ekvation som är sann för alla värden ger ett fel i stället för att välja ett av dem.
- En matrisoperation med dimensioner som inte passar ihop eller kräver en kvadratisk matris, inversen av en singulär matris eller ett element som inte är ett vanligt tal.
modenär inget värde upprepas eller flera värden delar högsta frekvens, en percentilnivå utanför 0–100, en kvartil utanför 0–4 och all statistik utomsum,productochcountför en tom lista.
Följande stöds avsiktligt inte: symbolisk omformning utöver att samla polynomkoefficienter, icke-linjära ekvationssystem, komplexa rötter till en reell ekvation, matriser med enheter eller pengar, symbolisk integration och grafritning.
Meddelandena själva listas i Fel, diagnostik och gränser.
Skriva listor och matematiska funktioner
- Kommatecken skiljer listelement och argument åt. Ett kommatecken följt av ett mellanslag är alltid en avgränsare. Ett kommatecken följt av exakt tre siffror kan gruppera tusental, så
[1,200, 1,800]innehåller två element. Utan mellanslag skiljer varje kommatecken elementen åt, som i[12,-51,4]. När båda tolkningarna är möjliga, som i[1,234], visar felmeddelandet båda sätten att skriva det. Använd decimalpunkt för decimaldelen i ett tal. - Matriser är listor av rader, till exempel
[[1,2],[3,4]]. Det finns ingen förkortad form med semikolon som[1,2;3,4]. - Index börjar på 0 och måste vara heltal som är minst 0. Ett index bortom listans slut ger ett fel. Det börjar aldrig om från början eller kapas till ett giltigt värde.
- Antalet argument kontrolleras.
sqrt(4,9)ger ett fel i stället för en gissning.
Listor och statistik
Dessa funktioner godtar en lista: length eller count, sum, product, average eller mean, median, min, max, mode och modes, percentile och quartile, samt spridningsfunktionerna variance, sample_variance, population_variance, stddev, sample_stddev och population_stddev.
modeger bara ett resultat när ett värde är entydigt vanligast. Om flera värden delar högsta frekvens eller inget värde upprepas blir det ett fel som hänvisar tillmodes,medianelleraverage.modesreturnerar alla värden som delar högsta frekvens.percentile(list, rank)tar en percentilnivå från 0 till 100 och interpolerar linjärt mellan de två närmaste nivåerna enligt den inkluderande definitionen: den 50:e percentilen är medianen, och den 0:e och 100:e är minsta respektive största värdet.quartile(list, k)tar ett heltalkfrån 0 till 4 och motsvararpercentile(list, 25k).varianceochstddevär stickprovsvarianterna. De dividerar medn - 1och kräver två värden.population_varianceochpopulation_stddevdividerar mednoch kräver ett värde.sample_varianceochsample_stddevär längre namn för de korta varianterna.- En tom lista ger
sum0,product1 ochcount0. Övriga statistiska funktioner ger fel för en tom lista. - Två lika långa listor adderas och subtraheras element för element. Du kan multiplicera eller dividera en lista med ett tal och jämföra två listor med
==. range(start, end, step)inkluderar båda ändarna. Steget är valfritt.dot(a, b)beräknar skalärprodukten av två reella vektorer.
spend = [420, 385, 510, 460] ger [420, 385, 510, 460]sum(spend) ger 1,775average(spend) ger 443.75median(spend) ger 440spend[0] ger 420spend * 1.1 ger [462, 423.5, 561, 506]range(0, 1, 0.25) ger [0, 0.25, 0.5, 0.75, 1]Listomvandlingar
| Anrop | Resultat | Vad det gör |
|---|---|---|
sort([3,1,2]) |
[1, 2, 3] |
Sorterar tal utan enheter i stigande ordning; lika element behåller sin ordning |
reverse([1,2,3]) |
[3, 2, 1] |
Vänder ordningen i valfri lista |
unique([3,1,3,2]) |
[3, 1, 2] |
Behåller första förekomsten av varje värde; elementen måste matcha exakt, inklusive enheter |
slice([10,20,30,40], 1, 3) |
[20, 30] |
Tar elementen från startindex fram till, men inte inklusive, slutindex |
map(x^2, x, [1,2,3]) |
[1, 4, 9] |
Beräknar uttrycket för varje element |
filter(x > 1, x, [1,2,3]) |
[2, 3] |
Behåller de element där villkoret är sant |
variance([1,2,3]) |
1 |
Exakt stickprovsvarians, med division med antalet minus ett |
slicekräver heltal där 0 ≤ start ≤ end ≤ listans längd. Andra gränser ger fel.variancebehöver minst två tal utan enheter.mapochfiltertar först uttrycket, sedan namnet som representerar varje element och sist listan. Namnet gäller bara inom anropet och ändrar alltså inte något namn som definierats på annat håll. Uttrycket ifiltermåste getrueellerfalse.
Vektorer och matriser
Vektorer är platta listor och matriser är listor med rader. Matriser måste vara rektangulära, innehålla reella tal utan enheter och ha 1 till 32 rader och kolumner.
| Funktion | Vad det gör |
|---|---|
A * B |
Matrisprodukt; A:s kolumnantal måste vara lika med B:s radantal |
transpose(A) |
Byter rader och kolumner |
shape(A) |
[rows, columns] |
identity(n) |
En enhetsmatris med n rader och n kolumner |
trace(A) |
Summan av diagonalelementen i en kvadratisk matris |
det(A) |
Determinant för en kvadratisk matris |
inverse(A) |
Inversen av en kvadratisk matris; en singulär matris ger fel |
rank(A) |
Rang genom exakt elimination, för valfri rektangulär matris |
dot(a, b) |
Skalärprodukt av två lika långa vektorer |
cross(a, b) |
Kryssprodukt av två vektorer med tre element |
solve_system(A, b) |
Löser A*x = b för en kvadratisk matris A och en platt vektor b |
eigenvalues(A) |
Egenvärden för en reell kvadratisk matris, inklusive komplexa par, utan bestämd ordning |
qr(A) |
[Q, R] där Q*R är ungefär A |
lu(A) |
[P, L, U] där P*A är ungefär L*U; endast kvadratiska matriser |
svd(A) |
[U, s, Vt] där s är en platt lista med singularvärden och A är ungefär U*diag(s)*Vt |
Exakta resultat. det, inverse, rank och solve_system använder exakta bråk. rank har ingen avrundningstolerans. solve_system rapporterar ett fel för ett singulärt system och hanterar inte icke‑linjära system eller system med oändligt många lösningar.
Approximativa resultat. eigenvalues, qr, lu och svd använder flyttal och kontrollerar att utdata är ändliga. qr och svd godtar rektangulära matriser och returnerar de kompakta (”tunna”) faktorerna. Beräkningar av egenvärden och SVD avbryts efter 10 000 iterationer. I det visade resultatet skrivs ett element som bara motsvarar avrundningsfel i förhållande till det största elementet som 0. Vid indexering returneras däremot det lagrade värdet. Illakonditionerade matriser kan ge sämre noggrannhet, så testa inte dessa resultat med ==.
# Two adult tickets and one child ticket cost 34; one adult and two children cost 29solve_system([[2,1],[1,2]], [34,29]) ger [13, 8]det([[2,1],[1,2]]) ger 3rank([[1,2],[2,4]]) ger 1Komplexa tal
i är den imaginära enheten, såvida du inte har definierat ett namn eller en anpassad enhet som kallas i.
- Funktioner:
complex(real, imaginary),real,imag,conj,abs,arg(i radianer) ochsqrt(huvudroten) godtar alla komplexa tal. - Exakthet: delarna, aritmetiken och potenser med heltalsexponent förblir exakta. Övriga rötter och
argär approximativa. - Reella resultat: när imaginärdelarna tar ut varandra, som i
(2+3i) * (2-3i), blir resultatet ett vanligt reellt tal. Ett värde som skrivs som komplext, till exempel-4 + 0iellercomplex(-4,0), förblir komplext genom beräkningar och namngivning även om det visas som-4. - Kvadratrötter och logaritmer av negativa tal:
sqrt(-4),ln(-1)ochlog(-100)stannar inom de reella talen och visar ett fel om imaginära tal. Felmeddelandet anger den komplexa form du kan skriva i stället, till exempelsqrt(-4 + 0i). Det uttrycket, ellersqrt(complex(-4,0)), ger2i. - Visning: en del som enbart är ett avrundningsfel från flyttalsberäkning visas som 0, så
exp(i*pi)visas som-1. Det lagrade värdet behåller sina siffror. - Jämförelser:
<och>fungerar endast när båda de imaginära delarna är noll. - Andra funktioner:
sin,cos,tanoch deras inverser, de hyperboliska funktionerna och deras inverser,exp,ln,logellerlog10,log2,cbrtsamt potenser med bråktal eller komplexa tal som exponent godtar alla komplexa tal. De använder flyttal och huvudgrenar. Logaritmen av noll och alla icke-ändliga resultat ger fel.
(2+3i) * (2-3i) ger 13abs(3+4i) ger 5sqrt(-4 + 0i) ger 2isqrt(complex(-4,0)) ger 2isqrt(-4) ger Error: imaginary number. For a complex answer, write sqrt(-4 + 0i)exp(i*pi) ger -1Summor och produkter
sum(expression, name, from, to) adderar uttrycket för varje heltal från from till to, inklusive båda ändarna. summation är ett annat namn för det, och product multiplicerar istället.
- Namnet är lokalt för anropet. Det ändrar inget namn som du redan har definierat och gör inte heller raden beroende av ett sådant namn.
- Du kan lägga en summa eller produkt inuti en annan.
- Om
toär mindre änfromär intervallet tomt: summan är 0 och produkten är 1. - Ett enskilt anrop får ha högst 10 000 termer.
sum(k^2, k, 1, 10) ger 385product(k, k, 1, 5) ger 120k = 7 ger 7sum(k, k, 1, 3) ger 6k ger 7Lösa ekvationer
solve(equation) läser en polynomekvation av grad 1 eller 2 med en okänd och beräknar dess rötter. Den okända är det enda namnet i ekvationen som inte har något värde; ett namn som har ett läses som dess mängd, och högerledet kan utelämnas, i vilket fall uttrycket sätts till noll.
- En linjär ekvation returnerar ett tal. En andragradsekvation returnerar en lista med sina distinkta reella rötter i stigande ordning. En dubbelrot ger alltså en lista med ett element. Resultatets form bestäms av den skrivna graden, inte av antalet hittade rötter.
- Koefficienterna och omformningen av dem är exakta. Detsamma gäller rötterna när diskriminanten är en perfekt kvadrat. Övriga andragradsekvationer ger två rötter beräknade med decimala kvadratrötter.
- Båda leden måste bestå av vanliga tal. Enheter, pengar och komplexa värden godtas inte.
- En ekvation utan reell rot ger
Error: no real solutioni stället för en komplex rot. En ekvation som är sann för alla värden meddelar detta i stället för att välja ett värde. - Allt annat, som grad 3 och högre, en ekvation som inte är ett polynom, en obekant i en nämnare eller exponent, eller ytterligare ett namn utan värde, avvisas med ett meddelande som hänvisar till formen med fyra argument nedan.
solve(2x + 6 = 10) ger 2solve(x^2 - 5x + 6 = 0) ger [2, 3]solve(x^2 - 2 = 0) ger [-1.4142135624, 1.4142135624]solve(x^2 + 1 = 0) ger Error: no real solutionsolve(expression, name, lower, upper) är en annan funktion: den hittar ett reellt värde på name mellan lower och upper där uttrycket är noll. solve(left = right, name, lower, upper) hittar ett värde där leden är lika.
- Gränserna måste vara ändliga tal, och
lowermåste vara mindre änupper. - En rot exakt vid en gräns accepteras. Annars måste uttrycket vara positivt vid en gräns och negativt vid den andra, och det ska vara kontinuerligt däremellan.
- Sökningen halverar intervallet i varje steg. Den lyckas när uttryckets avstånd från noll är högst
1e-10och intervallet är tillräckligt smalt, inom 128 steg. Om uttrycket är odefinierat vid en kontrollerad punkt eller om sökningen inte konvergerar visas ett fel på raden. - Det hittar en rot, inte alla. För system av linjära ekvationer, använd
solve_system.
solve(1500 + 12*x = 20*x, x, 0, 1000) ger 187.5solve(x^2 = 2, x, 0, 2) ger 1.4142135624Differential- och integralkalkyl
Symboliska derivator
differentiate(expression, name), som också kan skrivas derivative(expression, name), returnerar derivatan som text.
- Den använder reglerna för summa, produkt, kvot, potens och sammansatta funktioner på reell aritmetik utan enheter, samt
sin,cos,tan,sinh,cosh,exp,lnochsqrt. - Andra namn i uttrycket behandlas som konstanter, oavsett om de har ett värde i anteckningen:
differentiate(a*x^2, x)ger(a*(2*(x^(2-1)))). - Resultatet är inte förenklat och är begränsat till 8 192 tecken.
- Andra funktioner, som
abs, ger fel. Använd numerisk derivering i en punkt för dem. Detta är inte ett fullständigt datoralgebrasystem. - Derivatan har samma begränsningar av definitionsmängden som ursprungsuttrycket.
differentiate(sin(x), x) ger cos(x)differentiate(x^3, x) ger (3*(x^(3-1)))Derivator i en punkt
derivative(expression, name, point), eller differentiate med tre argument, beräknar lutningen numeriskt i en punkt. Funktionen använder förfinade centrala differenser och jämför dem med ensidiga uppskattningar. Uttrycket kan använda egna funktioner, men måste vara glatt nära punkten och använda reella tal utan enheter. Om uppskattningen inte konvergerar eller ett beräknat provvärde är odefinierat visas ett fel på raden.
Eftersom de numeriska formerna beräknar ett tal måste alla namn utom variabeln ha ett värde. Det gäller derivator i en punkt, sum, product, solve och integrate. Ett namn utan värde ger Unsupported: Unknown name: följt av namnet.
derivative(x^3, x, 2) ger 12f(x) = x^2derivative(f(x), x, 3) ger 6differentiate(a*x^2, x) ger (a*(2*(x^(2-1))))derivative(a*x^2, x, 3) ger Unsupported: Unknown name: aBestämda integraler
integrate(expression, name, lower, upper) beräknar arean under uttrycket mellan två ändliga gränser.
- Att byta gränser ändrar svarets tecken, och lika gränser ger noll.
- Funktionen använder adaptiva Gauss–Kronrod-regler med 7 och 15 punkter som inte är jämnt fördelade. Det hindrar en regelbunden våg som
cos(128*pi*x)från att lura metoden:integrate(cos(128*pi*x), x, 0, 1)ger ungefär-1.3e-15, vilket är noll inom avrundningsfelet. - Målet är ett uppskattat totalfel på högst
1e-9gånger resultatets belopp, eller1e-9när beloppet är mindre än 1. Minst två förfiningsnivåer jämförs, avrundningsfel beaktas och delen med störst uppskattat fel förfinas först. - Beräkningen stannar efter 2 048 förfiningar, 20 underindelningsnivåer eller de 100 000 steg som delas med andra avancerade beräkningar på raden. Om en gräns nås eller ett provvärde är odefinierat blir det ett fel.
- Feluppskattningen är en vägledning, ingen garanti. Använd glatta uttryck med ändliga värden. Resultat för uttryck med toppar, språng eller snabba svängningar kan vara felaktiga.
- Obestämda integraler och oändliga gränser stöds inte.
integrate(x^2, x, 0, 3) ger 9integrate(x^2, x, 3, 0) ger -9Argument och enheter i matematiska funktioner
factorialär ett annat namn förfact, ochtruncförint.signreturnerar -1, 0 eller 1.atan2(y, x)returnerar en vinkel i radianer som ett vanligt tal.- Det valfria andra argumentet för
round,floorochceilär ett steg, inte ett antal decimaler:round(17, 5)avrundar till närmaste 5. För att avrunda till decimaler, se Avrundning. - Logaritmer, exponentialfunktioner och hyperboliska funktioner godtar inte enheter eller pengar. Vanliga trigonometriska funktioner godtar vinklar som
30°. - Kvadrat- och kubikrötter behåller enheterna när enhetens exponent är jämnt delbar med rotens grad. Potenser av storheter behåller också enheterna. Temperaturer i Celsius och Fahrenheit kan inte kvadreras eller rotutdras.
gcd(12, 18) ger 6round(17, 5) ger 15sin(30°) ger 0.5sqrt(9 m²) ger 3 m(2 kg)^2 ger 4 kg²Begränsningar
Gränserna kontrolleras innan ett resultat visas:
- 1 024 poster i en lista eller
range - matriser upp till 32 × 32
- 10 000 termer i en
sumellerproduct - 16 nivåer av nästlade listor och funktionsanrop
- 100 000 steg som delas av alla avancerade beräkningar på en rad, inklusive nästlade anrop
- 4 096 bitar i ett bråks täljare eller nämnare, som på andra ställen i Varlig Calc
Om en gräns nås visas ett fel på den raden. Resten av anteckningen fortsätter fungera. En ofullständig summa, en ofullständig invers eller en rot som inte har konvergerat presenteras aldrig som ett resultat. Alla gränser och uppgifter om exakthet finns i Läsa resultat: visning och precision.