Springen naar inhoud

Mathematica: lijstjes maken


  • Log in om te kunnen reageren

#46

Phys

    Phys


  • >5k berichten
  • 7556 berichten
  • VIP

Geplaatst op 07 mei 2009 - 11:27

Is dit acceptabel?

L1 = {1, 2, 3, 4, 5, 6, 7};
L2 = {{4, 2}, {5, 3}, {6, 4}, {7, 5}, {8, 6}, {9, 7}, {10, 8}, {11, 9}};
naam = Transpose[{ConstantArray["a=", Length[L2]], ConstantArray["b=", Length[L2]]}];
TableForm[Table[{L1[[i]], naam[[i]], L2[[i]]}, {i, 1, 7}],TableHeadings -> {None, {"Tabel", "", "Bla"}}]
Never express yourself more clearly than you think.
- Niels Bohr -

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#47

Lapzwans

    Lapzwans


  • >100 berichten
  • 145 berichten
  • Ervaren gebruiker

Geplaatst op 07 mei 2009 - 12:05

Dank je, dat voldoet wel.

#48

Lapzwans

    Lapzwans


  • >100 berichten
  • 145 berichten
  • Ervaren gebruiker

Geplaatst op 07 mei 2009 - 21:15

Dit is mijn laatste vraag denk ik. Zelfde lijstje met temperaturen weer (dus alle temperaturen van januari van 2000-2004 in het eerste element, etc.)


T = {{-1, -2, -2, -1, 1}, {-6, 2, -7, -8, -3}, {2, 2, 3, 4, 3}, {8, 7, 9, 11, 12}, {15, 12, 13, 14, 15}, {18, 17, 20, 22, 21}, {21, 22,  20, 21, 21}, {20, 26, 28, 28, 21}, {16, 15, 15, 16, 17}, {11, 12, 12, 11, 12}, {7, 5, 3, 4, -3}, {-1, 3, -2, -3, -1}};

Nu moet ik de gemiddelde temperatuur per periode van 12 maanden berekenen. Dus periode 1 is het gemiddelde van maand 1 tot 12, periode 2 is het gemiddelde van periode 2-13 etc., tot en met het gemiddelde van maand 48-60. Daarna moet ik berekenen welke perioden gemiddeld het koudst en warmst waren.

Allereerst moet ik denk ik de lijst transponeren, zodat de meetwaarden weer op chronologische volgorde staan. Dan zal er wel een Table commando aan te pas moeten komen gok ik, maar ik kan zo niet bedenken hoe. Weet jij iets?

#49

Phys

    Phys


  • >5k berichten
  • 7556 berichten
  • VIP

Geplaatst op 07 mei 2009 - 22:00

Met jouw T:
a = Transpose[{Range[1, 5 12], Flatten[T // Transpose]}]
De output is een lijst met elementen van de vorm {x,y}, waarbij x het maandnummer (1-60) en y de bijbehorende temperatuur.

Dit geeft je vervolgens een lijst met de 48 gemiddelden:
b=Table[Mean[Table[Table[a[[i]], {i, k, k + 11}][[j]][[2]], {j, 1, 12}]], {k, 1, 48}] // N
waarbij getal i dus het gemiddelde van periode i (= maand i tot maand i+11) is.

Uiteraard krijg je dan de drie laagste gemiddelden met
max=Take[Sort[b], 3]
op posities
Ordering[b, 3]

en voor de hoogste drie gemiddelden verander je 3 in -3.
Never express yourself more clearly than you think.
- Niels Bohr -

#50

Lapzwans

    Lapzwans


  • >100 berichten
  • 145 berichten
  • Ervaren gebruiker

Geplaatst op 07 mei 2009 - 23:02

Dank je wel. Nu heb ik nog één laatste vraag en dan ben ik echt klaar. Ik wil eigenlijk hetzelfde doen als bij de vorige vraag, maar nu wil ik alleen de gemiddelde temperaturen van alle kalenderjaren berekenen. Dus de gemiddelde temperatuur van periode 1-12, 13-24, 25-36, 37-48, 49-60.

Edit: Dat kan ik ook doen door telkens de (1 + i*12)-de periode te pakken van het lijstje dat ik nu al heb natuurlijk, even proberen.

Edit2: Yep, dat werkt wel:

Table[Take[b, {1 + i*12}], {i, 0, 4}]

Veranderd door Lapzwans, 07 mei 2009 - 23:13


#51

Phys

    Phys


  • >5k berichten
  • 7556 berichten
  • VIP

Geplaatst op 07 mei 2009 - 23:27

Makkelijkste is natuurlijk
Table[Mean[Transpose[T][[i]]], {i, 1, 5}]

Jouw code werkt volgens mij niet, want je lijst bestaat uit slechts 48 elementen, terwijl er voor i=4 in jouw code staat Take[b, {49}].
Never express yourself more clearly than you think.
- Niels Bohr -

#52

Lapzwans

    Lapzwans


  • >100 berichten
  • 145 berichten
  • Ervaren gebruiker

Geplaatst op 07 mei 2009 - 23:53

Nee, inderdaad, maar k in de code voor b = .... kan van 1 tot 49 lopen i.p.v. 1 tot 48 zoals in de code boven. Dan werkt mijn code wel. In ieder geval, bedankt voor al je hulp, ik krijg na het weekend gelijk mijn cijfer, dus ik zal het wel even laten weten ;)

Veranderd door Lapzwans, 07 mei 2009 - 23:54


#53

Lapzwans

    Lapzwans


  • >100 berichten
  • 145 berichten
  • Ervaren gebruiker

Geplaatst op 23 mei 2009 - 16:19

Oh ja, we hadden een 9 Phys ;)

#54

Phys

    Phys


  • >5k berichten
  • 7556 berichten
  • VIP

Geplaatst op 23 mei 2009 - 16:37

Kijk, dat is goed om te horen! Gefeliciteerd ;)
Never express yourself more clearly than you think.
- Niels Bohr -





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures