Matematica

Her kan du stille spørsmål vedrørende problemer og oppgaver i matematikk på høyskolenivå. Alle som har kunnskapen er velkommen med et svar. Men, ikke forvent at admin i matematikk.net er spesielt aktive her.

Moderators: Vektormannen, espen180, Aleks855, Solar Plexsus, Gustav, Nebuchadnezzar, Janhaa

Post Reply
riquelme8
Pytagoras
Pytagoras
Posts: 16
Joined: 10/09-2008 13:41

Hei! Har noen problemer med å forstå meg helt på Do funksjoner i mathematica å lurer på om noen her kunne hjulpet meg. Oppgaven lyder som følger:

Skriv en funksjon intsum[...] i Mathematica som summerer alle elementer i en liste av reelle tall som ligger i et angitt åpent intervall. Syntaksen skal være intsum [liste,a,b] med liste en liste av reelle tall og a og b reelle tall med a<b. Resultatet skal bli summen av de elementene x i liste som oppfyller a<x<b. Hivs ingen elementer oppfyller betingelsen, skal resultatet bli null. Bruk intsum[{-3,5,-1,2,1,4},-2,3]=0 til å teste funksjonen du skrev.

Jeg tror jeg er inne på noe, men ser at det ikke er noe som helt stemmer med tanke på at mathematica ikke gir meg det ønskelige resultatet ut. Her er hva jeg har kommet fram til:

sum[liste_] :=
(sum = 0;
Do[sum = If[liste[[x]], {-a < x < b}, sum + liste[[x]], sum], {x,
1, Length[liste]}]; sum)

Har en magefølelse på at det er hvor jeg har skrevet "{-a < x < b}" feilen ligger, men ser ikke helt hva jeg ellers skal skrive.
Tusen takk for all hjelp!
riquelme8
Pytagoras
Pytagoras
Posts: 16
Joined: 10/09-2008 13:41

Hei!

Sliter fortsatt med denne oppgaven og hadde virkelig satt pris på om noen kunne hjelp meg. Er godt mulig at man ikke skal bruke Do funksjonen i det hele tatt, så om noen har en annen måte å løse oppgaven på så hadde jeg virkelig satt pris på hjelp!
riquelme8
Pytagoras
Pytagoras
Posts: 16
Joined: 10/09-2008 13:41

Da var jeg tilbake igjen på denne oppgaven. Har nå funnet ut at jeg ønsker å bruke Total funksjonen i mathematicha. Jeg må finne en måte og få pcen til å forstå at jeg ønsker å ta Total av de elementer i en liste som ligger imellom a<x<b, men det er dette som byr på problemer. Takk for hjelp.
Gustav
Tyrann
Tyrann
Posts: 4563
Joined: 12/12-2008 12:44

riquelme8 wrote:Hei! Har noen problemer med å forstå meg helt på Do funksjoner i mathematica å lurer på om noen her kunne hjulpet meg. Oppgaven lyder som følger:

Skriv en funksjon intsum[...] i Mathematica som summerer alle elementer i en liste av reelle tall som ligger i et angitt åpent intervall. Syntaksen skal være intsum [liste,a,b] med liste en liste av reelle tall og a og b reelle tall med a<b. Resultatet skal bli summen av de elementene x i liste som oppfyller a<x<b. Hivs ingen elementer oppfyller betingelsen, skal resultatet bli null. Bruk intsum[{-3,5,-1,2,1,4},-2,3]=0 til å teste funksjonen du skrev.

Jeg tror jeg er inne på noe, men ser at det ikke er noe som helt stemmer med tanke på at mathematica ikke gir meg det ønskelige resultatet ut. Her er hva jeg har kommet fram til:

sum[liste_] :=
(sum = 0;
Do[sum = If[liste[[x]], {-a < x < b}, sum + liste[[x]], sum], {x,
1, Length[liste]}]; sum)

Har en magefølelse på at det er hvor jeg har skrevet "{-a < x < b}" feilen ligger, men ser ikke helt hva jeg ellers skal skrive.
Tusen takk for all hjelp!
Skulle tru at Do funker, men bør det ikke være "{a < x < b}" istedenfor "{-a < x < b}" ?
riquelme8
Pytagoras
Pytagoras
Posts: 16
Joined: 10/09-2008 13:41

Jo det er fikset, men får dette ut når jeg prøver og skrive det:
"SetDelayed::write: Tag Integer in 0[liste_] is Protected. >>
Out[20] = $Failed"

Takker for andre tips!
riquelme8
Pytagoras
Pytagoras
Posts: 16
Joined: 10/09-2008 13:41

Klarte oppgaven nå, var tidenes mest åpenbare feil.. Slik skulle det skrives:
plussum[liste_] := (sum = 0;
Do[sum = If[-2 < liste[[k]] < 3 , sum + liste[[k]], sum], {k, 1,
Length[liste]}]; sum), var betingelsen til If som var helt gal. For øvrig skulle svaret bli 2 og ikke 0 :p
Gustav
Tyrann
Tyrann
Posts: 4563
Joined: 12/12-2008 12:44

riquelme8 wrote:Klarte oppgaven nå, var tidenes mest åpenbare feil.. Slik skulle det skrives:
plussum[liste_] := (sum = 0;
Do[sum = If[-2 < liste[[k]] < 3 , sum + liste[[k]], sum], {k, 1,
Length[liste]}]; sum), var betingelsen til If som var helt gal. For øvrig skulle svaret bli 2 og ikke 0 :p
Flotte greier!

Er ikke familiær med Matematica selv, men det er jo typisk at en bagatell skaper forvirring innen programmering.
Post Reply