Hopp til innhold
Oppgave

Programmer som løser lineære likningssett

Med programmering kan vi forstå mer om det å løse et likningssett eller to likninger med to ukjente.

1.5.50

På siden "Likningssett" (se relatert side nederst på denne siden) løser vi likningssettet

3x+2y = 3804x+3y=540

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

ax+by = cdx+ey=f

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

ax+by = cax=c-byaxa=c-byax=ca-bay

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

dx+ey = fdca-bay+ey=fdca-bday+ey=fe-bday=f-cdaae-bdy=af-cd      (Hva har vi gjort her?)y=af-cdae-bd

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:

y=af-cdae-bd  ,     x=ca-bay

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 variabelen y.
  • Regn ut c/a - by/a og sett resultatet lik variabelen x.
  • 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.

Relatert innhold

Fagstoff
Likningssett

Vi ser på hvordan vi kan løse likningsett med to eller tre ukjente størrelser.