Jump to content

KAlgebra/Console Tab/da: Difference between revisions

From KDE Wiki Sandbox
Claus chr (talk | contribs)
Importing a new version from external source
Claus chr (talk | contribs)
No edit summary
 
(39 intermediate revisions by 2 users not shown)
Line 14: Line 14:
=== Definition af brugerfunktioner med lambda-operatoren ===
=== Definition af brugerfunktioner med lambda-operatoren ===


The lambda operator is difficult to wrap your head around at first glance. Basically, it is the way to define a new function in the KAlgebra console. The best way to discuss how to use it is by example. An example of what the area of a rectangle would look like would be:  
Lambda-operatoren er svær at forstå ved første øjekast. Enkelt sagt er det '''KAlgebras''' måde at definere en ny funktion i konsollen. Den bedste måde at diskutere, hvordan den bruges er igennem et eksempel. Til at beregne arealet af et rektangel kunne vi for eksempel definere:  


{{Input|1=<nowiki>AreaRect:=(b,h)->b*h </nowiki>}}
{{Input|1=<nowiki>AreaRect:=(b,h)->b*h </nowiki>}}


What I did here is define (:=) the function AreaRect. AreaRect is a function of two free variables b and h (base and height). The lambda operator (->) shows how they are mapped into the area of a rectangle. After you key this function in, the AreaRect function is built into '''KAlgebra'''. Go ahead, type in, <code>AreaRect(4,2)</code>, you will get the answer, 8.
Det jeg gjorde her var at definere (:=) funktionen AreaRect. AreaRect er en funktion i to frie variable, b og h (basis og højde). Lambda-operatoren (->) viser, hvordan de afbildes over i arealet af et rektangel. Efter at have indtastet denne definition er funktionen AreaRect bygget ind i '''KAlgebra'''. Prøv den bare, skriv for eksempel <code>AreaRect(4,2)</code>; du vil få svaret 8.


Below is a screen shot showing how this most basic of functions is defined, displayed in the variable list, utilized by the user, with results shown in the display.
Herunder ses et skærmbillede, som viser definitionen af denne meget enkle funktion, hvordan den vises i variabellisten og bruges af brugeren med resultatet vist i displayet.


[[File:Kalgebra-lambda-example.png]]
[[File:Kalgebra-lambda-example.png]]


=== Help! (or is it Help?) ===
=== Hjælp! (eller er det Hjælp?) ===


The dictionary is the best source for all of '''KAlgebra's''' available functions. You just click the dictionary tab, and you will get a list of all 64 functions. If you want to edit the value of a variable, you can double click on the current value in the variables list and enter anything you want. '''KAlgebra''' includes an auto complete feature which will suggest possible functions you may use for your calculations. It starts working when you begin typing in the input bar. Once you type in at least one letter, it will give you several options as to what you may want to enter. If one of those options is suitable, you click on it, and what you've been typing will be automatically completed.
Ordbogen er den bedste kilde til alle '''KAlgebras''' funktioner. Du klikker blot på fanebladet '''Ordbog''', så får du en liste med alle 64 funktioner. Hvis du vil redigere værdien af en variabel, så kan du dobbeltklikke på den aktuelle værdi i variabellisten og skrive hvad du vil. '''KAlgebra''' har en autofuldførelses-funktion, som du kan bruge i dine beregninger. Den aktiveres når du begynder at skrive i indtastningslinjen. Efter at have skrevet mindst et bogstav vil den give dig nogle valgmuligheder, som du måske ønsker at skrive. Hvis en af disse valgmuligheder er passende, så klik på den for at få færdiggjort det du var ved at skrive.


=== The Ultimate Example of Math Geekery ===
=== Det ultimative eksempel på matematisk geekeri ===


To show some of the '''KAlgebra''' console concepts, we would like to find the area under a sine curve. To do so, we are going to estimate the area as the area of a bunch of trapezoids that fit under the sine curve. For starters, we define a function (f) that provides our sine curve from 0 to 3.14 radians:
For at vise nogle af '''KAlgebras''' konsolfunktioner vil vi finde arealet under en sinuskurve. For at gøre det vil vi estimere arealet som arealet af en række trapezoider, som passer under sinuskurven. Til at begynde med definerer vi en funktion (f), som giver sinuskurven fra 0 til 3,14 radianer:


{{Input|1=<nowiki>f:=x->sin(x)</nowiki>}}
{{Input|1=<nowiki>f:=x->sin(x)</nowiki>}}


We didn't have to do this, we could just use sin(x) directly, but we can also replace sin(x) in the definition of f to find the area of other interesting shapes.
Vi havde ikke behøvet at gøre dette, vi kunne bare bruge sin(x) direkte, men nu kan vi erstatte sin(x) i definitionen af f, sådan at vi kan finde arealet af andre interessante former.


Next we define a function that is able to calculate the area of a trapezoid:
Herefter definerer vi en funktion, som kan beregne arealet af et trapezoid:


{{Input|1=nowiki>A:=(b,h1,h2)->0.5*(h1+h2)*b</nowiki>}}
{{Input|1=<nowiki>A:=(b,h1,h2)->0.5*(h1+h2)*b</nowiki>}}


The above function is a function of three variables (base, height 1, and height 2) that '''KAlgebra''' is more than capable of handling.  
Ovenstående funktion har tre variable (basis, højde 1 og højde 2), hvilket '''KAlgebra''' håndterer uden problemer.  


Next, we are going to evaluate the series of trapezoids beneath the sine curve in increments of 0.01 radians. To help us do this, we define a helper function x(k)=0.01*k or:
Dernæst skal vi beregne er række af trapezoider under sinuskurven i skridt af 0,01 radianer. Til at hjælpe med det definerer vi funktionen x(k)=0,01k eller:


{{Input|1=<nowiki>x:=k->0.01*k</nowiki>}}
{{Input|1=<nowiki>x:=k->0.01*k</nowiki>}}


So that as k counts from 0 to 314, x changes from 0 to 3.14 radians. We sum the trapezoid areas up using sum function:  
Når k nu tæller fra o til 314, så ændres x fra 0 til 3,14 radianer. Vi summerer trapezoid-arealerne op ved brug af funktionen sum:  


{{Input|1=<nowiki>sum(A(.01,f(x(k)),f(x(k+1))): k=0..314)</nowiki>}}
{{Input|1=<nowiki>sum(A(.01,f(x(k)),f(x(k+1))): k=0..314)</nowiki>}}


This shows off a lot of '''KAlgebra's''' capabilities and syntax. You can see the use of the built in function, sum. We show off the use of nested functions. Also, we see the use of the ''range'' syntax.
Dette viser meget af '''KAlgebras''' egenskaber og syntaks. Du kan se, hvordan man bruger den indbyggede funktion sum. Vi demonstrerer brug af funktioner i funktioner. Vi ser også syntaksen for sekvenser.


[[File:Kalgebra-sinearea-example.png]]
[[File:Kalgebra-sinearea-example.png]]


Our answer is very close to two, which happens to be the exact solution.  
Vort svar er meget tæt på to, hvilket faktisk er det eksakte svar.  


=== Recursion ===
=== Rekursion ===


See, Recursion.
Se, rekursion.


OK, seriously, to understand recursion, you must first understand recursion. The '''KAlgebra''' console provides the user with a virtual laboratory for experimenting with and using recursion. Probably the most used example of recursion is the factorial. Below we define our own factorial function using '''KAlgebra's''' capabilities for defining functions, performing logic inside of functions, and having a function call itself, which is the definition of recursion:
O.k., for rigtigt at forstå rekursion skal du først forstå rekursion. '''KAlgebras''' konsol giver brugeren et virtuelt laboratorium til at eksperimentere med og bruge rekursion. Formentlig det mest brugte eksempel på rekursion er fakultet-funktionen. Herunder definerer vi vores egen fakultet-funktion ved brug af '''KAlgebras''' evne til at definere funktioner, udføre logik inde i funktioner og få funktioner til at kalde sig selv, hvilket er definitionen på rekursion:


{{Input|1=<nowiki>fact:=n->piecewise{ n<=1 ? 1, ? n*fact(n-1)}</nowiki>}}
{{Input|1=<nowiki>fact:=n->piecewise{ n<=1 ? 1, ? n*fact(n-1)}</nowiki>}}


So, breaking this down, we're defining our own function (fact) which just so happens to call fact. This takes advantage of the recursive definition of the factorial function.
Analyserer vi det, så har vi defineret vores egen funktion, fact, som tilfældigvis kalder funktionen fact. Dette udnytter den rekursive definition af fakultet-funktionen.


fact(n) = n! = n*(n-1)*(n-2)*...*2*1
fact(n) = n! = n*(n-1)*(n-2)*...*2*1


Noting that (n-1)! = (n-1)*(n-2)*...*2*1,
Bemærk, at  (n-1)! = (n-1)*(n-2)*...*2*1,
we have: n! = n*(n-1)!  
vi har så: n! = n*(n-1)!  
or fact(n) = n*fact(n-1)
or fact(n) = n*fact(n-1)


To stop the chain of calculations, we define that 1! = 1. We accomplish this bit of logic using the piecewise{ expression ? value, expression ? value, ..., ? default value} construct.
For at afbryde kæden af beregninger definerer vi, at 1! = 1. Vi udtrykker denne smule logik med konstruktionen piecewise{ udtryk ? værdi, udtryk ? værdi, ..., ? standardværdi }.


[[File:Kalgebra-recursion-example.png]]
[[File:Kalgebra-recursion-example.png]]


=== Fun with Lists ===
=== Sjov med lister ===


Beginning with version 0.11, '''KAlgebra''' comes with advanced (and by advanced, I mean time saving) list operations. '''KAlgebra''' had previously come with the means of entering a list of variables or values. For example, one could enter a list of numbers as follows:
Fra version 0.11 leveres '''KAlgebra''' med avancerede (og med avanceret mener jeg tidsbesparende) operationer på lister. '''KAlgebra''' havde tidligere en måde at definere en liste af variable eller værdier. For eksempel kunne man definere en liste med tal således:


{{Input|1=<nowiki>x:=list{0,.2,.4,.6,.8,1,1.2,1.4,1.6,1.8,2,2.2,2.4,2.6,2.8,3.0,3.2}</nowiki>}}
{{Input|1=<nowiki>x:=list{0,.2,.4,.6,.8,1,1.2,1.4,1.6,1.8,2,2.2,2.4,2.6,2.8,3.0,3.2}</nowiki>}}


Now, with the '''map''' function, '''KAlgebra''' provides the user with the means of applying a function to each element of the list. As a simple example, one might wish to evaluate the sine of each element of the list. One might also be tempted to enter '''sin(x)'''. One would be disappointed.
Nu har '''KAlgebra''' funktionen ''map'', som giver brugeren mulighed for at anvende en funktion på hvert element i listen. Som et enkelt eksempel kunne man beregne sinus af hvert element i listen. Man kunne være fristet til at skrive '''sin(x)'''. Man ville så blive skuffet.


To apply a function to each element of the list we use the map function as follows:  
For at anvende en funktion på hvert element i listen bruger vi funktionen map således:  


{{Input|1=<nowiki>s := map( u->sin(u), x)</nowiki>}}
{{Input|1=<nowiki>s := map( u->sin(u), x)</nowiki>}}


The first argument of the map function sets up the function that will be applied to all elements of the list given in the second argument of the map function. So now, '''s''' is a list holding the sine of every element of x.
Det første argument til funktionen map angiver den funktion, der skal anvendes på alle elementerne i den liste, der gives som det andet argument. Nu er '''s''' altså en liste, der indeholder sinusværdierne af hvert element i x.


If we want to pare down a list we can use the filter function to select the list elements we want to keep:
Hvis vi vil at begrænse antallet af elementer i en liste kan vi bruge funktionen filter til at udvælge de elementer, vi vil beholde i listen.


{{Input|1=<nowiki>f := filter( u-> and(u>=-0.5,u<=0.5), s)</nowiki>}}
{{Input|1=<nowiki>f := filter( u-> and(u>=-0.5,u<=0.5), s)</nowiki>}}


After this, f will contain only elements of s that are between -0.5 and +0.5. The first argument of the filter function defines a logical operation used to select the values of the list that we want.
Efter dette vil f kun indeholde de elementer fra s, som ligger imellem -0,5 og 0,5. Det første argument til funktionen filter angiver en logisk funktion, som bruges til at udvælge de værdier i listen, som vi vil have.


Below is a screenshot of the various list operations discussed:
Herunder er et skærmbillede med de forskellige listeoperationer, som vi har omtalt:


[[File:Kalgebra-listopsoxy-example.png]]  
[[File:Kalgebra-listopsoxy-example.png]]  




=== Parting Words ===
=== Afsluttende ord ===


We have scratched the surface of the wonders presented by the '''KAlgebra''' user console. There is a lot of stuff that can be done, so roll up your sleeves, and do some math!
Vi har kun kradset i overfladen af de fantastiske ting, som kan laves i '''KAlgebras''' konsol. Der er masser at ting, som kan gøres, så rul ærmerne op og lav noget matematik!


--[[User:Trlanzi|trLanzi]] 01:10, 1 December 2011 (UTC)
--[[User:Trlanzi|trLanzi]] 01:10, 1. december 2011 (UTC)


[[Category:Education]]
[[Category:Uddannelse/da]]
[[Category:Tutorials]]
[[Category:Vejledning/da]]

Latest revision as of 15:14, 5 January 2013

Lær konsollen at kende

KAlgebras faneblad Konsol er det første du ser, når du åbner KAlgebra. Det er som en regnemaskine, bare meget bedre. Den lille redigeringslinje helt nederst i vinduet er indtastningslinjen. Den bruges til at indskrive det problem, du vil have løst. Svaret kommer i visningsområdet i midten af vinduet. I højre side er der endnu et vindue, Variabler. Det viser den aktuelle værdi af variablerne så som pi, true, false og selv det aktuelle svar. Konsollen kan bruges til at lave simple og komplekse beregninger, og det er nemmere og hurtigere end at starte et lommeregner-program. For at udføre en beregning skriver du den ligning du vil have løst i indtastningslinjen. Efter at have tastet Enter vises svaret i visningsområdet

Lig med! eller Lig med? det er spørgsmålet

En af de vigtigste ting i KAlgebra er at kende forskel på "lig med!" og "lig med?" Jeg ved hvad du tænker, "Hvad er forskellen?". Jo, "lig med!" (:=) bruges til at sætte eller definere værdien af den valgte variabel. Med y:=3 defineres for eksempel y til at have værdien 3. "Lig med?" (=) betyder, at du spørger om en variable er lig med en værdi eller ej. Du vil så enten få svaret true (sandt) eller false (falsk). Hvis du for eksempel indtaster y:=3 og derefter y=2, så får du svaret “false”. Altså er := den operator, som KAlgebra bruger til at definere og = er den logiske operator (ligesom <, >, <= og >=).

KAlgebra som en hurtigere regnemaskine

Der er også almindelige regnemaskine-funktioner så som addition (+), subtraktion (-), multiplikation (*), division (/), eksponent (** og ^) samt paranteser () til at styre rækkefølgen. Hvis du vil tage kvadratroden af et tal, så skriver du tallet fulgt af ^0.5. For eksempel findes kvadratroden af 25 ved: 25^0.5. Hvis du skulle bruge et lommeregner-program på computeren, så skulle du muse rundt til de forskellige virtuelle taster. I KAlgebras konsol kan du blot skrive, hvad du vil beregne, hvilket er meget hurtigere og mere direkte.

Definition af brugerfunktioner med lambda-operatoren

Lambda-operatoren er svær at forstå ved første øjekast. Enkelt sagt er det KAlgebras måde at definere en ny funktion i konsollen. Den bedste måde at diskutere, hvordan den bruges er igennem et eksempel. Til at beregne arealet af et rektangel kunne vi for eksempel definere:

AreaRect:=(b,h)->b*h 

Det jeg gjorde her var at definere (:=) funktionen AreaRect. AreaRect er en funktion i to frie variable, b og h (basis og højde). Lambda-operatoren (->) viser, hvordan de afbildes over i arealet af et rektangel. Efter at have indtastet denne definition er funktionen AreaRect bygget ind i KAlgebra. Prøv den bare, skriv for eksempel AreaRect(4,2); du vil få svaret 8.

Herunder ses et skærmbillede, som viser definitionen af denne meget enkle funktion, hvordan den vises i variabellisten og bruges af brugeren med resultatet vist i displayet.

Hjælp! (eller er det Hjælp?)

Ordbogen er den bedste kilde til alle KAlgebras funktioner. Du klikker blot på fanebladet Ordbog, så får du en liste med alle 64 funktioner. Hvis du vil redigere værdien af en variabel, så kan du dobbeltklikke på den aktuelle værdi i variabellisten og skrive hvad du vil. KAlgebra har en autofuldførelses-funktion, som du kan bruge i dine beregninger. Den aktiveres når du begynder at skrive i indtastningslinjen. Efter at have skrevet mindst et bogstav vil den give dig nogle valgmuligheder, som du måske ønsker at skrive. Hvis en af disse valgmuligheder er passende, så klik på den for at få færdiggjort det du var ved at skrive.

Det ultimative eksempel på matematisk geekeri

For at vise nogle af KAlgebras konsolfunktioner vil vi finde arealet under en sinuskurve. For at gøre det vil vi estimere arealet som arealet af en række trapezoider, som passer under sinuskurven. Til at begynde med definerer vi en funktion (f), som giver sinuskurven fra 0 til 3,14 radianer:

f:=x->sin(x)

Vi havde ikke behøvet at gøre dette, vi kunne bare bruge sin(x) direkte, men nu kan vi erstatte sin(x) i definitionen af f, sådan at vi kan finde arealet af andre interessante former.

Herefter definerer vi en funktion, som kan beregne arealet af et trapezoid:

A:=(b,h1,h2)->0.5*(h1+h2)*b

Ovenstående funktion har tre variable (basis, højde 1 og højde 2), hvilket KAlgebra håndterer uden problemer.

Dernæst skal vi beregne er række af trapezoider under sinuskurven i skridt af 0,01 radianer. Til at hjælpe med det definerer vi funktionen x(k)=0,01k eller:

x:=k->0.01*k

Når k nu tæller fra o til 314, så ændres x fra 0 til 3,14 radianer. Vi summerer trapezoid-arealerne op ved brug af funktionen sum:

sum(A(.01,f(x(k)),f(x(k+1))): k=0..314)

Dette viser meget af KAlgebras egenskaber og syntaks. Du kan se, hvordan man bruger den indbyggede funktion sum. Vi demonstrerer brug af funktioner i funktioner. Vi ser også syntaksen for sekvenser.

Vort svar er meget tæt på to, hvilket faktisk er det eksakte svar.

Rekursion

Se, rekursion.

O.k., for rigtigt at forstå rekursion skal du først forstå rekursion. KAlgebras konsol giver brugeren et virtuelt laboratorium til at eksperimentere med og bruge rekursion. Formentlig det mest brugte eksempel på rekursion er fakultet-funktionen. Herunder definerer vi vores egen fakultet-funktion ved brug af KAlgebras evne til at definere funktioner, udføre logik inde i funktioner og få funktioner til at kalde sig selv, hvilket er definitionen på rekursion:

fact:=n->piecewise{ n<=1 ? 1, ? n*fact(n-1)}

Analyserer vi det, så har vi defineret vores egen funktion, fact, som tilfældigvis kalder funktionen fact. Dette udnytter den rekursive definition af fakultet-funktionen.

fact(n) = n! = n*(n-1)*(n-2)*...*2*1

Bemærk, at (n-1)! = (n-1)*(n-2)*...*2*1, vi har så: n! = n*(n-1)! or fact(n) = n*fact(n-1)

For at afbryde kæden af beregninger definerer vi, at 1! = 1. Vi udtrykker denne smule logik med konstruktionen piecewise{ udtryk ? værdi, udtryk ? værdi, ..., ? standardværdi }.

Sjov med lister

Fra version 0.11 leveres KAlgebra med avancerede (og med avanceret mener jeg tidsbesparende) operationer på lister. KAlgebra havde tidligere en måde at definere en liste af variable eller værdier. For eksempel kunne man definere en liste med tal således:

x:=list{0,.2,.4,.6,.8,1,1.2,1.4,1.6,1.8,2,2.2,2.4,2.6,2.8,3.0,3.2}

Nu har KAlgebra funktionen map, som giver brugeren mulighed for at anvende en funktion på hvert element i listen. Som et enkelt eksempel kunne man beregne sinus af hvert element i listen. Man kunne være fristet til at skrive sin(x). Man ville så blive skuffet.

For at anvende en funktion på hvert element i listen bruger vi funktionen map således:

s := map( u->sin(u), x)

Det første argument til funktionen map angiver den funktion, der skal anvendes på alle elementerne i den liste, der gives som det andet argument. Nu er s altså en liste, der indeholder sinusværdierne af hvert element i x.

Hvis vi vil at begrænse antallet af elementer i en liste kan vi bruge funktionen filter til at udvælge de elementer, vi vil beholde i listen.

f := filter( u-> and(u>=-0.5,u<=0.5), s)

Efter dette vil f kun indeholde de elementer fra s, som ligger imellem -0,5 og 0,5. Det første argument til funktionen filter angiver en logisk funktion, som bruges til at udvælge de værdier i listen, som vi vil have.

Herunder er et skærmbillede med de forskellige listeoperationer, som vi har omtalt:


Afsluttende ord

Vi har kun kradset i overfladen af de fantastiske ting, som kan laves i KAlgebras konsol. Der er masser at ting, som kan gøres, så rul ærmerne op og lav noget matematik!

--trLanzi 01:10, 1. december 2011 (UTC)