Tieteellinen laskenta I (Scientific Computing I)

Samankaltaiset tiedostot
Tieteellinen laskenta I (Scientific Computing I)

linux linux: rm, cp, mv ls Return listaa työhakemiston sisällön

linux linux: rm, cp, mv ls Return listaa työhakemiston sisällön

linux: komennoista linux linux

linux: komennoista linux linux

L2: linux linux: Komentotulkki

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009

linux: Ympäristömuuttujat

linux: Ympäristömuuttujat

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

linux: Prosessit kill PID lopettaa prosessin PID, jos siihen on oikeudet Ctrl + c lopettaa aktiivisen prosessin L7: linux

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 9: L A T E X

linux: Prosessit kill PID lopettaa prosessin PID, jos siihen on oikeudet Ctrl + c lopettaa aktiivisen prosessin L7: linux

Metropolia Ammattikorkeakoulu

Est.kand Kandidaatintyö ja seminaari: L A T E Xin käyttöönotto

Luento 3. Timo Savola. 7. huhtikuuta 2006

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 2: Linux

Kieliteknologian ATK-ympäristö Toinen luento

SCI- A0000: Tutustuminen Linuxiin, syksy 2015

Luento 5. Timo Savola. 28. huhtikuuta 2006

Johdatus Ohjelmointiin

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Ohjelmoinnin peruskurssi Y1

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Julkaiseminen verkossa

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

1. HARJOITUS harjoitus3_korjaus.doc

Ohjelmoinnin perusteet Y Python

Harjoitus 1 -- Ratkaisut

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

Ohjelmoinnin perusteet Y Python

linux: koneelta toiselle

Valitse ruudun yläosassa oleva painike Download Scilab.

Luento 4. Timo Savola. 21. huhtikuuta 2006

Opiskelijan pikaopas STACK-tehtäviin. Lassi Korhonen, Oulun yliopisto

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

Komentotulkki. Kysymyksiä

4. Lausekielinen ohjelmointi 4.1

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

5. HelloWorld-ohjelma 5.1

ATK tähtitieteessä. Osa 2 - IDL perusominaisuudet. 12. syyskuuta 2014

Perusohje vi-editorin käyttöön

Ohjelmoinnin perusteet Y Python

Jypelin käyttöohjeet» Ruutukentän luominen

Unix. Markus Norrena

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

YHTEYDEN OTTAMINEN CSC:N KONEELLE HIPPU

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Versionhallinta MIKSI?

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.)

Hakemistojen sisällöt säilötään linkitetyille listalle.

Tähtitieteen käytännön menetelmiä: I

KAAVAT. Sisällysluettelo

UpdateIT 2010: Uutisten päivitys

Harjoitus 10: Mathematica

Java-kielen perusteet

PIKAOHJE Web of Science tietokantojen käyttöön

Korpusten käsittely clt131, P Luento 4

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

ASCII-taidetta. Intro: Python

UpdateIT 2010: Editorin käyttöohje

Käyttöjärjestelmämme on Windows XP, kaikki tietokoneemme ovat kytketty lähiverkkoon ja Internettiin.

L9: Rayleigh testi. Laskuharjoitus

Johdatus ohjelmointiin

Ohjelmoinnin perusteet Y Python

Harjoitus 1 -- Ratkaisut

Octave-opas. Mikä on Octave ja miksi? Asennus

Tärkeimmät toiminnot. Kertausta ja uusia toimintoja Wordistä sekä tiedostonhallinnasta. Tärkeimmät toiminnot jatkuu...

Web of ScienceTM Core Collection (1987-present)

Ohjelmoinnin peruskurssi Y1

Ylläpitoalue - Etusivu

Luento 2. Timo Savola. 31. maaliskuuta 2006

Kappale 18: Teksti-editori

Sangen lyhyt L A T E X-johdatus

Unix-perusteet. Unix/Linux-käyttöjärjestelmä ja sen ominaisuudet

Java-kielen perusteet

Listarakenne (ArrayList-luokka)

Muuttujien roolit Kiintoarvo cin >> r;

Harjoitustyö: virtuaalikone

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Matriiseista. Emmi Koljonen

Ohjeet asiakirjan lisäämiseen arkistoon

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

TEEMA 2 TAULUKKODATAN KÄSITTELY JA TIEDON VISUALISOINTI

Johdatus L A TEXiin. Dept. of Mathematical Sciences. Tunti 1: Alkeet. Markus Harju, markus.harju at oulu.fi, M207

2 Konekieli, aliohjelmat, keskeytykset


Uuden Peda.netin käyttöönotto

SSH Secure Shell & SSH File Transfer

Ohjelmoinnin perusteet Y Python

Transkriptio:

Tieteellinen laskenta I (Scientific Computing I) koodi: 53398, laajuus: 5 op

Johdanto Johdanto (kuva:@work.chron.com) Klikkaa tätä www merkkiä Pääset siinä mainitun aiheen www-sivulle Kurssin kotisivu www Kurssin aikataulu www Luennot, Physicum D101 Ma 14.15 15.00 Laskuharjoitukset, Physicum D208 Ryhmä 1: Ti 14.15 15.00 Ryhmä 2: Ti 15.15 16.00 Ryhmä 3: Ti 16.15-17.00 Luennoija Lauri Jetsu (lauri.jetsu@helsinki.fi) Assistentit Olli Wilkman (olli.wilkman@helsinki.fi), Otto Solin (otto.solin@helsinki.fi), Pekko Metsä (pekko.metsa@helsinki.fi), Joonas Kylliäinen (joonas.kylliainen@helsinki.fi), Ville Jantunen (ville.jantunen@helsinki.fi), Eero Esko (eero.esko@helsinki.fi),

Tavoite Tavoite (kuva:@ccil.org) Kurssi mahdollistaa uran alun Opitte perusteet seuraavista linux käyttöjärjestelmä emacs tekstieditori LAT E X ladontaohjelma python ohjelmointikieli octave ohjelmointikieli ISI, arxiv, ADS,... tietokannat Näitä sovelletaan 12 harjoituksessa Osaamisen arvioiminen kynällä ja paperilla (s.o. kokeella) hankalaa Kotisivulla paljon linkkejä sopivaan itseopiskelu materiaaliin Fysiikan tieteelliset metodit opetetaan muilla kursseilla Metodi esimerkit: Pienimmän neliösumman sovitus, Rayleigh testi ja Tehospektri Google image haku: linux emacs latex python octave comics

Lähtökohta ja suorittaminen Lähtökohta (kuva:@skoolbo.com) Törmäätte tähän ensi kertaa Aloitetaan aivan alusta Keskitytään tekemiseen Määrä ei korvaa laatua Parempi oppia vähän, mutta perusteellisesti Vaara: Saman kurssin vaatimukset kasvavat sitä mukaan, kun luennoitsija itse ymmärtää asioita Vaara: Pienryhmät (2010 2014) Massaopetus (2015 ) lasten taudit Suorittaminen: 5 op Luennolla läsnäolo vapaaehtoista Asioita kokeillaan luennoilla Joka luennon alussa samat rutiinit Jokainen oppii perusteiden perusteet Spiraali 6 tason A, B, C, D, E ja F kautta Tarjolla 6 vapaaehtoista harjoitusta Suoritettava 6 pakollista harjoitusta

TE = Laskuharjoitustehtävät, VA = VApaaehtoinen, PA =PAkollinen Tehtävät palautettava viimeistään 4 vrk ennen laskuharjoitusta Palautuksen takaraja tänä vuonna: Perjantaina viimeistään kello 16.00! Pakollisten tehtävien vastausaika on 12 päivää! Ei poikkeuksia takarajasta, koska assistentin tarkistettava noin 100 tehtävää 4 vrk:ssa Palautus: Omalle assistentille sähköpostin liitetiedostona Luento Luennon aihe Laskuharjoitus 1. Kappale: Johanto A:TE jaetaan 2. Kappale: A1 VA Ratkotaan A:TE tapaisia tehtäviä 3. Kappale: A2 PA A:TE tarkistetaan, B:TE jaetaan 4. Kappale: B1 VA Ratkotaan B:TE tapaisia tehtäviä 5. Kappale: B2 PA B:TE tarkistetaan, C:TE jaetaan 6. Kappale: C1 VA Ratkotaan C:TE tapaisia tehtäviä 7. Kappale: C2 PA C:TE tarkistetaan, D:TE jaetaan 8. Kappale: D1 VA Ratkotaan D:TE tapaisia tehtäviä 9. Kappale: D2 PA D:TE tarkistetaan, E:TE jaetaan 10. Kappale: E1 VA Ratkotaan E:TE tapaisia tehtäviä 11. Kappale: E2 PA E:TE tarkistetaan, F:TE jaetaan 12. Kappale: F1 VA Ratkotaan F:TE tapaisia tehtäviä 13. Kappale: F2 PA F:TE tarkistetaan, Pakollinen palaute 14. Kappale: Yhteenveto

Suoritusten arvostelu Arvostelu (kuva:@www.datamation.com) Vapaaehtoinen TE sisältää kolme tehtävää Ei vaikuta arvosanaan, vaikka arvostellaan ja esitetään malliratkaisut kuten pakollisissa Vapaaehtoinen laskuharjoitus = Laskupaja Palautetta & apua pakollisen suorittamiseen Pakollinen TE sisältää kolme tehtävää. Arvostelu: Tehtävistä saa 0, 1 tai 2 pistettä 0 = Ei mitään tolkkua 1 = Jotain tolkkua 2 = Oikein tai lähes oikein Maksimipisteet: 6 TE x 6 pistettä/te = 36 pistettä Arvosana Sovelletut rajat 18.0 21.6 50 60% 1/5 18-21 21.6 25.2 60 70% 2/5 22-25 25.2 28.8 70 80% 3/5 26-28 28.8 32.4 80 90% 4/5 29-32 32.4 36.0 90 100% 5/5 33-36

Suoritusten arvostelu Pakolliset laskuharjoitukset (kuva:@www.cartoonstock.com) Ei koetta Pakolliset laskuharjoitukset 6 X 45 min = 4.5 tuntia koko kurssin aikana Kaikkien läsnäoltava! Tehtävät palautettu perjantaina 16.00 Arvostellaan ennen tiistain harjoitusta Ensimmäinen tehtävä: Arvotaan noin joka kolmas Assistentit kiertävät luokassa (10min) Kertomus: Mitä olen tässä tehnyt? Kertomus korvaa kokeen Kertomus ei muuta arvostelua Kannattaa kysyä/kertoa: Nyt en ymmärrä... Esitetään malliratkaisu (5min) Seuraava tehtävä: Arvotaan... Odotusarvo: Jokaiselle yksi kertomus/harjoitus

Periaatteista ja asenteesta Periaatteista ja asenteesta (kuva:@adamcrymble.blogspot.com Rohkaistaan opiskelijoiden väliseen yhteistyöhön, mutta ei yksi yhteen kopiointiin Assitentin velvollisuutena on kysyä mistä tahansa tehtävän yksityiskohdasta Kysymällä assistentilta oppii. Käytetään tauluja ja muuta rekvisiittaa Kurssi muistuttaa ajokortin suorittamista. Perusteiden hallinta helpottaa opintoja Asenne: En tiedä miten? Otan itse selvää! Asenne: En muista miten? Kerran ratkaistu OK! Asenne: Kukaan ei voi olla elävä manuaali Kokemus: idl (25 vuotta), LAT E X (25 vuotta) emacs (15 vuotta), python (muutama vuosi), octave (muutama kuukausi) Kokemus: En ollut koskaan tarvinnut (EnOlKoTa) edes 50% luennoilla esitetyistä asioista ennen kuin aloin luennoida niistä vuonna 2010 Johtopäätös: Mitä olen ainakin tarvinnut? Suositus: Käytännön harjoittelu mistä tahansa löytyvistä esimerkeistä Perusteet opittuaan voi valita oman tiensä

Opiskelijan ja/tai tutkijan urasta Opiskelijan ja/tai tutkijan ura LuK-tutkinto........................................................... 3 vuotta FM-tutkinto...................................................... 2 vuotta lisää FT-tutkinto.................................................... 3 5 vuotta lisää Tutkijatohtori, Nuorempi tutkija, tms........................... 3-5 vuotta lisää Yliopistonlehtori, Vanhempi tutkija, tms.................. seuraavat n 35 vuotta Professori, Tutkimusjohtaja, tms......................... seuraavat n 30 vuotta Mitä opiskelijoiden ja/tai tutkijoiden pitää muun muassa osata? Oppilas ja opettaja.......... (asiantuntijataidot, pedagogiset taidot, esiintyminen) Tutkijakoulutettava ja tutkija........... (tieteellinen kirjoittaminen, tiedonhankinta) Opinnäytteet ja julkaisut............... (tieteellinen kirjoittaminen, tiedonhankinta) Ohjattava ja ohjaaja............... (tieteellinen kirjoittaminen, pedagogiset taidot) Rahoituksen hankinta.................. (tieteellinen kirjoittaminen, viestintätaidot) Johtaminen..........(ihmisiä, yksiköitä, projekteja, prosesseja, sosiaaliset taidot) Viestintä................. (esiintyminen, tieteellinen kirjoittaminen, popularisiointi)

Miksi suurin osa työajasta tietokoneen ääressä? Mihin opiskelija/tutkija tietokoneita tarvitsee? (kuva:@magic-consulting.co.uk) Nykyisin kuulee enää harvoin: Tehdäänkö heti vai tietokoneella? www Harva ongelma selviää päässä laskulla tai paperilla laskettuna Havainnot & mittaukset Suunnittelu, tekeminen, käsittely, simulointi,... Teoria Mallintaminen, simulointi, numeron murskaus,... Julkaisut, Oppimateriaali Laadinta, tiedonhankinta, tietokannat,... Perusteet tunnettava: Käyttöympäristö (linux), Editointi (emacs), Julkaisun laadinta (LAT E X), Ohjelmointi (python, octave) ja Tietokannat (ISI, ADS,...) Google haku: wasting time with a computer?

Johdanto: linux linux Mikä on linux? www (kuva:@mepis.org) Käyttöjärjestelmä: Kehittynyt unix-käyttöjärjestelmästä ( Linus Torvalds, 1991: linux ydin, engl. kernel) linux kotisivulla www löytyy kaikenlaista tarpeellista tietoa Lähdekoodi vapaa, kehitetään jatkuvasti Säästää rahaa, aikaa ja vaivaa Ilmaiset ohjelmointityökalut oletusasennuksessa Suosittu luonnontieteissä Supertietokoneet: linux tai unix Tärkeää osata ohjelmoida ja ajaa omia ohjelmiaan Monia tutkimuksessa tarvittavia ohjelmapaketteja ei saa Windows:lle linux: Haittaohjelmia on vähän linux: Käyttäjä ei pääse käsiksi järjestelmän tai saman koneen muiden käyttäjien tiedostoihin Opiskelijoille hankittujen tietokoneiden käyttöjärjestelmä on linux Tällä kurssilla opetellaan linux:n käyttöä!

Johdanto: emacs emacs Mikä on emacs? www (emacs kotisivu www ) Tekstieditori, jolla editoitte emacs:lla tällä kurssilla erityisesti: L A T E X tekstitiedostoja *.tex, python ohjelmatiedostoja *.py, octave ohjelmatiedostoja *.m, missä * on tiedoston nimi TAPA 1: Editoidaan emacs jotain.py Return Komentotulkki ei jäänyt käyttöön Kirjoitetaan tiedostoon jotain.py ensimmäinen rivi: print( jotain ) Tallennetaan tiedoston sisältö: ctrl + x, ctrl + c Vastataan y Ajetaan ohjelma komentotulkissa komennolla python jotain.py Return TAPA 2: Editoidaan emacs jotain.py & Return Komentotulkki jäi käyttöön Kirjoitetaan tiedostoon jotain.py toinen rivi: a=1 ; print(a) Tallennetaan tiedoston sisältö: ctrl + x, ctrl + s Editori jäi käyttöön Ajetaan ohjelma komentotulkissa komennolla python jotain.py Return Käyttämällä TAPA 2:ta voidaan jatkaa ohjelman jotain.py editointia toivottuun muotoon ja välillä testata ohjelman toimivuutta ajamalla sen viimeisintä tallennettua versiota Milloin kannattaa tiedostoa tallennettaessa ctrl + x, ctrl + c kannattaakin vastata n? Tallennetaan vahingossa väärä versio *.* Etsitään aiempi tallennettu versio *.* Eräs emacs pikaopas www, missä M = Alt ja C = Ctrl EnOlKoTa

Johdanto: latex L A T E X Mikä on L A T E X? www (LAT E X kotisivu www ) (kuva:@tex.stackexchange.com) Ladontaohjelma: Julkaisujen, kirjojen,... tms materiaalin laadintaan Kirjoittaja editoi sisällön eli substanssin emacs *.tex & Return Lopullinen ulkoasu linux komennoilla latex * Return dvips * -o Return *.ps muoto pdflatex * Return *pdf muoto latex2html versio www html muoto EnOlKoTa Merkittävimmät julkaisusarjat käyttävät L A T E X:a (Esimerkkejä: fysiikka www, tähtitiede www ) Tarkasti määritellyn formaatiin mukainen dokumentti: julkaisu, kirja, opinnäyte,... Kaikki mahdolliset tekstin formaatit. Kaavat, taulukot, kuvat ja viitteet suhteellisen helposti Loputtomasti valmiita paketteja komennolla \usepackage{paketin nimi} eri tehtäviin

Johdanto: ISI, ADS, arxiv, SIMBAD,... ISI, ADS, arxiv, SIMBAD Mitä ovat ISI www, ADS www, arxiv www,...? (kuva:@viethconsulting.com) Tietokantoja (Ilmaisia) JULKAISUT: koko sisältö, tekijät, lähteet, aiheet, viittaukset (engl. citation index ) www, data, kohteet, muuta (esim. metadata ) ISI (Web of Science): lähes kaikki tieteet ADS: tähtitiede, fysiikka,... arxiv: fysiikka, matematiikka,... Submitted! SIMBAD www : Tähtitieteen kohteista julkaistu Kurssilla: Ei käydä läpi fysiikan tietokantoja Tavoite 1: Opetellaan etsimään tarvittavaa informaatiota muutamasta ym. tietokannasta Tavoite 2: Opitaan Bibtex entry for this abstract tiedon käyttö L A T E X:ssa DATA: Laitteet, satelliitit, teleskoopit,... Omat tietokantansa (Esimerkiksi CDS www ) JULKAISEMINEN: Tieteelliset julkaisusarjat, kirjat,... Omat tietokantansa (Esimerkiksi Advances in Physics www, jolla oli korkein impact factor www fysiikassa vuonna 2013) Julkaisusarjojen kotisivuilla valmiit L A T E X makrot (Esimerkiksi American Geophysical Union: Latex Templates www ). Kotisivuilta voi hakea kaiken tarvittavan esim. wget komennolla

Johdanto: python python Mikä on python? www (python kotisivu www ) (kuva:@www.pinterest.com) Ohjelmointikieli Ilmainen: Saatavilla kaikille yleisimmille käyttöjärjestelmille (linux, Windows, Mac,...) Interaktiivinen komentotulkki python Return Kurssilla: Editoidaan emacs *.py & Return Kurssilla: Ajetaan python *.py Return Suosittu fysiikassa, tähtitieteessä,... Suhteellisen helppo oppia 80 tuntia päätä seinään Monipuolinen: paljon valmiita ohjelmistopaketteja Numpy www, Scipy www, Pylab, ipython www, Monissa ohjelmistoissa on python rajapinta (engl. interface). Esimerkiksi PyRAF tähtitieteessä www python voidaan yhdistää muihin ohjelmointikieliin Kovaa numeron murskausta vaativat laskennnan osat ohjelmoidaan toisella tehokkaammalla ohjelmointikielellä, kuten C, FORTRAN,...

Johdanto: octave octave Mikä on octave? www (octave kotisivu www ) (kuva:@www.tutorialspoint.com) Ohjelmointikieli Ilmainen: octave kehitetty toimimaan linux:ssa Saatavissa toimimaan myös Windows www ja Mac www käyttö järjestelmissä octave lähes yksi yhteen maksullinen MATLAB www Interaktiivinen komentotulkki octave Return Kurssilla editoidaan emacs *.m & Return Kurssilla ajetaan octave *.m Return Suosittu ainakin HY:n fysiikassa octave ehkä hiukan helpompi oppia kuin python Noin 60 tuntia lisää päätä seinään

Johdanto: Oma ja muut koneet Johdanto: Oma ja muut koneet Johdanto: Oma ja muut koneet (kuva:@www.pc-freak.net) Yhteys omaan koneeseen Kysyy avatessa salasana Yhteys Fysiikan laitoksen koneisiin ssh -X login.physics.helsinki.fi missä username on käyttäjätunnus Kysyy salasanaa Päädytte hakemistoon /home/username Tarkistakaa yhteyden toimiminen Yhteys tarvitaan, kun opetellaan tiedostojen siirtoa koneesta toiseen koneeseen Harjoitelkaa kurssilla käsiteltyjä asioita omalla ja muilla linux koneilla Varmuuskopiot oman koneen hakemistosta /home/username/ komennolla scp -r * koneennimi:/home/username/

A1: linux A1: linux A1: linux (kuva:@www.glasbergen.com) Tavoite: Kaikki oppivat linux:n perusteet Perusteet jo tutut Paikalla ainoastaan pakolliset harjoitukset (6 x 45 minuuttia) Yksi monista linux alkeisoppaista www linux: Komentotulkki Suorittaa käyttäjän terminaalilta kirjoittamia, komentoja, joita voi selata nuolinäppäimillä ja, sekä täydentää näppäimellä Jokainen komento tekee yhden asian hyvin: tulostus, tiedon siirtäminen, verkkoyhteys,.. Hyvin riippuu käyttäjästä, koska valinnanvaraa on loputtomiin Asioita ei tarvitse keksiä uudelleen. Vain pieni osa komennoista opeteltava ulkoa sujuvaa käyttöä ajatellen Käytännössä: Opeteltava yksi komento kerrallaan, s.o. mitä milloinkin sattuu tarvitsemaan Käytännössä: Monimutkaisemmat komennot kannattaa kirjoittaa muistiin tai ohjelmiin, koska vie aikansa ymmärtää ne ja saada ne toimimaan. Asenne: En muista...? Kerran ratkaistu OK!

A1: linux A1: linux Hakemistot (kuva:@www.oreilly.com) linux komennoissa isot ja pienet kirjaimet merkittäviä (case sensitive) Kokeile komentoja pwd Return ja PWD Return ja PwD Return Käyttäjän kotihakemisto on /home/username/ Kotihakemiston pääsee mistä tahansa muusta hakemistosta komennolla cd Return Kotihakemiston voidaan lyhentää merkillä eli sinne pääsee myös komennolla cd Return Kotihakemistoon luodut hakemistot ja tiedostot kuuluvat käyttäjälle Kotihakemisto on käyttäjän henkilökohtainen työtila koneella linux:n tiedostorakenne on kuin puun (engl. directory tree). Sen juuri (engl. root) on hakemisto /. Juureen pääsee komennolla cd /. Return Tavallinen käyttäjä ei siellä tosin tee mitään? Käyttäjän oikeudet hakemistopuussa kotihakemiston ulkopuolella oleviin hakemistoihin ja tiedostoihin on tarkkaan rajattu Erilliset kiintolevyt ja muut vastaavat ovat osa hakemistopuuta, eivätkä ulkoisesti eroa hakemistoista

A1: linux A1: linux Hakemistot (kuva:@www.linuxforfreshers.com) Tästä lähtien sanaa komento käytetään säästeliäästi, koska komennot pyritään kirjoittamaan violetilla. cd Return siirtää kotihakemistoon Fuksiläppärissä komentoltulkkiin ilmestyy username@fuksi: $ pwd Return tulostaa /username/home/ pwd Return kertoo työhakemiston eli hakemiston jossa työskentelet nyt. Sen lyhenne on./ ls Return listaa työhakemiston sisällön eli saman tuloksen antaa siis myös ls./ Return Kaikkia tiedostoja ei kannata luoda kotihakemistoon. Tiedostot kannattaa luoda / jaotella / sijoittaa / siirtää... eri hakemistoihin esimerkiksi aiheen mukaan: linux, latex, ohjelmat,... Komennolla mkdir luodaan hakemistoja. Esimerkiksi mkdir ohjelmat Return luo työhakemistoon uuden hakemiston./ohjelmat/ cd kohdehakemisto siirtää työhakemistosta hakemistoon./kohdehakemisto Esimerkiksi yllä annettujen komentojen jälkeen cd ohjelmat Return siirtää työhakemistosta äsken luotuun uuteen hakemistoon./ohjelmat/

A1: linux A1: linux Hakemistot (kuva:@www.rafaelespejo.com) Absoluuttinen polku ilmaisee tiedoston tai hakemiston sijainnin hakemistopuussa juuresta lähtien. Esimerkiksi seuraavasti /home/username/kurssit/ Tähän hakemistoon voi siirtyä mistä tahansa työhakemistosta komennolla cd /home/username/kurssit/ Return Suhteellinen polku ilmaisee tiedoston tai hakemiston sijainnin hakemistopuussa työhakemistosta lähtien. Esim: Jos työhakemisto on /home/username/, riittää komento cd kurssit/ Return siirtymiseen hakemistoon /home/username/kurssit/ Esim: Jos työtiedosto on /home/username/, riittää komento cd.. Return siirtymiseen hakemistoon /home/ Esim: Jos työtiedosto on /home/username/ riittää komento ls./kurssit/ Return listaamaan hakemiston /home/username/kurssit/ sisällön clear Return tyhjentää linux komentotulkin näytön

A1: emacs A1: emacs A1: emacs (kuvat:@research.csc.fi, @blogg.slu.se) TAPA 2: Tiedoston nimi editointi komennolla emacs nimi & Return linux komentotulkki jää käyttöön Näyttöön ilmestyy editorin ikkuna Tiedostoon voi kirjoittaa... Tallennus Ctrl + x Crtl + s Sovellutuksia voi ajaa latex nimi.tex Return python nimi.py Return octave nimi.m Return samalla, kun editoi tiedostoa nimi toivottuun muotoon Tärkeimmät näppäimet Ctrl Alt emacs Pikaopaassa www M = Alt ja C = Ctrl

A1: emacs A1: emacs A1: emacs emacs on L A T E X, python ja octave ystävällinen tekstieditori Kopioidaan wget komennolla tiedosto A2bkesken.tex kurssin kotisivulta komennolla wget http://www.helsinki.fi/ jetsu/tila/a2bkesken.tex Opetellaan samalla wget komennon ja Copy Link Location sujuva yhdistäminen Aloitetaan editointi emacs A2bkesken.tex & Return Tätä tiedostoa voi editoida kuten tahtoo. Alkuperäisen voi hakea aina uudestaan kotisivulta emacs: Näyttää kursorin rivinumeron. Kursori hyppii välillä. L A T E X komennot eri värisiä,... Editoidaan virhe mielivaltaisella rivillä emacs ilmoittaa virheestä (huom: ei aina) Tallennetaan virhe siitä huolimatta Ajetaan latex A2bkesken.tex Return L A T E X ilmoittaa millä A2bkesken.tex rivillä virhe on Voidaan löytää ja korjata virhe Pharjoitus4.py kotisivulta emacs Pharjoitus4.py & Return Kursori pomppii, värejä, tabulaattori tuntee ohjauskomennot,...... virhe... python Pharjoitus4.py Return... python ilmoittaa... Voidaan löytää ja korjata virhe Oharjoitus5.m kotisivulta emacs Oharjoitus4.m & Return Kursori pomppii,...... virhe... octave Oharjoitus4.m Return... octave ilmoittaa virheen rivin

A1: latex A1: L A T E X L A T E X dokumentin tuottaminen Kopioidaan A2bkesken.tex kotisivulta Käytetään linux komentotulkissa yhtä aikaa emacs ja evince ikkunaa ja ajatetaan L A T E X komentoja emacs A2bkesken.tex & Return latex A2bkesken Return dvips A2bkesken -o Return evince A2bkesken.ps & Return latex kääntää.tex tiedoston. dvips luo.ps tiedoston. evince www näyttää lopputuloksena syntyvän.ps tiedoston, jota voi lukea, tulostaa,... Yksi monista vaihtoehtoisista tavoista: emacs A2bkesken.tex & Return pdflatex A2bkesken Return evince A2bkesken.pdf & Return pdflatex kääntää.tex tiedoston, evince näyttää.pdf tiedoston, jota voi lukea,...

A1: latex L A T E X syötetiedoston rakenne L A T E X syötetiedostojen rakenne L A T E X syötetiedosto alkaa määrittelemällä toivotut optiot (loputtomasti vaihtoehtoja) \documentclass[optiot]{luokka} \usepackage[optiot]{paketti} \usepackage[optiot]{paketti}... \begin{document}...tekstiä... \end{document} Esimerkiksi kotisivun L A T E X syötetiedosto A2bkesken.tex alkaa riveillä % Latex ohittaa kaiken, mikä on merkin "%" oikealla puolella \documentclass[a4paper,10pt]{article} % Dokumentin muoto... \usepackage[english]{babel} % Paketti: skandeille ä,ö, \usepackage[utf8]{inputenc} % -"- : -"-... \begin{document} % Dokumentti alkaa... Tässä dokumentissa toimivat skandit: \\ Älyköt öisin ihmettelevät, miksi \LaTeX ~tökkii. Komentit alkavat L A T E X ohjausmerkillä%. Sen voi kirjoittaa tekstissä komennolla \% Muita erikoismerkkejä ovat\ # $ & _ ˆ { } Nämä erikoismerkit ohjaavat L A T E X ladontaohjelmaa. Koettakaa ottakaa itse selvää, kuinka ne voidaan kirjoittaa L A T E X dokumentin sisään, s.e. ne tulostuvat pelkkänä tekstinä kuten yllä

A1: tietokannat Tietokannat Tietokannat Ongelma: Joku Cubarsi on kirjoittanut jotain tähteen Sirius liittyvää vuonna 2014? Pitäisi löytää, lukea ja referoida sitä tulevassa artikkelissa Etsitään SIMBAD www : tietokannasta tietoa tähdestä Sirius Klikataan Display reference summary ja löydetään CUBARSI R. 2014A&A..561A.141C Klikataan send the bibcodes to ADS ja etsitään Cubarsi,... klikataan 2014A&A...561A.141C Etsitään ja klikataan Bibtex entry for this abstract ja löydetään @ARTICLE{2014A&A...561A.141C, author = {{Cubarsi}, R.}, title = "{Conditions of consistency for multicomponent axisymmetric stellar systems. Is an axisymmetri journal = {\aap}, keywords = {galaxies: kinematics and dynamics, solar neighborhood, galaxies: statistics}, year = 2014, month = jan, volume = 561, eid = {A141}, pages = {A141}, doi = {10.1051/0004-6361/201322436}, adsurl = {http://adsabs.harvard.edu/abs/2014a%26a...561a.141c}, adsnote = {Provided by the SAO/NASA Astrophysics Data System} } emacs lahteet.bib & Return Kopioidaan hiirellä kaikki tuo tiedostoon lahteet.bib Kaikki tarkoittaa tässä jokaista merkkiä väliltä c ARTICLE{ ja yksinäinen }... Tähän artikkeliin viittaamista jossain L A T E X dokumentissa harjoitellaan myöhemmin

A1: tietokannat Ohjelmointi - perusteet Ohjelmoinnissa tarvitaan Tekstieditori ohjelmien lähdekoodin laadintaan: Tällä kurssilla emacs Kääntäjä: Kääntämään lähdekoodin koneen ymmärtämään muotoon Tällä kurssilla kahden ohjelmointi kielen alkeet: python ja octave Eräs monista python oppaista www Eräs monista octave oppaista www Ohjelmien lähdekoodi koostuu Muuttujista: www Muuttuvia suureita, kuten lukuja, tekstinpätkiä,... (Esimerkiksi a=1) Funktioista, aliohjelmista: www Ottavat vastaan muuttujia. Tekevät niiden avulla jotain toivottua. Luovat ja palauttavat uusia muuttujia,... (Esimerkiksi: b=cos(a)) Ohjausrakenteista: www Ohjaavat ohjelman toimintaa. Käskevät esimerkiksi toistamaan tiettyä ohjelman kohtaa useita kertoja (Esimerkiksi: for...) tai valitsemaan useista mahdollisista suorituspoluista vain yhden (Esimerkiksi: if... elseif)

A1: octave python ja octave python python Return käynnistää python komentotulkin >>> Poistuminen: >>> Crtl + d Kolme tapaa ajaa ohjelmia 1: linux komentotulkissa python file.py Return 2: python komentotulkissa >>> import os Return >>> os.system( python file.py ) Return 3: file.py:n ensimmäisenä rivinä #!/usr/bin/env python linux komentotulkissa./file.py Return Jos ei toimi? chmod u+x file.m Return Tällä kurssilla: 1. vaihtoehto octave octave Return käynnistää octave komentotulkin octave:*> Poistuminen: octave:*> exit Kolme tapaa ajaa ohjelmia 1: linux komentotulkissa octave file.m Return 2: octave komentotulkissa octave:*>file Return 3: file.py:n ensimmäisenä rivinä #!/usr/bin/env octave linux komentotulkissa./file.m Return Jos ei toimi? chmod u+x file.m Return Tällä kurssilla: 1. vaihtoehto Rivi 1: #!/usr/bin/env... vain malliohjelmissa Pharjoitus1.py ja Oharjoitus1.m

A1: octave python ja octave python python komentotulkissa >>> help( import ) Return kertoo mitä komento import tekee python komentotulkissa >>> help() Return vie interaktiiviseen python manuaaliin Jotkin ongelmat voivat johtua versiosta, jonka saa selville komennolla python - -version Return Esimerkiksi python 3.4.0 litania >>> import os >>> os.system( python file.py ) korvasi python 2.7.6 komennon >>> execfile( file.py ) octave octave komentotulkissa octave:*>help disp Return kertoo mitä komento disp tekee octave komentotulkissa octave:*>doc Return pitäisi viedä interaktiiviseen octave manuaaliin Myös tämä ongelma voi johtua versiosta, jonka saa selville komennolla octave - -version Return Käytännösssä python & octave komentojen sopivia muotoja mihin tahansa tarkoitukseen kannattaa etsiä useista manuaaleista ja webistä

A1: octave python ja octave python python komentotulkissa >>> aa=2 Return >>> Aa=1 Return >>>print(aa-aa) Return python: Case sensitive >>>ä=9 Return Onnistuu python 3.4.0 :ssa Ei onnistunut python 2.7.6 :ssa Monet ongelmat vältetään, kun ei käytetä skandeja, edes # merkin jälkeen >>> print(aa-aa) Return Kaatuu! Eli python:ssa myös tyhjillä merkkeillä merkitystä octave octave komentotulkissa octave:*>aa=2; Return octave:*>aa=1; Return disp(aa-aa); Return octave: Case sensitive Kokeile mitä tapahtuu ilman ; merkkiä ä=9; Return Ei onnistu octave 3.8.1 :ssa Monet ongelmat vältetään, kun ei käytetä skandeja octave:*> disp(aa-aa); Return Ei kaadu! Eli octave:ssa tyhjillä merkkeillä ei merkitystä

A1: octave Ensimmäiset ohjelmat Ensimmäiset ohjelmat python: 1. ohjelma #! / usr / bin / env python # K o m e n t t i r i v i : Tama on ohjelmani P h a r j o i t u s 1. py p r i n t ( " Hello world! " ) python: Sama tulos print("hello") ja print( Hello ), s.o tai Kaikissa ohjelmatulostuksissa selventää, että kyseisessä kohdassa on yksi tyhjä merkki octave: 1. ohjelma #! / usr / bin / env octave # K o m e n t t i r i v i : Tama on octave ohjelmani Oharjoitus1.m clear # Poistetaan mahdollinen aiempi i n p u t.. disp ( Hello now world ) octave: Sama tulos disp("hello") ja disp( Hello ), s.o tai clear hävittää octave:ssa aiemmat muuttujat yms. Kertausta: clear Return tyhjentää näytön linux komentotulkissa»> import os ; os.system( clear ) tyhjentää näytön python komentotulkissa octave:*> clc tyhjentää näytön octave komentotulkissa python & octave: kommenttirivit alkavat merkillä #. Käytä niitä ohjelman selkeyttämiseen

A2: linux linux linux: rm, cp, mv (kuva:@funny-pictures.picphotos.net) ls Return listaa työhakemiston sisällön ls.dat Return tulostaa kaikki työhakemiston.dat loppuiset tiedostot merkki on jokeri cp nimi1 nimi2 Return kopioi työhakemiston tiedoston nimi1 työhakemiston tiedostoksi nimi2 mv nimi1 /home/username/hakemisto1/ Return siirtää työhakemiston tiedoston nimi1 hakemistoon /home/username/hakemisto1/ jos kyseinen hakemisto on jo olemassa Tämän jälkeen työhakemistossa ei ole tiedostoa nimi1 rm nimi Return tuhoaa työhakemistosta tiedoston nimi rmdir nimi Return tuhoaa työhakemistosta hakemiston nimi, jos hakemisto on tyhjä touch nimi Return luo työhakemistoon tyhjän tiedoston nimi touch /home/username/hakemisto1/nimi Return luo tyhjän tiedoston hakemistoon /home/username/hakemisto1/, jos kyseinen hakemisto on jo olemassa Laskuharjoitus A1a: Luodaan tiedostoja ja hakemistoja. Laskuharjoitus A2b: Tuhotaan niitä

A2: emacs emacs emacs: Peruskomentoja Pikaopas www Kertaus: Mikä Ctrl + x, Ctrl + c tai Ctrl + x, Crtl + s ero? Kts editorin yläpalkki: File wget komennolla A2bkesken.tex kotisivulta. Voidaan editoida miten tahansa, koska...? emacs A2bkesken.tex & (Tätä tiedostoa editoidaan laskuharjoituksessa A2b) Ctrl + s Kysyy I-search: Mitä etsit? Vastataan öt Return Toistamalla Ctrl + s löydät öt merkit kursorista eteen päin yksi kerrallaan Voit lopettaa etsinnän muuttamatta tiedostoa painamalla mitä tahansa näppäimista,, tai Ctrl + r etsii samalla tavalla tiedostosta merkkejä kursorista taakse päin Kuljeta kursori jonnekin keskelle tiedostoa A2bkesken.tex ja paina Crtl Spacebar Siirry tiedostoa ylös tai alas näppäimillä tai Osa tiedoston A2bkesken.tex riveistä tulee merkityksi Paina Ctrl + w Merkitty alue katosi Siirrä kursori toiseen paikaan tiedostoa ja paina Ctrl + y Kadonnut alue palasi tähän kohtaan tiedostoa Sama toiminto: Merkitään hiirellä Edit valikosta Copy Valitussa kohdassa Paste Sama toiminto: Merkitään hiirellä. Edit valikosta Cut Valitussa kohdassa Ctrl + y Sama toiminto: Merkitään hiirellä. Valitussa kohdassa klikataan hiiren keskeltä Johtopäätös: Jokainen päättää itse, mitkä kaikki emacs komennot opettelee (ulkoa?) Kertaus: emacs pieleen Tallennus vahingossa Poistu tallentamatta emacs

A2: latex L A T E X: perusteita L A T E X: perusteita (kuva:@play.google.com) L A T E X: ohittaa välilyönnit tai kommmentit merkin % jälkeen Yksi tai monta tyhjää riviä Uusi kappale Erikoismerkit \ # $ & _ ˆ { } varattuja. Ohjaavat ladontaa. Kaikki paitsi \ ja voi kirjoittaa komennolla \verb *, missä * on erikoismerkki Esimerkiksi \verb # tulostaa # Erikoismerkki $ rajaa matemaattisen merkinnän Esimerkiksi $a^{b + c}_{d+e}$ tulostaa a b+c d+e. Tekstin sisällä: esimerkiksi \% tulostaa % Jotkut komennot vaativat parametreja: Pakolliset { ja } väliin. Valinnaiset [ ja ] väliin Esimerkiksi \documentclass[a4paper,10pt]{article} parametri article (Pakollinen: dokumenttiluokka) ja parametri A4paper (Valinnainen: paperikoko) Dokumenttiluokkia: article, report, book, proc,... Lisäpaketteja: \usepackage[utf8]{inputenc},... Otsikkosivu: titlepage, notitlepage, Sivujenpuolisuus: twoside, oneside,... Kolumnit: twocolumn, onecolumn,... Voi määritellä omia komentoja. Esimerkiksi \newcommand{\omajuttu}{\ae\oe\ae} Komento \omajuttu tulostaa ÆŒæ

A2: latex L A T E X L A T E X Sivutyylejä: plain, headings ja empty Esim: \pagestyle{empty} jättää sivunumerot pois Rivien päättäminen: \\ tai \newline Sivujen päättäminen: \newpage tai \clearpage Tavutus: Englanti hyvin, Suomi: \usepackage[finnish]{babel} Sanassa toistuvia tavutus ongelmia Dokumentin alussa komento. Esim: \hyphenation{ta-vu-tus-on-gel-ma} Merkillä \- yksi ongelma dokumentin sisällä. Esim: yh\-dys\-sa\-na Tavutusesto: \mbox{sana...sanoja} Tavutus epäonnistuu Sana ylittää sivun marginaalin LAT E X varoittaa Overfull hbox Lisätään \- merkki L A T E X Kappalejako: \section{...}, \subsection{...}, \subsub... Sisällysluettelo: \tableofcontents{...} Tekstisyöte \title{elämää Ankkalinnassa} \author{leenu \and Liinu \and Tiinu} \date{09.12.2014} \maketitle tuottaa tässä luentojen LAT E X ympäristössä Elämää Ankkalinnassa Leenu Liinu Tiinu 09.12.2014

A2: latex L A T E X: verbatim L A T E X: verbatim Komento \verb $$%% tuottaa $$%%, koska LAT E X jättää käsittelemättä merkkien välissä olevan tekstin eli komentoja tai erikoismerkkejä ei huomioda Tekstisyöte \begin{verbatim} Mitä tahansa & _ ^ \ % Mitä tahansa & _ ^ \ % Mitä tahansa & _ ^ \ % \end{verbatim} tuottaa Mitä tahansa & _ ^ \ % Mitä tahansa & _ ^ \ % Mitä tahansa & _ ^ \ % Tätä ympäristöä voi käyttää esimerkiksi ohjelmien listaamiseen Käytetty näiden luentojen laatimiseen L A T E X: fontit, kirjasintyypit ja koot Fontti esimerkkejä \rmfamily What tuottaa What \sffamily What tuottaa What \ttfamily What tuottaa What Kirjaisin esimerkkejä \textbf Lihavointi Lihavointi \texttt Kirj...kone Kirj...kone \textit Kursiivi K ursiivi \underline Abc Abc Kirjaisin koko \tiny pientä tekstiä pientä tekstiä \Huge XYZ XYZ Muita näiden väliltä \scriptsize, \small, \normalsize,... \large, \Large...

A2: tietokannat Tietokannat: bibtex Tietokannat: bibtex L A T E X tunnistaa edellisellä luennolla tietokannasta haetusta tiedostosta emacs lahteet.bib lähteen 1. rivin merkeistä 2014A&A...561A.141C (engl. label) @ARTICLE{2014A&A...561A.141C, author = {{Cubarsi}, R.}, title = "{Conditions of consistency for multicomponent axisymmetric stellar systems. Is an axisymmetri journal = {\aap}, keywords = {galaxies: kinematics and dynamics, solar neighborhood, galaxies: statistics}, year = 2014, month = jan, volume = 561, eid = {A141}, pages = {A141}, doi = {10.1051/0004-6361/201322436}, adsurl = {http://adsabs.harvard.edu/abs/2014a%26a...561a.141c}, adsnote = {Provided by the SAO/NASA Astrophysics Data System} } Kopioidaan A1bkesken.tex kotisivulta ja editoidaan neljä uutta riviä \documentclass{article} \newcommand{\aap}{a\&a} % uusi rivi \begin{document} This is my first latex file. I cite \cite{2014a&a...561a.141c} % uusi rivi \bibliographystyle{plain} % uusi rivi \bibliography{lahteet} % uusi rivi \end{document} Komennnot: latex A1bkesken Return, bibtex A1bkesken Return, latex A1bkesken Return, latex A1bkesken Return, dvips A1bkesken -o Return

A2: tietokannat Tietokannat: bibtex Tietokannat: bibtex (kuva:@itunes.apple.com) Katsotaan lopputulosta komennolla evince A1bkesken.ps & Return Onnistuttiin siteeraamaan Cubarsia Luotiin lähdeluettelo Uusia lähteitä voi kerätä tietokannoista tiedostoon lahteet.bib ja siteerata label:n avulla Kaikki Bibtex entry:t täytyy kopioida ensimmäisestä viimeiseen merkkiin, eikä saa lisätä tai poistaa mitään Bibtex entry:ien väliltä Hyviä esimerkkejä \bibliography komennon käytöstä täältä www Loputtomasti vaihtoehtoja www Kokeile: korvaa [plain] tekstillä [alpha] ja toista edellisen sivun viisi komentoa Esimerkiksi ApJ (The Astrophysical Journal) formaatissa: \citet = Lähde ilman sulkuja = esim. Einstein (1906), \citep = Lähde suluissa = esim. (Einstein, 1906) Lauri Jetsu, Fysiikan label:n laitos, voi Helsingin muuttaa: yliopisto esimerkiksi 2014A&A...561A.141C muotoon Cub14 tiedostossa lahteet.bib ja referointi komennolla \cite{cub14}

A2: tietokannat Tietokannat: Bibtex Tietokannat: Bibtex LAT E X ei tunnistanut komentoa \aap tiedostossa lahteet.bib Komento määritettiin tiedoston A1bkesken.tex alussa rivillä \newcommand{\aap}{a\&a}, missä A\&A on lehdestä Astronomy & Astrophysics käytetty lyhennys \documentstyle{article} ja/tai \bibliographystyle{plain} ei tunnista \aap komentoa Useimpien lehtien makrot olisivat tunnistaneet \aap komennon ja kirjoittaneet lehden Astronomy & Astrophysics lyhenteen lähdeviitteisiin siinä muodossa, jota kyseinen julkaisusarja käyttää Yksi listaus referoiduista julkaisusarjoista käytetyistä lyhenteistä löytyy täältä www Tietokannat: Bibtex Komentoyhdistelmä latex tiedosto bibtex tiedosto latex tiedosto latex tiedosto dvips tiedosto -o voi mennä solmuun Jos alias \rm= \rm -i on voimassa, ongelma ratkeaa komennolla rm tiedosto.* Esim: tuloste rm: remove regular file tiedosto.aux? y rm: remove regular file tiedosto.bbl? y rm: remove regular file tiedosto.blg? y rm: remove regular file tiedosto.dvi? y rm: remove regular file tiedosto.log? y rm: remove regular file tiedosto.ps? y rm: remove regular file tiedosto.tex? n rm: remove regular file tiedosto.tex~? n Vastataan n vain kahteen Tulostuvat sivut voi rajata Esim: dvips -o -p3 -l5 tiedosto tiedosto.ps:ään vain sivut 3 5

A2: python ja octave python ja octave python Muuttuja: Olio koneen muistissa Kokeillaan python Return (jätetään >>> kirjoittamatta) Yksinkertaisin tapa luoda muuttuja on sijoitus: x=1 Return Muuttujan nimi=tunnus on x Muuttujan arvo on 1 Tyyppi on kokonaislukumuuttuja Toinen tapa on luoda tyypin avulla: x = int() Return luo tyhjän kokonaislukumuuttujan print(x) Return tulostaa arvon 0 Merkillä ; riville monta komentoa a=1;b=type(a);print(b) Return antaa arvon ja tyypin <class int > octave Kokeillaan octave Return (jätetään octave:*> kirjoittamatta) x=1 Return tulostaa x = 1 x=1; Return ; estää tulostuksen class(x) tulostaa ans = double x=[] tulostaa x = [](0x0) MatLab = Matrix Laboratory a=1;b=class(a);disp(b); Return tulostaa double Merkillä ; voidaan kirjoittaa python:ssa ja octave: komentoja samalle riville. Se estää myös octave:n ans tulostuksen Mielipide: Monta komentoa samalla rivillä on huonoa koodausta Vastaus: Luennoilla pitkäkin ohjelma saadaan näin esitettyä yhdellä sivulla

A2: python ja octave python ja octave python python jatkuu: jätetään myös Return kirjoittamatta x=[1,2] ; print(x[0]) tulostaa 1 eli python:ssa indeksit alkavat nollasta x=[1 2] Virheilmoitus type(x) tulostaa <class list > eli kyseessä on listamuuttujalue len(x) tulostaa 2 x=[1,2] ; y=x+1 Virheilmoitus import numpy ; x=numpy.arange(2)+1 print(x) tulostaa [1 2] Tälle muuttujalle yhteenlasku toimii y=x+1 ; print(y) tulostaa [2 3] x.size tulostaa 2 python: Muuttujien indekseistä www octave octave jatkuu... x=[1,2] toimii x=[1 2] sama tulos disp(x(0)) Virheilmoitus disp(x(1)) tulostaa 1 eli octave:ssa indeksit alkavat yhdestä class(x) tulostaa double size(x) tulostaa 1 2 eli 1 rivi ja 2 saraketta length(x) tulostaa 2 x = [1 2] ; y=x+1 tulostaa 2 3 octave: Muuttujien indekseistä www Käytännössä muuttujia, sekä niiden yhdistelmiä, on python:ssa ja octave:ssa lopputtomiin Jokainen opettelee tarpeen mukaan

A2: python ja octave python ja octave python a=1 ; b=1.0 ; c= ab type(a),type(b),type(c) tulostaa <type int >,<type float >,<type str > Muuttujatyypit: a = kokonaisluku = int b = reaaliluku = float c = stringi = str x=[1,[1,2],"abc"] toimii! type(x[0]) tulostaa <type int > type(x[1]) tulostaa <type list > type(x[2]) tulostaa <type str > python:ssa listat voivat sisältää lukuja, tekstiä, listoja,... Alkeet... EnOlKoTa octave a=1 ; b=1.0 ; c= ab class(a),class(b),class(c) tulostaa double, double, char Muuttujatyypit: a = reaaliluku = double b = reaaliluku = double c = string = char x=[1,[1,2],"abc] ei toimi! octave:ssa voidaan python;n listaa vastaava rakenne luoda komennolla x.a=1 ; x.b=[1,2]; x.c= ab ; disp(x) tulostaa scalar structure containing fields: a = 1 b = 1 2 c = ab Menee näpertelyksi... EnOlKoTa

B1: linux linux: komennoista linux Komentojen käyttö komento -opt1 -opt2 argumentti Esimerkiksi ls -s *.dat tulostaa työtiedoston.dat loppuiset tiedostot ja niiden koon Esimerkiksi ls -l *.dat tulostaa samojen tiedostojen, koon, viimeisen version ajan, yms Molemmat yhtä aikaa ls -l -s *.dat on sama kuin ls -ls *.dat on sama kuin ls -sl *.dat whatis arg lyhyt arg kuvaus man arg näyttää arg manuaalisivut info arg näyttää arg infosivut arg --help komennon opaste Kokeile whatis cp, man cp, info cp, cp --help (Poistuminen tarvittaessa: q) linux Luodaan kaksi tyhjää tiedostoa touch aaa ja touch bbb Annetaan komento cp -i aaa bbb tulostuu kysymys cp: overwrite bbb? johon voi vastata y tai n Sarkain täydentää komentoja Esimerkiksi ho tuottaa host täydentää myös tiedostojen tai hakemistojen nimiä Annetut komennot tallentuvat komentopinoon, jota voi selata nuolinäppäimillä ja Selattujen komentojen sisällä voi liikkua nuolinäppäimillä ja, sekä samalla edioida uusia merkkejä

B1: linux linux: komennoista linux Esimerkiksi history 10 tulostaa viimeiset 10 annettua komentoa Komennon ulosanti voidaan ohjata tiedostoon tai toiseen komentoon Esimerkki komennosta tiedostoon: ls > aaa tulostaa työhakemiston sisällön tiedostoon aaa Näin luodun aaa tiedoston voi tulostaa komennolla cat aaa Esimerkki komennosta komentoon: grep ab username/ sort - etsii hakemistosta username/ tiedostot *, joissa esiintyy merkkirivi ab Komento sort - tulostaa nämä tiedostot aakkosjärjestyksessä Useita komentoja voi siis putkittaa (engl. pipe) merkin avulla Pidempiä putkia EnOlKoTa linux Komennoilla on oletuskäyttäytyminen, jota voi muuttaa ja luoda eri muunnelmia cp file1 file2 kopioi tiedoston file1 sisällön tiedostoon file2, cp oletuskäyttäytyminen on, että file2:n päälle kirjoitetaan mitään kysymättä Komento cp -i file1 file2 kysyy cp: overwrite file2 alias cp= cp -i määrittelee uuden komennon cp, joka tekee kuten cp -i Editoidaan tiedosto emacs.myalias alias c= clear alias cp= cp -i alias rm= rm -i Ajetaan komennolla source.myalias Tämän jälkeen c tyhjentää näytön, sekä cp tai rm eivät kopioi tai tuhoa kysymättä ls -a listaa työtiedoston sisällön, mukaan lukien merkillä. alkavat tiedostot

B1: latex L A T E X: Matemaattiset kaavat L A T E X:Kaavat Matemaattiset kaavat rajataan merkillä $ Tekstin sisään (in line math) tarkoitetut kaavat rajataan kummaltakin puolelta $:llä Esim: tekstisyöte Mitä on $a_1 \sin{y},$ jos $a_1=7$ ja $y=89$. tuottaa Mitä on a 1 sin y, jos a 1 = 7 ja y = 89 Symbolit kursiivia: kts a 1, y yllä Luvut ja funktiot ei kursiivia: kts 7, sin yllä Kursiivin voi estää (esim: luonnon vakiot) Esim: valon nopeus $\mathrm{c}$ tuottaa valon nopeus c, mutta valon nopeus $c$ tuottaisi valon nopeus c L A T E X: Kaavat Tekstistä erottumaan (display math) tarkoitetut kaavat rajataan $$:llä Esim: tekstisyöte Mitä on $$a_1 \sin{y},$$ jos $a_1=7$ ja $y=89$. tuottaa Mitä on a 1 sin y, jos a 1 = 7 ja y = 89. Merkki _ tuottaa alaviitteen Esimi: $a_{b+c}$ tuottaa a b+c, missä { ja } rajaavat alaviitteen Esim: $a^{b+c}$ tuottaa yläviitteen a b+c Esim: $a^{b+c}_{d+e}$ tuottaa molemmat a b+c d+e

B1: latex L A T E X: Matemaattiset kaavat L A T E X: Kaavat (kuva:@www.spreadshirt.co.uk) emacs on LAT E X ystävällinen Kursori pomppii editoidessa ${ { \sum_{i=1}^{n+1}\cos{i\pi\alpha} } \over { \sum_{i=1}^{n+1}\sin{i\pi\alpha} } }$ n+1 joka tuottaa i=1 cos iπα sin iπα n+1 i=1 Kreikkalaisille kirjaimille omat komennot: esim \alpha ja \pi yllä Matemaattisille funktiolle omat komennot: esim \cos ja \cos yllä Matemaattisille merkinnöille omat komennot: esim \sum ja \over yllä Mitään ei tarvitse/kannata opetella ulkoa, koska löytyvät esimerkiksi täältä www L A T E X: Kaavat Lähes minkä tahansa symbolin komento löytyy täältä www

B1: python ja octave python python python: paljon erilaisia valmiita moduleja, joita ladataan tarpeen mukaan Matemaattiset funktiot: Numpy www importoidaan komennolla import numpy Importoinnin jälkeen esimerkiksi tämän modulin sisällön voi aina tarkistaa komennolla dir(numpy) Nimeä voi muuttaa esimerkiksi python import numpy as np a=np.arange(3) print(a) tulostaa [0 1 2] Tieteellinen laskenta: Scipy www importointi import scipy Tulosten visualisointi: Pylab www importointi import pylab python Pythonista on olemassa interaktiivinen versio ipython www Kokeile linux komentotulkissa ipython -pylab In [1] ilmestyy a=numpy.ones(3) ; print(a) tulostaa [ 1. 1. 1.] Anna sen jälkeen komento a. ja ipython kertoo kaiken, mitä voit tehdä muuttujalle a, jos aloitat muodolla a. ipython:ssa voi vaikkapa kokeilla erilaisia komentoja ennen kuin kirjoittaa ne editoimansa ohjelman sisään Kokeile linux komentoa pwd. Se toimii ipython:ssa, mutta ei tavallisessa python:ssa octave: kaikki ladattu valmiiksi ja linux komennot toimivat

B1: python ja octave python ja octave python Numeeriset muuttujatyypit pitävät sisällään lukuarvoja. Esimerkkejä python:n numeerisia muuttujatyyppejä int = kokonaisluku esim a=4 float = reaaliluku esim a=3.45 complex = kompleksiluku esim a=complex(3,4) tai a=3.+4j Tyhjän muuttujan luominen: a=int(), a=float(), a=complex() Kokeillaan python:ssa a=1 ; b=1 ; c=a+b print(type(a),type(b),type(c)) tyyppi ei muutu Kokeillaan python:ssa a=1 ; b=2.2 ; c=a+b print(type(a),type(b),type(c)) tyyppi muuttuu tarkkuuden mukaan octave Kokeillaan octave:ssa a=1 ; class(a) tulostaa ans = double eli ei integer Kompleksiluvun luominen octave:ssa z=3+4*i ; abs(z) tulostaa ans = 5 eli z arvon Kokeillaan octave:ssa a=1 ; isnumeric(a) tulostaa ans = 1 eli kertoo, että a on numeroarvoinen muuttuja (s.o. joko kokonais-, reaali- tai kompleksiluku) Kokeillaan octave:ssa a=1 ; islogical(isnumeric(a)) tulostaa ans = 1 eli kertoo, että isnumeric(a) on looginen muuttuja (s.o. 1=True, 0=False) octave: tietoa numeerisista (myös muista) muuttujatyypeistä löytyy täältä www Muuttujatyyppejä ei tarvitse opetella ulkoa

B1: python ja octave python ja octave python ja octave Peruslaskutoimitukset python octave + + summa - - erotus * * kertolasku ** ** tai ˆ potenssiin korotus / / jakolasku python: lisää löytyy täältä www octave: lisää löytyy täältä www Vertailuoperaattorit samat python octave == == yhtä suuri < < pienempi > > suurempi >= >= suurempi tai yhtä suuri <= <= pienempi tai yhtä suuri! =! = ei yhtä suuri python ja octave Peruslaskutoimituksissa on eroja Kokeillaan python:ssa import numpy a=numpy.arange(2) ; b=2.+a print(a) tulostaa [0 1] print(b) tulostaa [2. 3.] print(a*b) tulostaa [0. 3.] Tulos: Vastaavien alkioiden tulot Kokeillaan octave:ssa a=[0 1] ; b=2.+a ; disp(a) tulostaa 0 1 disp(b) tulostaa 2 3 disp(a*b) tulostaa error... koska molemmat ovat vaakavektoreita disp(a*b ) tulostaa 3 koska b pystyvektori, saadaan pistetulo disp(a.*b) tulostaa 0 3 eli vastaavien alkioiden tulot

B1: python ja octave python ja octave python ja octave: funktiot python: Matemaattiset funktiot saadaan käyttöön import numpy käskymuoto numpy.cos(3.14) toimii python: Vain valitun funktion importointi Esim from numpy import cos käskymuoto cos(3.14) toimii octave: Funktiot valmiiksi ladattu Tavallisimmat funktiot molemmissa lähes samanlaisia python octave cos(x) cos(x) cos x sin(x) sin(x) sin x tan(x) tan(x) tan x power(x,y) realpow(x,y) x y sqrt(x) sqrt(x) x exp(x) exp(x) e x log(x) log(x) lnx Trigonometriset funktiot: [x] = radiaani python ja octave: funktiot Harjoitus: Laadi tätä octave ohjelmaa vastaava python ohjelma # Kommenttirivi : Tama on octave ohjelmani Oharjoitus4.m clear ; clc # Poistetaan.. Tyhjennetaan.. a=pi ; # Radiaanit t r i g o n. f u n k t i o i l l e b=sin ( a ) ; disp ( b ) ; # c=cos ( a ) ; disp ( c ) ; # d=tan ( a ) ; disp ( d ) ; # e=1 ; # f =asin ( e ) ; disp ( f ) ; # g=acos ( e ) ; disp ( g ) ; # h=atan ( e ) ; disp ( h ) ; # i =9 ; # j =sqrt ( i ) ; disp ( j ) ; # n e l i o j u u r i # i j a j symboleja kaytetaan kompleksi l u v u i l l e k=1 i 1 i ; disp ( k ) ; # l =1 j 1 j ; disp ( l ) ; # m=1+1 i ; # n=2+3 j ; # o=m+n ; disp ( o ) ; # p=abs ( o ) ; disp ( p ) ; # q=exp ( 1 ) ; # e r =log ( q ) ; disp ( r ) ; # l n s=log10 ( q ) ; disp ( s ) ; # log t= 3 ; # u=abs ( t ) ; disp ( u ) ; # i t s e i s a r v o v=t ^4 ; disp ( v ) ; # potenssi Ohjelmat monimutkaisempia Sitä vaikeampi tehdä yksi yhteen python ja octave versiot

B2: linux linux: Alias linux: Alias Pitkät usein käytetyt komennot alias nimi= pitkä komento kannattaa lyhentää Esimerkki 1: alias lyhennys alias Pr= lpr -PHP-Laserjet-1200 mahdollistaa tiedoston file printtauksen jonoon HP-Laserjet-1200 komennolla Pr file Muuten pitää jokaista tiedostoa * printatessa kirjoittaa lpr -PHP-Laserjet-1200 * Esimerkki 2: valinnalla alias python= python3 varmistetaan, että komennolla python käytetään uusinta (vuonna 2015) python versiota Toimivaa alias komentoa ei kannata keksiä/määritellä/etsiä uudestaan linux: alias Valitut alias komennot kannattaa tallentaa tiedostoon /home/username/.bashrc Tämä alustustiedosto luetaan aina istunnon alkaessa tai uuden linux komentotulkin käynnistyessä Tapa 1: editoidaan tiedostoon /home/username/.bashrc rivit alias c= clear alias cp= cp -i alias rm= rm -i alias python= python3 Tapa 2: editoidaan samat 4 riviä tiedostoon /home/username/.myalias ja 1 rivi source.myalias tiedostoon /home/username/.bashrc Tapa 2 parempi: Miksi? Ensin cp.bashrc.bashrcold Sitten emacs.bashrc & Miksi?

B2: latex L A T E X: Matemaattiset kaavat L A T E X: Kaavat $$ rajatuista kaavoista puuttuu numerointi Viittaaminen tekstin sisällä vaikeaa LAT E X tekstisyöte Tähän kaavaan \begin{equation} E = m \mathrm{c}^2 \label{ejuttu} \end{equation} voi viitata (Kaava \ref{ejuttu}) tuottaa Tähän kaavaan voi viitata (Kaava 1) E = mc 2 (1) Komento \ref{ejuttu} viittaa tunnisteeseen \label{ejuttu} Kaavan numero pysyy oikeana, vaikka lisätään uusia numeroituja kaavoja L A T E X: Kaavat LAT E X tekstisyöte \begin{eqnarray} a_x & = & \int_a^b x dx \\ \sin{x}& = & a_x \nonumber \\ d & = & x \end{eqnarray} tuottaa b a x = xdx (2) a sin x = a x d = x (3) Sarake vaihtuu = &, Rivi vaihtuu = \\ Ei numeroa komennolla \nonumber latex tiedosto ajettava kahdesti Numerointi kunnossa Ei tulostu kaavan ja viitenumeron kohdalla??

B2: python ja octave python ja octave Muuttujan tunnuksista Tunnus toimii osoittimena muuttujaan eli muuttujan nimenä Yhteen muuttujaan voi osoittaa monta tunnusta Tunnuksen voi kesken ohjelman vaihtaa osoittamaan johonkin toiseen muuttujaan Toisin kuin monissa kielessä, python:ssa tunnus ei ole sidottu mihinkään tiettyyn muuttujatyyppiin Kopioidaan kotisivulta Pharjoitus5.py ja Oharjoitus5.m ja vertaillaan niitä # Kommenttirivi: Tama on python ohjelmani Pharjoitus5.py import os ; os.system( clear ) # Tyhjennetaan naytto a = [1,2] ; b = a # Kaksi python kaskya samalla rivilla print( Vaihe I... ) # Merkilla "\" laaditaan kahden rivin pituinen kasky print( a[0]=,a[0],,a[1]=,a[1],\,b[0]=,b[0],,b[1]=,b[1]) a[1]=0 # Muutetaan a:n toisen alkion a[1] arvo print( Vaihe II: b[1] muuttunut! ) print( a[0]=,a[0],,a[1]=,a[1],\,b[0]=,b[0],,b[1]=,b[1]) # Ratkaisu 1: tuple tyyppista muuttujaa d ei voi muuttaa c = [1,2] ; d=tuple(c) print( Vaihe III... ) print( c[0]=,c[0],,c[1]=,c[1],\,d[0]=,d[0],,d[1]=,d[1]) c[1]=0 # Muutetaan c:n toisen alkion c[1] arvo print( Vaihe IV: d[1] ei muuttunut! ) print( c[0]=,c[0],,c[1]=,c[1],\,d[0]=,d[0],,d[1]=,d[1]) # Ratkaisu 2: Kopioidaan e:n kaikki alkiot muuttujaan f e = [1,2] ; f=e[:] print( Vaihe V... ) print( e[0]=,e[0],,e[1]=,e[1],\,f[0]=,f[0],,f[1]=,f[1]) e[1]=0 # Muutetaan e:n toisen alkion e[1] arvo print( Vaihe VI: f[1] ei muuttunut! ) print( e[0]=,e[0],,e[1]=,e[1],\,f[0]=,f[0],,f[1]=,f[1])

B2: python ja octave python ja octave Muuttujan tunnuksista python Pharjoitus5.py Vaihe I... a[0]= 1,a[1]= 2,b[0]= 1,b[1]= 2 Vaihe II: b[1] muuttunut! a[0]= 1,a[1]= 0,b[0]= 1,b[1]= 0 Vaihe III... c[0]= 1,c[1]= 2,d[0]= 1,d[1]= 2 Vaihe IV: d[1] ei muuttunut! c[0]= 1,c[1]= 0,d[0]= 1,d[1]= 2 Vaihe V... e[0]= 1,e[1]= 2,f[0]= 1,f[1]= 2 Vaihe VI: f[1] ei muuttunut! e[0]= 1,e[1]= 0,f[0]= 1,f[1]= 2 Tunnukset a ja b viittasivat samaan muuttujaan. a:n alkion a[1]=1.0 arvon ja tyypin muutos muutti b[1]:n arvon ja tyypin Muuttujaan d kopioitiin c:n alkioiden arvot. d=tuple(c) teki listan, jonka alkioita ei voi muuttaa. Siksi c[1]:n muutos ei muuta alkiota d[1]= cd Muuttujaan f kopioitiin e:n kaikki alkiot e[1]:n muutos ei muuta alkiota f[1]= ef Muuttujan tunnuksista Vastaava octave ohjelma Oharjoitus5.m kotisivulta # Kommenttirivi: Tama on octave ohjelmani Oharjoitus5.m clear ; clc # Poistetaan... Tyhjennetaan... a = [1,2] ; b = a ; # Kaksi octave kaskya samalla rivilla # Nayttotulostus=printf, Siirry seuraavalle riville=\n printf("vaihe I... \n"); # Merkeilla "{" ja "}" laaditaan kahden rivin pituinen kasky {printf("a(1)=%4.1f,a(2)=%4.1f,b(1)=%4.1f,b(2)=%4.1f\n", a(1),a(2),b(1),b(2))}; a(1) = 0; # Muutetaan a:n toisen alkion a(1) arvo printf("vaihe II: b(2) ei muuttunut!\n"); {printf("a(1)=%4.1f,a(2)=%4.1f,b(1)=%4.1f,b(2)=%4.1f\n", a(1),a(2),b(1),b(2))}; octave Oharjoitus5.m tulostaa Vaihe I... a(1)= 1.0,a(2)= 2.0,b(1)= 1.0,b(2)= 2.0 Vaihe II: b(2) ei muuttunut! a(1)= 0.0,a(2)= 2.0,b(1)= 1.0,b(2)= 2.0 octave:ssa tätä python:n ongelmaa ei ole Käytännössä tämä tarkoittaa, että kaikki python ohjelmat pitää laatia ja tarkastaa huolellisesti

B2: python ja octave python ja octave Kommentit (kuva:@www.brainstuck.com) Kaikki merkin # jälkeen tuleva lasketaan kommentiksi Kommentit ovat tekstiä jonka python tai octave jättää huomiotta Kommentit auttavat muita ymmärtämään koodin toimintaa Käytännössä vähemmän käytetyt komennot unohtuvat Komennot voi tarkistaa koodin kommenteista Kommentit vähentävät tulevaa työtä. Ei tarvitse keksiä pyörää uudestaan Malliohjelmissa on pyritty selkeään kommentoitiin Mikäli edes ohjelma/komento löytyy? grep disp /home/username/*/*.m etsii ohjelmat *.m joissa disp komento

C1: linux linux: Ympäristömuuttujat linux: Ympäristömuuttujat linux komentotulkkki toimii asetettujen ympäristömuuttujien mukaan env kertoo asetetut ympäristömuuttujat Yksi tulostuvista riveistä on tyypillisesti HOME=/home/username s.o. käyttäjän nykyisen kotihakemiston Saman tiedon kertoisi echo $HOME Ympäristömuuttujia voi muuttaa Esimerkiksi komentotulkin rivin alun username@fuksi: voi muuttaa muotoon <My own prompt> komennolla export PS1= <My own prompt> Ympäristömuuttujien muutokset kannattaa kirjata.bashrc tiedostoon samalla tavoin kuin jo mainitut alias komennot Selkeä esitys ympäristömuuttujien käytöstä löytyy täältä www linux: Selauskomentoja Tiedostoja voi selata editoimatta grep abc file etsii merkit abc tiedostosta file less file tulostaa näyttöön space bar jatkaa ja q lopettaa head -5 file tulostaa tiedoston file 5 ensimmäistä riviä tail -15 file tulostaa tiedoston file 15 viimeistä riviä wc -l file file:n rivien määrä wc -w file file:n sanojen määrä wc -m file file:n merkkien määrä wc file samalla kertaa file:n rivien, sanojen ja merkkien määrä Näistä käyttökelpoisin on ollut grep, kun on haettu jotain komentoa, tiedostoa,...

C1: latex L A T E X: Ympäristöt L A T E X: Ympäristöt Ympäristö otetaan käyttöön komennolla \begin{aaa}... \end{aaa} Esimerkkejä vaihtoehdoista aaa:lle \itemize, \enumerate, \center, \figure, \tabular, \table, Esim: tekstisyöte \begin{enumerate} \item Ensimmäinen juttu \item Toinen juttu \item {Kolmas juttu \label{ab}} \end{enumerate} Monesko juttu \ref{ab} se oli? tuottaa numeroidun listan 1. Ensimmäinen juttu 2. Toinen juttu 3. Kolmas juttu Monesko juttu 3 se oli? missä listan kolmanteen juttuun viitataan tekstissä labelin {AB} avulla L A T E X: Ympäristöt Taulukkoympäristöön siirrytään \begin{tabular}{asettelu} Komennot ovat Tasaus: l = vasen, r = oikea ja c = keski Viivat: = pysty ja \hline = vaaka Vaihda: & = sarake ja \\ = rivi Esim: tekstisyöte \begin{tabular}{ l cr } \hline now & lets & play \\ 1 & 2 & 3 \\ \hline \end{tabular} tuottaa tälläisen taulukon now lets play 1 2 3

C1: latex L A T E X: Taulukot L A T E X: Taulukot tabular sijoittaa taulukon paikkaan siihen paikkaa, mihin se on tiedostossa kirjoitettu tabular ympristössä taulukkoon ei voi viitata tai lisätä taulukon sisältöä selittävää tekstiä Tekstisyöte \begin{table}[h] \caption[]{taulukon kuvaus} \begin{tabular}{lcr} \hline aaa & bbb & ccc \\ 1 & 2 & 3 \\ \hline \end{tabular} \label{cd} \end{table} Luvut ovat taulukossa \ref{cd}. tuottaa L A T E X: Taulukot Taulukko 1: Taulukon kuvaus aaa bbb ccc 1 2 3 Luvut ovat Taulukossa 1. \ref{cd} etsii tunnisteen \label{cd} Taulukot numeroituvat automaattisesti siinä järjestyksessä, jossa ne ovat tiedostossa Taulukoiden caption ja teksti numerointi pysyy oikeana lisättäessä uusia taulukoita table = yhden kolumnin leveys table* = kahden kolumnin leveys \begin{table}[sijainti] määrittää minne taulukko yritetään sijoittaa tekstissä sijainti: h = tähän (here), t = sivun yläreunaan (top), b = sivun alareunaan (bottom),... paljon vaihtoehtoja

C1: python ja octave python ja octave python Alkioiden indeksit esimerkkejä: Muuttuja x sisältää n alkiota x[0] = 1. alkio, x[n-1] = n:s alkio x[i:j] = Osa alkioista i = ensimmäisen valitun alkion indeksi j = monesko viimeinen valittu on kaikista alkioista. Esim: x=[1,2,3] print(x[0:1]) tulostaa [1] print(x[0:2]) tulostaa [1, 2] print(x[0:3]) tulostaa [1, 2, 3] print(x[0:0]) tulostaa [] print(x[1:1]) tulostaa [] print(x[1:2]) tulostaa [2] print(x[1:3]) tulostaa [2,3] print(x[1:30]) tulostaa [2,3] eli yläraja SAA ylittää n:n print(x[1 :]) tulostaa [2,3] Lisäksi negatiiviset indeksit print(x[-1]) tulostaa [3] octave Muuttuja x sisältää n alkiota x(1) = 1. alkio, x(n) = n:s alkio x[i:j] = Osa alkioista i = ensimmäisen valitun alkion indeksi j = viimeisen valitun alkion indeksi Esim: x=[1,2,3] disp(x(1:1)) tulostaa 1 disp(x(1:2)) tulostaa 1 2 disp(x(1:3)) tulostaa 1 2 3 disp(x(2:2)) tulostaa 2 disp(x(2:3)) tulostaa 2 3 disp(x(2:30)) tulostaa error:... eli yläraja EI SAA ylittää n:ää disp(x(-1)) tulostaa error:... disp(x(1,1)) tulostaa 1 disp(x(1,2)) tulostaa 2 disp(x(2,1)) tulostaa error:... koska kyseessä on vaakavektori s.o. Rivi 2, Sarake 1 ei ole olemassa

C1: python ja octave python ja octave python x= Abc ; type(x) tulostaa <class str > Tämä muuttuja on merkkijono eli stringi Sarjatyyppinen muuttuja on muuttuja, joka osoittaa listaan muita muuttujia Sarjatyyppisten muuttujat luokitellaan sen mukaan voidaanko niiden alkioita muuttaa list = alkiot muutettavissa. Esim: a=[1,2] ; a[-1]= ok ; print(a) tulostaa [1, ok ] tuple = alkiot ei muutettavissa. Esim: a=(1, ok ) ; a[0]= ok ; print(a) tulostaa...typeerror: tuple... list rajataan [...] tuple rajataan (...) list: lisätään muita muuttujia. Esim: a=[1,2]; b=[ c, d ]; a[-2]=b; print(a) tulostaa [[ c, d ], 2] octave x= Abc ; disp(class(x)) tulostaa char eli tämä muuttuja on merkkijono a=[1,2] ; a(2)= ok tulostaa error:... eli sarjatyyppisen muuttujan kaltaisen muuttujan luominen ei tällä tavoin onnistu x.a=1; x.b= ab ; disp(x); disp(class(x)) tulostaa a = 1 b = ab struct Tämä, struct, muistuttaa python:n sarjatyyyppistä list muuttujaa help tuple tulostaa error: help: tuple not found Vaikka tähän mennessä en ole onnistunut löytämään tuple:a vastaavaa, se ei tarkoita, että sitä ei ole... EnOlKoTa

C1: python ja octave python ja octave python ohjelman peruselementit Muuttujat ( int, float, list,...) Operaattorit ( +, -, *,...) Funktiot ( cos(), exp(),...) Aliohjelmat: samoja ohjelman rivejä ei tarvitse toistaa uudelleen ja uudelleen Ohjausrakenteet Sisennys vain if, for,... Kommentit ( # tämä tarkoittaa...) Modulit ( math, numpy,...) import numpy as np np.sin(x) from numpy import sin sin(x) Luokat ( numpy.array,...) Metodit ( string.find(),...) octave ohjelmat peruselementit Muuttujat: eroavaisuuksia, esim indeksit Operaattorit: lähes samat Funktiot: lähes samat Aliohjelmat: samoja ohjelman rivejä ei tarvitse toistaa uudelleen ja uudelleen Ohjausrakenteet Ei sisennystä endfor, endif,... Kommentit: samat Modulit: kaikki valmiina Luokat: ( class(a),...) Metodit: ( display(a),...) Ei tarvitse opetella ulkoa, koska näitä opetellaan tarpeen mukaan usean esimerkin avulla

C1: python ja octave python ja octave python: Ohjauskomento if (kuva:@www.programiz.com) Sisennetyt lohkot erottavat ohjauskomennot muusta koodista. Sisennys on 4 tyhjää merkkiä Aloittava rivi päättyy merkkiin : emacs sisentää automaattisesti if esimerkki Pharjoitus6.py if, elif ja else yhdistelmä octave: Ohjauskomento if Sisennystä ei tarvita, mutta sitä voi käyttää koodin selventämiseen if loppuu komentoon endif if, elseif, else ja endif esimerkki Oharjoitus7.m

C1: python ja octave python python # K o m e n t t i r i v i : Tama on python ohjelmani Pharjoitus6. py import os ; os. system ( clear ) # Tyhjennetaan naytto a=2 ; b=1 ; c=2 ; d=1 # 1. kombinaatio #a=2 ; b=1 ; c=1 ; d=2 # 2. kombinaatio #a=1 ; b=2 ; c=2 ; d=1 # 3. kombinaatio #a=1 ; b=2 ; c=1 ; d=2 # 4. kombinaatio p r i n t ( a=,a, b=,b, c=, c, d=, d ) # Tulostetaan a, b, c, d p r i n t ( Kaydaan aina r i v i l l a L7 ) # # Ohjausrakenteen a l o i t u s r i v i t p a a t t y v a t merkkiin " : " # Muut ohjausrakenteen r i v i t s i s e n n e t t y i f (a > b ) : # 1. ohjausrakenne alkaa p r i n t ( Koska a>b, kaydaan r i v i l l a L12 ) p r i n t ( T a r k i s t u s : a=,a, b=, b ) i f ( c > d ) : # 2. ohjausrakenne alkaa p r i n t ( Koska a>b j a c>d kaydaan r i v i l l a L15 ) p r i n t ( T a r k i s t u s : a=,a, b=,b, c=, c, d=, d ) p r i n t ( Koska a>b kaydaan r i v i l l a L17 ) p r i n t ( T a r k i s t u s : a=,a, b=, b ) Kaksi merkkiin : päättyvää ohjausrakennetta Kaksi sisennystä: 4 ja 8 tyhjää octave Tehtävänä laatia tätä vastaava Oharjoitus6.m a=1 ; b=2 Vihjeitä Kaksi if ja endif paria Kokeile interaktiivisessa octave:ssa komentoja printf("tarkistus: a=%2i,b=%2i\n",a,b) jotka tuottavat näyttöön formatoitua tulostusta Kokeile mitä tapahtuu ilman osaa \n Kokeile mitä tapahtuu, jos muutat osaa %2i muotoon %10i

C2: linux linux linux: käyttäjän oikeudet Käyttäjällä, username, on käyttöoikeus rajattuun levytilaan du -h /home/username/ tulostaa käytetyn levytilan. Yhteenvedon antaa du -h /home/jetsu/ -summarize df tulostaa sekä vapaan että käytetyn levytilan. Käytännöllinen alias on alias Tila= df -h /home/username/ Käyttäjillä rajatut oikeudet suorittaa komentoja ja käsitellä tiedostoja linux:ssa käyttäjä kuuluu ainakin yhteen ryhmään. groups kertoo mihin Käyttäjälle: u, Ryhmälle: g & Muille: o on erilaiset oikeudet seuraaviin: Luku: r, Kirjoitus: w & Suoritus: x Listaa tiedostosi komennolla ls -ls linux: käyttäjän oikeudet Esimerkiksi -rwxr-x- -x tarkoittaa: käyttäjällä on rwx oikeudet ryhmällä on r-x oikeudet muilla on - -x oikeudet d:llä alkava tulostus (Esim: drwxr-x- -x) tarkoittaa, että kyseessä on hakemisto Oikeuksia voi muuttaa komennolla chmod [ugoa] (+-) [rwx] nimi (u)ser, (g)roup, (o)thers, (a)ll ( a on kaikki u, g ja o yhdessä) + lisää ja - poistaa oikeuksia (r)ead, (w)rite, e(x)ecute Esimerkkki 1: chmod g+rwx nimi lisää ryhmällä rwx-oikeudet tiedostoon tai hakemistoon nimi Esimerkkki 2: chmod go-wx nimi poistaa ryhmältä ja muilta wx-oikeudet tiedostoon tai hakemistoon nimi

1.0 0.5 0.0 0.5 1.0 0 1 2 3 4 5 6 7 Johdanto A1 A2 B1 B2 C1 C2 D1 D2 E1 C2: latex L A T E X: kuvat L A T E X: kuvat Dokumentin alussa ladataan paketti. Esim: \usepackage[dvips]{graphicx} jossa kuvan lataus \includegraphics[]{tiedosto} [] sisään optioita: width, height,... Tässä luentojen LAT E X ympäristössä syöte \includegraphics[width=5.0cm, height=1.5cm]{pharjoitus17.pdf} tuottaa tämän kuvan 1.0 L A T E X: kuvat Tässä luentojen LAT E X ympäristössä syöte \begin{figure} \caption[]{kuvan teksti} \includegraphics[width=1.0cm, height=1.0cm]{pharjoitus17.pdf} \label{ef} \end{figure} Kuvan \ref{ef} sini-käyrät tuottaa Kuva 1: Kuvan teksti 0.5 0.0 0.5 1.0 0 1 2 3 4 5 6 7 \figure (leveys yksi kolumni) ja \figure* (leveys kaksi kolumnia) ympäristöt: numero, teksti ( caption) ja viittaus tunniste ( label) Kuvan 1 sini-käyrät Kuvat numeroituvat automaattisesti... latex: kuvat ps- tai eps muodossa pdflatex: kuvat jpg-, png- tai pdf

C2: python ja octave python octave ohjauskomento if, elseif, else (kuva:@www.cartoonstock.com) # Kommenttirivi : Tama on octave ohjelmani Oharjoitus7.m clear ; clc # Poistetaan... Tyhjennetaan... a=rand (1) 360. ; # Tasajakauma 0 360 p r i n t f ( " Arvottu kulma on = %7.1 f astetta \ n ",a ) # T a r k i s t u s b=(a /180.) pi ; # Asteet r a d i a a n e i k s i if (cos (b) >=0 & sin (b) >=0) # Alkaa p r i n t f ( " 1 neljannes \ n " ) # elseif (cos (b) <0 & sin (b) >0) # p r i n t f ( " 2 neljannes \ n " ) # elseif (cos (b) <=0 & sin (b) <=0) # p r i n t f ( " 3 neljannes \ n " ) # else # p r i n t f ( " 4 neljannes \ n " ) # endif # Paattyy Neljän vaihtoehdon if ja elseif rakenne Sisennykset vain selkeyttämisen vuoksi rand(1) tuottaa yhden satunnaisluvun tasajakaumasta välillä [0, 1] Laskuharjoitus: Laadi tätä vastaava python ohjelma Pharjoitus7.py

C2: python ja octave python ja octave python: Ohjauskomento for (kuva:@www.tutorialspoint.com) Ohjauskomennon for rivi päättyy merkkiin : Lohkon sisennys loopin loppuun Esimerkki: Seuraavan sivun ohjelma Pharjoitus8.py octave: Ohjauskomento for Ohjaus komento alkaa merkillä for Ei tarvita sisennystä Looppi päättyy komentoon endfor Laskuharjoitus: Laadi python ohjelmaa Pharjoitus8.py vastaava octave ohjelma Oharjoitus8.m

C2: python ja octave python python ohjauskomento for # K o m e n t t i r i v i : Tama on python ohjelmani Pharjoitus8. py import os ; os. system ( clear ) # Tyhjennetaan naytto for i in range ( 3 ) : # 1. Looppi : indeksilla p r i n t ( i =, i ) # a =[ A, B, C ] # for b in a : # 2. Looppi a l k i o i l l a p r i n t ( b=, b ) # p r i n t ( b. f i n d ( "A" ) ) # k=0 # Kahdessa sisakkaisessa l o opissa muuttuva luku for j in range ( 2 ) : # 3. Looppi for b in a : # 4. Looppi print ( b=,b,,k=,k ) # 4. Looppi : print k=k+1 # 4. Looppi : k=k+1 p r i n t ( j =, j,, k=, k ) # 3. Looppi : p r i n t k=k+1 # 3. Looppi : k=k+1 Neljä merkkiin : päättyvää ohjausrakennetta Neljä sisennystä: 4 ja 8 tyhjää octave Tehtävänä laatia tätä vastaava Oharjoitus8.m Vihjeitä Neljä for ja endfor paria Voit korvata python komennon print(b.find("a")) octave komennolla disp(strfind(b,"a")) Kokeile interaktiivisessa octave:ssa komentoja a=1 ; b=2 printf("tarkistus: a=%2i,b=%2i\n",a,b) jotka tuottavat näyttöön formatoitua tulostusta

C2: python ja octave python ja octave python: Ohjauskomento while (kuva:@www.tutorialspoint.com) Ohjauskomennon while rivi päättyy merkkiin : Lohkon sisennys Laskuharjoitus: Laadi ohjelma Pharjoitus9.py, joka tekee saman kuin Oharjoitus9.m seuraavalla sivulla octave: Ohjauskomento while Ohjaus komento alkaa merkillä while Ei tarvita sisennystä while päättyy komentoon endwhile Esimerkki: Seuraavan sivun octave ohjelma Oharjoitus9.m

C2: python ja octave octave ohjauskomento while octave ohjauskomento while # Kommenttirivi : Tama on octave ohjelmani Oharjoitus9.m clear ; clc # Poistetaan... Tyhjennetaan... k=20 ; # Kokeile muuttujan a rvo ja k= 11, 9 j a 20 p r i n t f ( " Alussa k= %i \ n ", k ) # k alussa while ( k >=10) # Ohjausrakenne p r i n t f ( " 1. ehdolla j a t k e t a a n j a k= %i \ n ", k ) k=k 4 ; # Vahenna 4 endwhile # while ( k > 10.5 & k <10) # Ohjausrakenne p r i n t f ( " 2. ehdolla j a t k e t a a n j a k= %i \ n ", k ) k=k 3 ; # Vahenna 3 endwhile # p r i n t f ( " Lopussa k= %i \ n ", k ) # lopussa

C2: python ja octave python ja octave python: Ohjauskomento try catch (kuva:@sheriframadan.com) Ohjauskomennon try catch rivi päättyy merkkiin : Lohkon sisennys Käytetään koodin korjaamiseen EnOlKoTa Tästä ei laskuharjoitusta Esimerkki: python ohjelma Pharjoitus10.py seuraavalla sivulla octave: Ohjauskomento try catch Ei tarvita sisennystä Päättyy komentoon end_try_catch Tästä ei laskuharjoitusta Esimerkki: Sitä seuraavan sivun octave ohjelma Oharjoitus10.m