Mathcad'i tutvustus

Sissejuhatus

Sisukord

Sissejuhatus
Redigeerimine
Lihtsad arvutused
Skaalarid, stringid ja massiivid
Funktsioonid ja programmeerimine
Graafikud
Kasulikke funktsioone
Täiendavad infoallikad
Mathcad on tänu oma intuitiivsele ja interaktiivsele kasutajaliidesele üks kergemini omandatavaid teadus- ja insenertehnilise arvutamise pakette. Erinevalt muudest matemaatikaprogrammidest (Maple, Matlab, Mathematica jne) ja tabelarvutussüsteemidest (MS Excel jne) võimaldab Mathcad sisestada valemeid ligilähedaselt loomulikul kujul nagu trükitud tekstides. Selle tõttu eriti tabelarvutussüsteemidega võrreldes on Mathcad'i dokumendis hulga lihtsam jälgida arvutuste käiku. Võrdleme näiteks ruutvõrrandi lahendivalemit erinevates süsteemides:

Maple x=(-b+sqrt(b^2-4*a*c))/(2*a);
Excel =(-B1+SQRT(B1*B1-4*A1*C1))/(2*A1)
Mathcad Ruutvõrrandi lahendivalem Mathcad-is
Tavaline trükitud tekst Ruutvõrrandi lahendivalem LaTeX-i kujunduses

Kõik Mathcad'i töölehel sisalduv paikneb ristkülikulaadsete piirkondade e. plokkidena. Põhilised on arvutus-, teksti- ja graafikapiirkonnad. Oluline erinevus muude matemaatikapakettidega seisneb selles, et plokke võib paigutada meelevaldselt kogu töölehe ulatuses (nagu pliiatsiga paberile kirjutades), samas määrab valemite ja graafikute paigutus ka arvutuste järjekorra (vasakult paremale ning ülevalt alla). Iga avaldise (või graafiku) arvutamine (uuendamine) toimub automaatselt niipea kui seda on muudetud või kui sellest eespool on modifitseeritud muutujaid, millest see piirkond sõltub (tingimusel, et ToolsCalculateAutomatic Calculation on sisse lülitatud). Selle tõttu tunduvad Mathcad'i töölehed "elavamad" kui mõnes konkureerivas programmis.

Lisaks graafikute vormistamisele võimaldavad Origin-i taolised programmid mõnikord üsna mugavalt (visuaalselt) teostada ka keerukaid andmetöötlusoperatsioone nagu funktsioonide sobitamine katseandmetega, andmete silumine ja Fourier' analüüs. Võrreldes aga Mathcad-i taoliste programmidega on nende tegevuste omavaheline seostamine, automatiseerimine ja parametriseerimine komplitseeritum.Mathcad on eelkõige arvutusvahend ja ei ole ette nähtud esitlus- või publitseerimiskvaliteediga graafikute vormistamiseks, milleks kasutatakse spetsiaalseid programme nagu Origin, SigmaPlot jpt (ka Exceli graafikavahendid on paremad). Samal põhjusel on ka Mathcad'i tekstitöötlusvahendid võrdlemisi primitiivsed ja sobilikud eelkõige arvutuskäigu kommenteerimiseks.

Redigeerimine

Arvutuspiirkonna tekitamiseks tuleb kursor (punane ristike) liigutada soovitud kohta töölehel (hiirega klikkides või nooleklahvidega) ja asuda valemit sisse toksima. Redigeerimise klahvid on võrdlemisi intuitiivsed: * tekitab korrutise, / tekitab murru, ^ tekitab astendaja, \ tekitab ruutjuure jne, sisestuskoha muutmine toimub nooleklahvidega (mängida tasub ka tühiku- ja Insert-klahviga). Kui midagi läheb valesti, siis Ctrl+Z.Sulgavaldisi tekitatakse ( ja ) klahvidega ja Mathcad otsustab ise kas kuvada ümar- või kandilised sulud. Elegantsema väljanägemise huvides saab matemaatikaploki asetada ka tekstipiirkonna sisse kasutades käsku InsertMath Region (Ctrl+Shift+A) või siis lõika-kleebi meetodil.Tekstipiirkonna tekitamise kiirkorralduseks on jutumärgid (või toksida esimene sõna tekstist ja vajutada tühikuklahvi).

Kuivõrd Mathcad pole tekstitoimeti tavapärases mõttes, siis sisestamisel ei toimu plokkide automaatset ümberpaigutamist vältimaks kattumisi. Enter-klahvi vajutamine lükkab kõiki piirkondi ühe rea võrra allapoole, Del või Backspace teeb vastupidist. Tekstipiirkonna omaduste dialoogis (kohtmenüüst Properties) saab siiski märgistada suvandi Push regions down as you type.Hiirega on võimalik märgistada üks või mitu plokki ja lohistada neid kogu töölehe ulatuses kindlustamaks soovitud paigutust ja õiget arvutuste järjekorda.

Lihtsad arvutused

Kalkulaatori tööriistaribaMathcad'i lihtsaim rakendus on kasutamine kalkulaatorina (klikkides kasvõi hiirega vastavaid nuppe tööriistaribalt, kuigi klaviatuuri kasutamine on märksa produktiivsem). Kalkulatsiooni tulemuse saab omistada mingile muutujale, mida võib seejärel kasutada juba järgmises avaldises jne. Seejuures ei ole Mathcad muutujanimede valikul piiratud traditsiooniliste programmeerimiskeelte reeglitega vaid lubab kasutada ka kreeka tähti, Kiire võte kreeka tähtede saamiseks: esmalt vastav ladina täht ja seejärel Ctrl+G. Erisümbolite kaasamiseks muutujanime koosseisu tuleb vajutada Ctrl+Shift+K. alaindekseid, täpitähti ja mõningaid erisümboleid. Lisaks võimaldab Mathcad loomulikul viisil kasutada ka mõõtühikuid: mõõtühikut käsitletakse kui tavalist muutujat, millega mõõtarv tuleb läbi korrutada. Lisaks tekib iga arvutustulemuse taha must kastike (placeholder), kuhu saab kirjutada selle mõõtühiku nime, mille kaudu tulemust tahetakse esitada. Ühikute kasutamisel on ka mõningaid piiranguid. Näiteks massiivi elemendid ei saa olla erinevate ühikutega. Samuti ei pruugi keerukamad algoritmid stabiilselt töötada, kui sisendandmed pole normeeritud mõistlikku diapasooni.


Fundamentaalkonstantide väärtusi jm kasulikke andmeid saab kopeerida ressursikeskusest (HelpReference Tables ).
Näide:

Lihtne arvutus Mathcad-is

 

Nagu näha, esineb Mathcad'is mitmesuguseid "võrdusmärke". Võrdusmärkide (ja ka korrutusmärgi) väljanägemist saab muuta töölehe seadetest (ToolsWorksheet OptionsDisplay).Muutuja defineerimiseks on omistamise sümbol Omistamise märk (klaviatuurilt koolon), muutuja või avaldise väärtuse kuvamiseks aga tavaline võrdusmärk Võrdub (sama sümbol ka kiirkorralduseks). Lisaks on olemas "rasvane" võrdusmärk Rasvane võrdusmärk võrduse vasaku ja parema poole võrdsuse testimiseks (kuulub samasse kategooriasse muude loogika- ja võrdlusoperaatoritega).

Funktsiooni väljakutsumiseks tuleb, nagu ikka, lisada funktsiooni nime järgi sulgudesse argument (või komaga eraldatud argumendid):

Funktsioonide kasutamine Mathcad-is

Arvutusresultaadi vormingu (kuvatavate komakohtade arv jpm) muutmiseks tuleb teha topelt-klõps tulemuse peal ja määrata soovitud seaded avanevas dialoogikastis.

Skaalarid, stringid ja massiivid

Mathcad'is (nagu pea igas programmeerimisvahendis) saab opereerida kolme tüüpi andmetega: skaalarite, stringide ja massiividega. Olgu märgitud, et Mathcad'i on sisse ehitatud toetus kompleksarvudele, ka enamus funktsioone on "teadlikud" kompleksarvulistest argumentidest.Skaalar on tavaline arvmuutuja, nagu kõigis seni vaadeldud näidetes. String sisaldab meelevaldset teksti (nt failinime). Stringi väärtused kuvatakse jutumärkide vahel. Näited:

Andmetüübid Mathcad-is

Massiiv (array) on mingite (enamasti ühetüübiliste) elementide indekseeritud järjend või tabel. Massiivi iga elemendi poole saab individuaalselt pöörduda tema järjekorranumbri abil, mis kuvatakse alaindeksina. Ühemõõtmelist (ühe indeksiga adresseeritavat) massiivi nimetatakse vektoriks, kahemõõtmelist massiivi maatriksiks. Massiivi elementideks võivad olla skaalarid, stringid või ka teised massiivid. Massiivi esimese elemendi indeksi määrab Mathcad'i sisemine muutuja ORIGIN, mille vaikeväärtus on null. Mõningail juhtudel võib mugavam olla siiski loendamise alustamine 1-st.

Massiivide tekitamiseks on mitmeid võimalusi. Suhteliselt vähe elemente sisaldava massiivi võib sisse toksida käsitsi. Kasutada saab nii traditsioonilist maatriksi kuva (InsertMatrix ehk Ctrl+M) kui ka veidi mugavamat tabelit (InsertDataTable):

Massiivi tekitamine Mathcad-is

Siinkohal tasub tähele panna, et Mathcad'is esineb kahte tüüpi alaindekseid: massiivi indeks, millega pöördutakse massiivi konkreetse elemendi poole (kiirkorraldus [), ja nn "iluindeks", mis on lihtsalt osa muutujanimest kuid ei kanna iseseisvat tähendust (kiirkorraldus .). Seega massiivi indeks on täisarvulise väärtusega muutuja või konstant, "iluindeks" võib olla aga meelevaldne sümbolite jada.

Sageli tekib vajadus massiivide järgi sellest, et tarvis on läbi töötada suur hulk ühetaoliseid andmeid. Näiteks mõõdetud andmemassiiv võib sisaldada 1000 katsepunkti. Veelgi enam, eksperimendi tulemuseks võib olla suur hulk sarnase iseloomuga andmemassiive, mille analüüs või teisendamine oleks mõistlik automatiseerida. Selliseid mahukaid andmeid on mõistlik Mathcad'i massiivi sisse lugeda failist. Mõõteaparatuuri poolt väljastatav mõõtmistulemus (nt mingi optilise signaali sõltuvus lainepikkusest) on enamasti võimalik salvestada struktureeritud tekstiformaadis, kus arvutulbad on eraldatud tühikute või tabulatsioonisümbolitega. Kõige lihtsam ja paindlikum viis sellise faili sisu lugemiseks vastavasse Mathcad'i maatriksmuutujasse on funktsiooniga READPRN. Viimane tahab oma argumendiks faili nime (stringi). Tavaliselt andmefail asetatakse samasse kataloogi, kus paikneb Mathcad'i töölehe fail; sel juhul kataloogi ei pea funktsioonile READPRN antavas failinimes ära näitama. Peale andmete töötlemist võib vaja minna ka analoogilist funktsiooni WRITEPRN WRITEPRN-iga kirjutatava faili formaati saab kontrollida süsteemimuutujatega PRNPRECISION ja PRNCOLWIDTH (ToolsWorksheet OptionsBuilt-in Variables ). töödeldud massiivi väljastamiseks faili (et seda oleks võimalik mingis teises programmis vormistada või edasi töödelda).

Andmevahetus failidega

Viimaks, massiivi saab luua (ja selle elemente modifitseerida) ka arvutuslikult. Selleks on tarvilik nn indeksmuutujate defineerimine (kiirkorraldus ;), mis lubab järgemööda läbi käia kõik massiivi elemendid. Indeksmuutuja on erivariant üldisemast vahemikmuutujast erinedes viimasest vaid selle poolest, et väärtused on täisarvulised ja samm on 1 (seetõttu viimast ei pea ära näitama).

Massiivi tekitamine Mathcad-is

Niisiis indeksi(te) abil saab lugeda/kirjutada massiivi üksikuid elemente. Lisaks on olemas ka veeruoperaator (Ctrl+6), mille kaudu saab pöörduda maatriksi veeruvektori poole. Viimane on samuti nii loetav kui ka ülekirjutatavMärgime, et otseselt reavektori poole pöördumise võimalust ei ole, ilmselt sellepärast, et mälus säilitatakse maatriksit veeruvektorite kaupa. . Viimaks, funktsiooni submatrix abil saab väljastada etteantud piirides alam-maatriksi.

Tundmatu või varieeruva suurusega massiivide töötlemisel tuleks kasutada vastavaid funktsioone massiivi suuruse määramiseks (võimalusel tuleks algoritmid disainida nii universaalsed, et nad töötaksid mistahes mahuga sisendandmete korral):

length elementide arv vektoris
last vektori viimase elemendi indeks
rows ridade arv maatriksis
cols veergude arv maatriksis

Veel mõningaid kasulikke vektor- ja maatriksfunktsioone:

augment seab kaks massiivi üksteise kõrvale (kui nende ridade arv klapib)
stack seab kaks massiivi üksteise kohale (kui nende veergude arv klapib)
reverse muudab massiivi ridade järjekorra vastupidiseks
csort sorteerib maatriksi read etteantud veeru järgi kasvavasse järjekorda (mõned algoritmid muidu ei tööta)

Mathcad püüab kõiki operatsioone massiivide vahel tõlgendada lineaaralgebra mõttes. Selleks et massiividega meelevaldseid arvutusoperatsioone läbi viia (mis ei ole esitavad lineaaralgebralise tehte kujul), tuleb need arvutused kas otse elementide kaupa välja kirjutada (kasutades indeksmuutujaid) või siis (erijuhtudel) rakendades avaldisele nn vektoriseerimisoperaatorit (vectorize, kiirkorraldus Ctrl++):

Lineaaralgebra vs vektoriseerimisoperaator

Funktsioonide defineerimine ja programmeerimine

Kuigi Mathcad pakub üsna suure valiku funktsioone mitmesuguste ülesannete täitmiseks (vt InsertFunction), muutub vähegi keerulisema loogikaga andmetöötluse organiseerimisel vajalikuks ka uute funktsioonide defineerimine ning programmeerimisvahendite kasutamine (märksõnad if, for, while jne). Ainus erinevus muutuja ja funktsiooni definitsioonide vahel on argumentide e. parameetrite nimistu lisamine funktsiooni nime järgi:

Funktsiooni defineerimine Mathcad-is

Programmeerimise tööriistaribaAlamprogrammi tegemiseks tuleb klõpsida nuppe programmeerimise tööriistaribalt (märksõnu if, for, while jne käsitsi sisse toksida ei ole lubatud). Alamprogramm küll "näeb" väljaspool defineeritud (globaalseid) muutujaid, kuid nende väärtuse muutmine pole lubatud. Seetõttu tarvitatakse alamprogrammides tavalise omistamise märgi Omistamise märk asemel omaette omistusmärki Omistamise märk muutujate lokaalseks defineerimiseks. Lokaalsetele muutujatele omistatud väärtused lähevad peale alamprogrammi töö lõppu kaotsi; ainus info mis alamprogrammist välja pääseb, on return-käsuga tagastatud väärtus. Funktsiooni argumendid on alamprogrammi seisukohalt lokaalsed muutujad. Näide:

Programmeerimine Mathcad-is

Graafikud

Graafiku loomiseks tuleb esmalt tekitada graafiku toorik valides sobiva graafikutüübi alam-menüüst InsertGraph (või graafikute tööriistaribalt). Kõige lihtsam ja kõige sagedamini vaja minev on ristkoordinaadistikuga 2D graafik (X-Y Plot, kiirkorraldus @). Tooriku kummalgi tejel (all ja vasakul) on kolm tühja kastikest (placeholder). Keskmistesse kastikestesse tuleb kirjutada avaldised, mida soovitakse graafikul kuvada, äärmistesse kastikestesse aga (vajadusel) skaala algus- ja lõppväärtused. Graafikud on sisendandmete tüübi suhtes võrdlemisi paindlikud, võimalikud variandid:

  1. Mõlemale teljele vektorid (võrdse pikkusega)
  2. Ühele teljele indeksmuutuja, teisele vastav massiivi element
  3. Mõlemale teljele vahemikmuutuja või seda sisaldav avaldis

Rohkem kui ühe kõvera kuvamiseks tuleb avaldised eraldada komaga.

Graafikud Mathcad-is

Graafiku üldine väljanägemine (värvid jm) on kohendatav topeltklõpsuga avanevast dialoogist. Lisaks on graafiku kohtmenüüst käivitatavad kasulikud vahendid Trace (hiirekursori kohal oleva punkti koordinaatide näitamine) ja Zoom.

Sümbolarvutus

Mathcad'i numbrilised arvutused toetuvad 32 bitiste protsessorite topelt-täpsusega ujukomaarvudele (programmeerimises tuntud kui double), mille võimalikud väärtused jäävad vahemikku 10-307…10307 ja täpsus on 15 tüvenumbrit. Kui sellest ei piisa, siis sümbolarvutus pakub piiramatu arvutustäpsuse (kuid mõistagi kiiruse arvelt).Oma põhiolemuselt on Mathcad ette nähtud numbriliste arvutuste teostamiseks, kuid ta suudab vahendada käske ka arvutialgebrat (e. sümbolarvutust) võimaldavale süsteemile (Maple või Mupad). See lubab Mathcad-i kasutada ka lihtsamate analüütiliste teisenduste teostamiseks (muutuja avaldamine võrrandist, tuletise või integraali võtmine jms). Lihtsamal juhul piisab muutujanime või avaldise selekteerimisest ja sobiliku käsu valimisest menüüst Symbolics. Paindlikumaid võimalusi pakub sümboolse arvutamise operaatori rakendamine (Ctrl+Shift+.). Selle ette tekib kastike (placeholder), kuhu kirjutatakse juhised sümbolarvutuse protsessorile:

Sümbolarvutus Mathcad-isMõned lihtsamad märksõnad: simplify, solve, substitute, assume, series, float.

Ilma täiendavate märksõnadeta on sümboolse võrduse tähenduseks simplify (avaldise lihtsustamine).

Mõningaid kasulikke funktsioone

Lähendussirge arvutamine

Mitmeid sõltuvusi füüsikas saab (vähemalt peale sobivat teisendust) esitada lineaarse seosena y=ax+b, kus x ja y on eksperimentaalsetest mõõtmistest saadud suurused. Lineariseerige harjutuseks järgmised sõltuvused:
y=a/x
y=Ae-kx
y=axb
a ja b on teoreetilise mudeliga seotud parameetrid, mis tuleb määrata "parimas kooskõlas" eksperimendiga. Kui eksperimentaalsed mõõtmised (katsepunktid) on antud vektoritena X ja Y, siis vähimruutude mõttes parima lähendussirge tõusu a tagastab slope(X,Y), algordinaadi b aga intercept(X,Y). Mõlemad parameetrid korraga tagastab line(X,Y).

Interpoleerimine

Kuna mistahes eksperimentaalne sõltuvus (antud andmevektoritega X ja Y) võetakse paratamatult üles lõpliku sammuga, võib tekkida vajadus mõõdetava suuruse väärtuse hindamiseks ka katsepunktide vahel. Juhul kui teoreetiline sõltuvus x ja y vahel on teada (ja piisavalt lihtne), kasutatakse funktsiooni sobitamist nagu kirjeldatud eelpool lineaarse sõltuvuse näitel. Vastasel korral kasutatakse interpoleerimist, st konstrueeritakse katsepunkte ühendav (võimalikult sile) kõver, millel füüsikalist põhjendust ei pruugi olla.

Kõige lihtsam on olukord juhul, kui katsepunktid paiknevad tihedalt või on üsna suure müraga. Sel juhul on õigustatud lineaarne interpolatsioon, st naabersõlmed ühendatakse sirgjoonega. Olgu märgitud, et interpoleerimisalgoritmid eeldavad lähteandmete sorteeritust x väärtuste järgi. Selle probleemi lahendamiseks võib kasutada, olenevalt olukorrast, kas funktsiooni reverse või csort.Mathcad'is saab lineaarselt interpoleeritud y-väärtuse kohal x leida avaldisega linterp(X,Y,x).

Vastupidisel juhul, kui katseandmed on antud võrdlemisi hõredalt kuid samas nende määramatus e. müra on piisavalt väike, kasutatakse katsepunkte läbiva sileda kõvera konstrueerimiseks enamasti kuupsplaini. Viimane koosneb tükati kuuppolünoomidest, mis on sõlmpunktides võimalikult siledalt kokku seotud (matemaatilistes terminites: esimene ja teine tuletis on sõlmpunktides pidevad). Esmalt tuleb tekitada vektor V, mis sisaldab splaini teise tuletise väärtusi sõlmpunktides. Selleks saab kasutada ühte kolmest funktsioonist: lspline(X,Y), pspline(X,Y) või cspline(X,Y). Nimetatud funktsiooni valik määrab, kas splain on otspunktides lineaarne, parabool või kuupparabool, st põhiliselt mõjutab see ekstrapolatsiooni iseloomu. Seejärel interpoleerimine ise toimub avaldisega interp(V,X,Y,x), mis arvutab interpoleeritud y-väärtuse kohal x.

Täiendavad infoallikaid

Täienduseks eelnevale infole võib soovitada Toomas Planki videoloengut, mis annab ekraanivisiooni vormis algteadmised Mathcad'is toimetamise kohta. Käesolevale lisaks leidub ka rida teisi eestikeelseid konspekte (nt siin ja siin). Sirvida tasub ressursikeskuse töölehti, kus saab kohe katsetada "elavate" näidetega (Help menüüst Tutorials, QuickSheets). Põhjalikult lahti kirjutatud ülevaate annab Mathcad'iga kaasa tulev "Mathcad User's Guide" (leitav Mathcad'i kataloogi alamkaustast "doc"). Konkreetsemate probleemidega (nt teada saamaks, milliseid parameetreid tuleb mingile funktsioonile "ette sööta" vms) võib pöörduda juba abiinfo poole (HelpMathcad help). Mathcad-i abiinfosüsteem on üsna hästi indekseeritud, mistõttu sobilike märksõnadega leiab kergesti vahendid spetsiifiliste ülesannete lahendamiseks. Kui miski muu ei aita, võib abi otsida Mathcad'i kasutajate foorumist.