KAlgebra/Homework/da: Difference between revisions

From KDE UserBase Wiki
(Importing a new version from external source)
 
(Importing a new version from external source)
 
(58 intermediate revisions by the same user not shown)
Line 1: Line 1:
<languages />
<languages />
This page shows some uses of '''KAlgebra''' in real world problems.
Denne side viser, hvordan '''KAlgebra''' kan bruges til at løse opgaver fra den virkelige verden.


== Combinatorial example==
== Eksempel med kombinatorik ==


We have 6 people who want to know how to get around a table with 6 chairs.
Vi har 6 personer, som vil vide, på hvor mange måder de kan fordele sig omkring et bord med 6 stole.


We know that 6 people can get around the table with this configuration
Vi ved, at 6 personer kan fordele sig omkring bordet med disse konfigurationer


:{|  
:{|  
Line 18: Line 18:
|}
|}


And so on.
og så videre.


We notice that the last item rotates its position by 1, the fifth rotates position by 2, the fourth rotates position by 3, the third rotates position by 4, the second rotates position by 5 and first rotates position by 6. So we can write down a simple formula:
Vi bemærker, at den første person kan placere sig på 6 forskellige pladser; den anden person har så 5 muligheder for at placere sig, og herefter er der 4 pladser til den tredje person, 3 pladser til fjerde, 2 pladser til den femte og endelig 1 plads til den sjette. Vi kan således skrive følgende simple beregning:


{{Input | 1=6*5*4*3*2*1}}
{{Input | 1=6*5*4*3*2*1}}


Let's write this into '''KAlgebra''' console, and the answer returned is:
Det skriver vi i '''KAlgebras''' konsol, og får svaret:
{{Output | 1=<nowiki>(((((1)*2)*3)*4)*5)*6
{{Output | 1=<nowiki>(((((1)*2)*3)*4)*5)*6
=720</nowiki>}}       
=720</nowiki>}}       


This kind of arrangement of things around some position, where the position number is equal to the number of things, is called "permutation".
Den slags arrangementer af ting i rækkefølger, hvor antallet af pladser er lig med antallet af ting kaldes en permutation.


Let's try to call in '''KAlgebra''' the permutation function:
Lad os prøve at bruge '''KAlgebras''' permutationsfunktion:


{{Input|1=factorial(6)}} and we get
{{Input|1=factorial(6)}} så får vi
{{Output|1=<nowiki>factorial(6)
{{Output|1=<nowiki>factorial(6)
=720</nowiki>}}
=720</nowiki>}}


It's the same result as you can see.
Som du kan se, giver det samme resultat som før.


==Probability example ==
== Eksempel med sandsynligheder ==


Let's roll a dice. We want to know the probability of one face appearing.
Lad os kaste med en terning. Vi vil finde sandsynligheden for et bestemt udfald.
     
We can define positive probability, the result of the event being favourable to us, and negative probability, the result of the event being unfavourable to us.


So you have to pick only one face:
Vi taler om positivt udfald, når kastet falder ud til vores fordel og negativt udfald, når det ikke er fordelagtigt for os.


:probability = face picked / total face = 1/6
Her skal du altså vælge en bestemt side:


So now we know that when a dice is rolled there is a 1/6 of probability that a face we chose will come up.
:Sandsynlighed = antal sider valgt/samlet antal sider = 1/6


We can set a simple function in '''KAlgebra''' to take this formula in a simple way:
Nu ved vi, at når terningen kastes, så er der 1/6 chance for, at terningen lander med vores side opad.


{{Input|1=<nowiki>probability:=(favorable,total)->favorable/total</nowiki>}}
Vi kan definere en simpel funktion i '''KAlgebra''' til at beregne dette:


== Numerical Theory ==
{{Input|1=<nowiki>sandsynlighed:=(favorabel,total)->favorabel/total</nowiki>}}


Let's say that we want to know the sum of all numbers between a bounded interval, for instance 1 - 100. We have to do the sum of all numbers from 0 to 100 if we don't know the rule to get them.
== Talteori ==
   
 
'''KAlgebra''' offers a great facility to this task. Let's write in console:
Lad os sige, at vi ønsker at kende summen af alle tal i et begrænset interval, for eksempel fra 1 til 100. Vi skal så lægge alle disse hundrede tal sammen, hvis vi ikke kender en formel, der kan bruges.
 
'''KAlgebra''' har en smart funktion til denne opgave. Vi skriver i konsollen:


{{Input|1= sum(x: x=1..100)}}
{{Input|1= sum(x: x=1..100)}}
      
      
and we get the result:
og får resultatet:
{{Output|1=<nowiki>sum(x: x=1..100)
{{Output|1=<nowiki>sum(x: x=1..100)
= 5050</nowiki>}}
= 5050</nowiki>}}


The syntax indicate this:
Der sker følgende:


:1. Bound x as variable
:1. Brug x som variabel
:2. Take first value of x
:2. Tag den første værdi af x
:3. Take second value of x and add the previous value of x
:3. Tag den anden værdi af x og læg det til den første værdi
:4. Take third value of x and add the previous value of x
:4. Tag den tredje værdi af x og læg den til den forrige sum
::...
::...
:N. Take the last value of x and add the last value of x
:N. Tag den sidste værdi af x og  læg den til den forrige sum
 
== Elektronik ==


== Electronic ==
=== Eksempel 1 ===


===Example 1===
Lad os tage en simpel AND-kreds med to input og et output. For at simulere det i '''KAlgebra''' skriver vi


Let's take a simple AND gate with two inputs and one output. To resolve it in '''KAlgebra''' we will write
{{Input|1=and(variabel1, variabel2)}}


{{Input|1=and(variable1, variable2)}}
hvilket vil beregne det output, som kredsen giver med de to input.


from which we will get the and value of the input as output.
=== Eksempel 2 ===


===Example 2===
Vi har et simpelt kredsløb bestående af et 3V-batteri og to elektriske modstande (R1 og R2) på hver 3 kOhm forbundet parallelt. Vi vil beregne strømmen i kredsløbet.
 
We have a simple circuit: a battery of 3V and two electrical resistances (R1 and R2) put on parallel of 3kOhm. We want to get the current circulating in the circuit.


We have first to calculate the value of the electric resistance expressed according to the law:
Først skal vi beregne værdien af den elektriske modstand ved hjælp af følgende formel:


:TotalResistance = (1/R1 + 1/R2)<sup>-1</sup>
:SamletModstand = (1/R1 + 1/R2)<sup>-1</sup>
:Current = Voltage/TotalResistance
:Strøm = Spænding/SamletModstand


Let's write a simple function in '''KAlgebra''' to do this:
LAd os skrive a enkel funktion i '''KAlgebra''' til at gøre dette:


{{Input|1=totalresistance:=(R1,R2)->(1/R1+1/R2)^-1
{{Input|1=samletmodstand:=(R1,R2)->(1/R1+1/R2)^-1
current:=(voltage,totalresistance)->voltage/totalresistance}}
strøm:=(spænding,samletmodstand)->spænding/samletmodstand}}


Let's see what we get:
Lad os se, hvad vi får:
{{Input|1=current(3, totalresistance(3000, 3000))}}
{{Input|1=strøm(3, samletmodstand(3000, 3000))}}
{{Output|1=<nowiki>current(3, totalresistance(3 000, 3 000))
{{Output|1=<nowiki>strøm(3, samletmodstand(3 000, 3 000))
= 0,002</nowiki>}}
= 0,002</nowiki>}}




==Fluid==
== Væsker ==


===Example Problem with Same Material, but Different Volumes and Temperatures===
=== Eksempel med samme væsker men forskellige rumfang og temperaturer ===


Now, what if we need to know the final temperature when we mix  40L of 15°C water with 30L of 70°C water?
Hvad nu, hvis vi vil vide, hvad sluttemperaturen bliver, når vi blander 40 L 15°C varmt vand med 30 L 70°C varmt vand? Ved at bruge energibevarelse ved vi, at den samlede termiske energi er den samme før og efter blandingen, så slutenergien er lig med summen af energierne i de to væsker (vi bruger U for intern energi):<br />
Using conservation of energy, we know that the initial and final thermal energies are the same, so the final energy is equal to the energy of the first fluid plus the energy of the second fluid(using U for internal energy):<br />
:U<sub>final</sub> = U1 + U2
:U<sub>final</sub> = U1 + U2


Internal energy is equal to the volumetric heat capacity times volume times temperature:<br />
Intern energi er lig med den volumetriske varmecapacitet ganget med temperaturen:<br />
:U = C*V*T
:U = C*V*T


So C<sub>final</sub>*V<sub>final</sub>*T<sub>final</sub> = C1*V1*T1 + C2*V2*T2
C<sub>slut</sub>*V<sub>slut</sub>*T<sub>slut</sub> = C1*V1*T1 + C2*V2*T2


And since the heat capacities are all the same and cancel out, and the final volume is the sum of the two initial volumes:<br />
Da varmekapaciteterne alle er ens, så går de ud, og slutvolumenet er lig summen af de to oprindelige volumener:<br />
:(V1+V2)*T<sub>final</sub> = V1*T1 + V2*T2
:(V1+V2)*T<sub>slut</sub> = V1*T1 + V2*T2
::or
::eller
:T<sub>final</sub> = (V1*T1 + V2*T2)/(V1+V2)
:T<sub>slut</sub> = (V1*T1 + V2*T2)/(V1+V2)


We can then either use this directly in '''KAlgebra''':
Vi kan enten udregne dette direkte i '''KAlgebra''':{{Input |<nowiki>(40*15 + 30*70)/(40 + 30)
{{Input |<nowiki>(40*15 + 30*70)/(40 + 30)
</nowiki>}}
</nowiki>}}
{{Output |<nowiki>(40*15+30*70)/(40+30)
{{Output |<nowiki>(40*15+30*70)/(40+30)
=38.5714</nowiki>}}
=38.5714</nowiki>}}
and get the final temperature, or put in a function if we need to repeat the computation:
for at finde sluttemperaturen eller vi kan definere en funktion, hvis vi skal gentage beregningen:
{{Input |<nowiki>finalTemp:=(v1,t1,v2,t2)->(v1*t1 + v2*t2)/(v1+v2)</nowiki>}}
{{Input |<nowiki>slutTemp:=(v1,t1,v2,t2)->(v1*t1 + v2*t2)/(v1+v2)</nowiki>}}


Which we can then use like this:
Den kan vi så bruge således:
{{Input |<nowiki>finalTemp(40,15,30,70)
{{Input |<nowiki>finalTemp(40,15,30,70)
</nowiki>}}
</nowiki>}}
Line 137: Line 135:
=38.5714</nowiki>}}
=38.5714</nowiki>}}


===Example Problem with Different Fluids===
=== Eksempel med forskellige væsker ===


Now, suppose the two fluids have different volumetric heat capacities, such as 4180 J/(L*K) for the first liquid (water), and 1925 J/(L*K) for the second liquid (ethanol).
Antag nu, at de to væsker har forskellige volumetriske varmekapaciteter; for eksempel 4180 J/(L*K) for den første (vand) og 1925 J/(L*K) for den anden (sprit). Vi skal igen bruge formlen:<br />
We will need to refer back to the equation:<br />
:C<sub>slut</sub>*V<sub>slut</sub>*T<sub>slut</sub> = C1*V1*T1 + C2*V2*T2
:C<sub>final</sub>*V<sub>final</sub>*T<sub>final</sub> = C1*V1*T1 + C2*V2*T2


The resultant heat capacity will be the average of the capacities of the first and second fluids, weighted by volume(since it is a volumetric heat capacity rather than mass- or molar-specific):<br />
Varmekapaciteten af blandingen vil være gennemsnittet af de to oprindelige varmekapaciteter vægtet efter volumen (eftersom det er volumetriske varmekapaciteter):<br />
:C<sub>final</sub> = (C1*V1 + C2*V2)/V<sub>final</sub>
:C<sub>slut</sub> = (C1*V1 + C2*V2)/V<sub>slut</sub>


And plugging this into the previous equation, we get:<br />
Indsætter vi i de foregående ligninger får vi:<br />
:(C1*V1 + C2*V2)*T<sub>final</sub> = C1*V1*T1 + C2*V2*T2
:(C1*V1 + C2*V2)*T<sub>slut</sub> = C1*V1*T1 + C2*V2*T2
::or
::eller
:T<sub>final</sub> = (C1*V1*T1 + C2*V2*T2)/(C1*V1 + C2*V2)
:T<sub>slut</sub> = (C1*V1*T1 + C2*V2*T2)/(C1*V1 + C2*V2)


And either use this formula directly:
Vi kan enten bruge denne formel direkte:
{{Input |<nowiki>(4180*40*15 + 1925*30*70)/(4180*40+1925*30)
{{Input |<nowiki>(4180*40*15 + 1925*30*70)/(4180*40+1925*30)
</nowiki>}}
</nowiki>}}
Line 157: Line 154:
=29.1198</nowiki>}}
=29.1198</nowiki>}}


Or write a function if we want to repeat the calculation:
Eller skrive en funktion, hvis vi skal gentage beregningen:
{{Input |<nowiki>finalTemp2:=(c1,v1,t1,c2,v2,t2)->(c1*v1*t1 + c2*v2*t2)/(c1*v1+c2*v2)
{{Input |<nowiki>slutTemp2:=(c1,v1,t1,c2,v2,t2)->(c1*v1*t1 + c2*v2*t2)/(c1*v1+c2*v2)
</nowiki>}}
</nowiki>}}


Which we can then use like this:
Den kan vi så bruge således:
{{Input |<nowiki>finalTemp2(4180,40,15,1925,30,70)
{{Input |<nowiki>slutTemp2(4180,40,15,1925,30,70)
</nowiki>}}
</nowiki>}}
{{Output |<nowiki>finalTemp2(4,180, 40, 15, 1,925, 30, 70)
{{Output |<nowiki>slutTemp2(4,180, 40, 15, 1,925, 30, 70)
=29.1198</nowiki>}}
=29.1198</nowiki>}}
Screenshot of '''KAlgebra''' after running these computations:
Skærmbillede af '''KAlgebra''' efter at have lavet disse beregninger:
[[Image:KAlgebra-Fluids-Example-Screenshot.png|400px|center]]
[[Image:KAlgebra-Fluids-Example-Screenshot.png|400px|center]]


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

Latest revision as of 17:21, 29 April 2011

Denne side viser, hvordan KAlgebra kan bruges til at løse opgaver fra den virkelige verden.

Eksempel med kombinatorik

Vi har 6 personer, som vil vide, på hvor mange måder de kan fordele sig omkring et bord med 6 stole.

Vi ved, at 6 personer kan fordele sig omkring bordet med disse konfigurationer

p1 p2 p3 p4 p5 p6
p1 p2 p3 p4 p6 p5
p1 p2 p3 p5 p4 p6
p1 p2 p3 p5 p6 p4

og så videre.

Vi bemærker, at den første person kan placere sig på 6 forskellige pladser; den anden person har så 5 muligheder for at placere sig, og herefter er der 4 pladser til den tredje person, så 3 pladser til fjerde, 2 pladser til den femte og endelig 1 plads til den sjette. Vi kan således skrive følgende simple beregning:

6*5*4*3*2*1

Det skriver vi i KAlgebras konsol, og får svaret:

(((((1)*2)*3)*4)*5)*6
=720

Den slags arrangementer af ting i rækkefølger, hvor antallet af pladser er lig med antallet af ting kaldes en permutation.

Lad os prøve at bruge KAlgebras permutationsfunktion:

factorial(6)

så får vi

factorial(6)
=720

Som du kan se, giver det samme resultat som før.

Eksempel med sandsynligheder

Lad os kaste med en terning. Vi vil finde sandsynligheden for et bestemt udfald.

Vi taler om positivt udfald, når kastet falder ud til vores fordel og negativt udfald, når det ikke er fordelagtigt for os.

Her skal du altså vælge en bestemt side:

Sandsynlighed = antal sider valgt/samlet antal sider = 1/6

Nu ved vi, at når terningen kastes, så er der 1/6 chance for, at terningen lander med vores side opad.

Vi kan definere en simpel funktion i KAlgebra til at beregne dette:

sandsynlighed:=(favorabel,total)->favorabel/total

Talteori

Lad os sige, at vi ønsker at kende summen af alle tal i et begrænset interval, for eksempel fra 1 til 100. Vi skal så lægge alle disse hundrede tal sammen, hvis vi ikke kender en formel, der kan bruges.

KAlgebra har en smart funktion til denne opgave. Vi skriver i konsollen:

sum(x: x=1..100)

og får resultatet:

sum(x: x=1..100)
= 5050

Der sker følgende:

1. Brug x som variabel
2. Tag den første værdi af x
3. Tag den anden værdi af x og læg det til den første værdi
4. Tag den tredje værdi af x og læg den til den forrige sum
...
N. Tag den sidste værdi af x og læg den til den forrige sum

Elektronik

Eksempel 1

Lad os tage en simpel AND-kreds med to input og et output. For at simulere det i KAlgebra skriver vi

and(variabel1, variabel2)

hvilket vil beregne det output, som kredsen giver med de to input.

Eksempel 2

Vi har et simpelt kredsløb bestående af et 3V-batteri og to elektriske modstande (R1 og R2) på hver 3 kOhm forbundet parallelt. Vi vil beregne strømmen i kredsløbet.

Først skal vi beregne værdien af den elektriske modstand ved hjælp af følgende formel:

SamletModstand = (1/R1 + 1/R2)-1
Strøm = Spænding/SamletModstand

LAd os skrive a enkel funktion i KAlgebra til at gøre dette:

samletmodstand:=(R1,R2)->(1/R1+1/R2)^-1
strøm:=(spænding,samletmodstand)->spænding/samletmodstand

Lad os se, hvad vi får:

strøm(3, samletmodstand(3000, 3000))
strøm(3, samletmodstand(3 000, 3 000))
= 0,002


Væsker

Eksempel med samme væsker men forskellige rumfang og temperaturer

Hvad nu, hvis vi vil vide, hvad sluttemperaturen bliver, når vi blander 40 L 15°C varmt vand med 30 L 70°C varmt vand? Ved at bruge energibevarelse ved vi, at den samlede termiske energi er den samme før og efter blandingen, så slutenergien er lig med summen af energierne i de to væsker (vi bruger U for intern energi):

Ufinal = U1 + U2

Intern energi er lig med den volumetriske varmecapacitet ganget med temperaturen:

U = C*V*T

Så Cslut*Vslut*Tslut = C1*V1*T1 + C2*V2*T2

Da varmekapaciteterne alle er ens, så går de ud, og slutvolumenet er lig summen af de to oprindelige volumener:

(V1+V2)*Tslut = V1*T1 + V2*T2
eller
Tslut = (V1*T1 + V2*T2)/(V1+V2)

Vi kan enten udregne dette direkte i KAlgebra:

(40*15 + 30*70)/(40 + 30)
(40*15+30*70)/(40+30)
=38.5714

for at finde sluttemperaturen eller vi kan definere en funktion, hvis vi skal gentage beregningen:

slutTemp:=(v1,t1,v2,t2)->(v1*t1 + v2*t2)/(v1+v2)

Den kan vi så bruge således:

finalTemp(40,15,30,70)
finalTemp(40, 15, 30, 70)
=38.5714

Eksempel med forskellige væsker

Antag nu, at de to væsker har forskellige volumetriske varmekapaciteter; for eksempel 4180 J/(L*K) for den første (vand) og 1925 J/(L*K) for den anden (sprit). Vi skal igen bruge formlen:

Cslut*Vslut*Tslut = C1*V1*T1 + C2*V2*T2

Varmekapaciteten af blandingen vil være gennemsnittet af de to oprindelige varmekapaciteter vægtet efter volumen (eftersom det er volumetriske varmekapaciteter):

Cslut = (C1*V1 + C2*V2)/Vslut

Indsætter vi i de foregående ligninger får vi:

(C1*V1 + C2*V2)*Tslut = C1*V1*T1 + C2*V2*T2
eller
Tslut = (C1*V1*T1 + C2*V2*T2)/(C1*V1 + C2*V2)

Vi kan enten bruge denne formel direkte:

(4180*40*15 + 1925*30*70)/(4180*40+1925*30)
((4,180*40)*15+(1,925*30)*70)/(4,180*40+1,925*30)
=29.1198

Eller skrive en funktion, hvis vi skal gentage beregningen:

slutTemp2:=(c1,v1,t1,c2,v2,t2)->(c1*v1*t1 + c2*v2*t2)/(c1*v1+c2*v2)

Den kan vi så bruge således:

slutTemp2(4180,40,15,1925,30,70)
slutTemp2(4,180, 40, 15, 1,925, 30, 70)
=29.1198

Skærmbillede af KAlgebra efter at have lavet disse beregninger: