Programmer som løser lineære likningssett
1.5.50
På siden "Likningssett" (se relatert side nederst på denne siden) løser vi likningssettet
manuelt ved å bruke den såkalte innsettingsmetoden. Vi kan også løse likningssett med to ukjente enkelt med CAS og GeoGebra dersom vi vil. Nå skal vi prøve å lage et dataprogram som (kanskje) gjør jobben like godt.
a) Diskusjonsoppgave
Hva trenger vi av informasjon fra likningssettet for å kunne løse det?
Kommentar
Det er de seks tallene – koeffisientene – i likningssettet som gir løsningen: 3, 2, 380, 4, 3 og 540. Når vi løser likningssettet med innsettingsmetoden, er det bare disse seks tallene vi bruker for å regne oss fram til løsningen.
Programmet vårt må kunne ta imot de seks tallene fra brukeren av programmet og deretter regne ut løsningen ut ifra tallene, men hvordan gjør vi det? Med innsettingsmetoden følger vi et fastsatt mønster når vi løser likningssettet. Det mønsteret kan vi finne ved å prøve å løse manuelt et generelt likningssett der koeffisientene er bokstavene a til og med f.
b) Oppstilling av generelt likningssett
Prøv å skrive opp det generelle likningssettet ved hjelp av bokstavene a til og med f.
Mulig likningssett
c) Trinn 1 i løsningen av det generelle likningssettet
Så gjør vi som vi ville gjort med innsettingsmetoden: Vi starter med å løse den ene likningen med hensyn på enten x eller y. Til vanlig ville vi sett etter den måten som gir oss enklest regning, men her spiller det ikke noen rolle.
Klarer du å løse likningssettet når alle tallene er bokstaver? Prøv gjerne på det. Vi tar det steg for steg nedenfor.
Løs den første likningen med hensyn på x.
Løsning
d) Trinn 2 i løsningen av det generelle likningssettet
Neste skritt i innsettingsmetoden er å sette uttrykket for x inn i den andre likningen. Prøv om du greier å gjøre dette selv før du ser på løsningen nedenfor.
Resten av løsningen
Da har vi kommet fram til formelen for løsningen for y.
e) Spørsmål
Til vanlig ville vi nå sette inn løsningen for y inn i det uttrykket vi fant for x lenger opp på siden, men trenger vi egentlig en tilsvarende løsningsformel for x i programmet vårt?
Svar
Vi trenger ikke det, for vi kan la programmet regne ut løsningen for y først og deretter bruke svaret til å regne ut løsningen for x.
f) Algoritme
Da har vi følgende formler som vi kan bruke i programmet vårt:
Skriv algoritmen til et program som kan løse likningssettet. Programmet må gjøre følgende:
- informere brukeren av programmet om hva programmet gjør
- vise hvordan likningssettet programmet løser, ser ut
- la brukeren skrive inn de seks tallene (koeffisientene)
- regne ut og presentere løsningen
Løsningsforslag
- Skriv til skjermen "Dette programmet løser likningssettet ax + by = c , dx + ey = f.".
- Skriv til skjermen "Skriv inn verdien til konstanten a:".
- Ta imot tallet fra brukeren, konverter det til et ekte tall, og lagre det i variabelen
a
. - Skriv til skjermen "Skriv inn verdien til konstanten b:".
- Ta imot tallet fra brukeren, konverter det til et ekte tall, og lagre det i variabelen
b
. - Følg mønsteret i de to punktene over for å ta imot verdien av c, d, e og f.
- Regn ut
(af - cd)/(ae - bd)
og sett resultatet lik variabeleny
. - Regn ut
c/a - by/a
og sett resultatet lik variabelenx
. - Skriv til skjermen "Løsningen er x =
<x>
, y =<y>
.".
Med "<x>
" og "<y>
" mener vi verdien av variablene x
og y
.
g) Koding
Skriv programmet og test det på likningssettet øverst på siden. Bruk din egen programmeringseditor eller den innebygde programmeringseditoren nedenfor. (NB: Det kan ta litt tid fra du trykker på avspillingsknappen til programmet kjøres.)
h) Testing av programet
Noen likningssett har ikke løsning. Hvordan oppfører programmet seg om brukeren skriver inn et slikt likningssett?
i) Algoritme
Endre på algoritmen slik at det tar hensyn til likningssett som ikke har løsning. Endre deretter programmet i tråd med den nye algoritmen.
j) Algoritme og koding
Er det andre spesielle likningssett vi må ta hensyn til? I så fall, tilpass først algoritmen, deretter programmet, slik at det passer for alle lineære likningssett.