Programski alati za matematicko modeliranje by CBnfls

VIEWS: 83 PAGES: 39

									Programski alati za matematičko modeliranje   1


          FORTRAN
          BASIC
          EXCEL
          PASCAL
          C++
          JAVA
          MATLAB
          W.R. Mathematica
          GPSS
          ...
            Pristup programiranju       2




1.) ALGORITAMSKI PRISTUP

  FORTRAN
  QBASIC                       dio
                           računalnih
    MATLAB                   vježbi
2.) OBJEKTNI PRISTUP
     PASCAL
   VBASIC
   C++
   JAVA
            Pristup programiranju   3




1.) ALGORITAMSKI PRISTUP
2.) OBJEKTNI PRISTUP
               ALGORITAMSKI PRISTUP                         4

Matematički algoritam:
Niz matematičkih operacija kojima se od početnih podataka
dolazi do rješenja nekog zadatka.
Računalni algoritam:
Niz programskih naredbi kojima se od početnih podataka dolazi
do rješenja nekog zadatka.

 Primjer: rješenje kvadratne jednadžbe
                             ulazni podaci: a,b,c
potprogram
“subroutine”           Algoritam
“procedure”
                              izlazni podaci: x1 , x2
Struktura algoritamskog programa   5


    GLAVNI PROGRAM
   Podaci i parametri modela
        baza podataka
       regresijski modeli

   Rješavanje jednadžbi modela
            bilance
       numeričke metode

       Statistička analiza
       analiza varijance
            grafika
              Značajke algoritamskih programa                    6
Kod algoritamskog pristupa programiranju podaci i metode se
povezuju u cjelinu na osnovu logičnog slijeda koji određuje
postupak računanja.
Na primjer: prvo podaci, zatim definicije funkcije modela, primjena
numeričke metode, grafički prikaz rezultata, analiza varijance,
pisanje izvješća, itd….
Algoritamski pristup programiranju je najbliži uobičajenom
inženjerskom pristupu rješavanja problema. Program se izvodi od
“vrha” prema “dnu”
Dobra značajka algoritamskih programa je modularnost algoritama
koja omogučava jednostavnost primjene, modifikaciju modula,
unapređenje itd..
Negativna značajka je nestrukturiranost podataka koja ne
omogućava jednostavnost za njihovu nadogradnju.
                  Objektno programiranje ( OOP )                      7

Osnovna misao kod objektnog programiranja je povezivanje
podataka i metoda u objekte.
Objekti mogu biti fizički, npr. tehnološke jedinice, ili računarski
objekti kao što su datoteke, slike, tekst itd..
                                                P2
Primjer objekta: pumpa            P 1




Podaci o pumpama su u klasi PUMPA
varijable: Qmin , Qmax, , tlak P1 , P2
metode : uključeno, isključeno
parametri: gustoća, viskoznost, temperatura kapljevine
                          Značajke OOP                              8


Podaci i metode čine cjelinu koju nazivamo objekt.
Objekti su svrstani u klase.
Klase se svrstavaju u više klase i time program ima hijerarhijsku
organizaciju, od cjeline do detalja.
Složeni objekti se tvore iz jednostavnih objekata operacijom
nasljeđivanja značajki nižih objekata.
Objekti mogu imati generičke i višestruke značajke (polimorfnost)
koja omogućuje jednostavno definiranje specifičnih tipova objekata.

Objekti sadrže (encapsulate) metode kojima se njima manipulira.
Objekti se lagano povezuju u nove programe, i prenose iz jednog
programa u drugi.
                 Osnove programiranja u QBASIC-u                   9
QBASIC je algoritamski računalni jezik koji omogućava složenu
primjenu potprograma (subroutine), ima bogatu bazu numeričkih i
statističkih funkcija, omogućava rad s vektorima, matricama,
tekstom, i brojne grafičke funkcije za prikaze rezultata i podataka.
Omogućava strukturno programiranje ali nema mogućnosti
strukturiranja podataka.
Program ima izgled teksta koji se sastoji iz slova engleske abecede,
brojeva, i posebnih znakova, npr:   *,+ - / “ itd..
Program se satoji od varijabli opisanih riječima i
brojeva.Brojevi se pridružuju varijablama s znakom             =
 protok = 16.7

          pridruživanje
Smisao pridruživanja:                                       10

Nazivu varijable je dodjeljena (pridružena znakom = )
lokacija u memoriji računala, a na lokaciji je pohranjena
vrijednost varijable.


                                             memorija
                                             matrica lokacija
                       16.7


                                             adresa
                                             lokacije je:
   sadržaj lokacije                          protok
   je 16.7
                    Primjer pridruživanja                       11

A = 3.5
A=A+ 2
Koja je vrijednost pohranjena u memorijskoj lokaciji s
adresom A ?
Odgovor: 5.5
ili
A=5.5


Pridruživanje je s lijeva na desno. Izraz na desnoj strani se
izračuna i pridružuje imenu varijable na lijevoj strani!
Programska naredba: A+B = 10 nema smisla
                                            12

             Izgled osnovnog izbornika


A=4
B=2
C=A*B
                    Operacije s programom
                    biramo iz izbornika

Ovdje pišemo programske naredbe
                   Operacije s programom                       13
Operacije za manipuliranje s programom izvode se aktiviranjem
pojedine funkcije iz izbornika.
Najčešće operacije su:

RUN          za izvršenje programa

SAVE          za pohranu programa

EDIT          za upis naredbi i ispravljanje teksta programa

OPEN         za otvaranje postojećeg programa

NEW          za početak pisanja novog programa

HELP         za pomoć
………. i.t.d. …. vježbati s programom!
                       Matematičke operacije                        14


      +   zbrajanje

      -   oduzimanje

      *   množenje

      /   dijeljenje

Poredak izvođenja matematičkih operacija je isti kao u matematici.
Poredak se mijenja uporabom zagrada. Postoje samo okrugle
zagrade ( ), a može ih se više kombinirati u matematičkom izrazu.
      Logički operatori   15




<>   različito

>
<
<=
>=
              Matematičke funkcije              16


Neke od mnogobrojnih matematičkih funkcija su
SQR(x)
LOG(x)
SIN(x)
COS(x)
TAN(x)
ABS(x)
                     Programske naredbe   17



Neke od najčešćih naredbi su:
READ         čitaj
PRINT        piši
DATA        podatak
IF          ako
THEN         tada
ELSE         drugo
END          kraj
vježbati s programom !!!
                                                                  18
                   Prikaz izvođenja programa
                       “ FLOW CHART”

Organizacija i tijek programa može se prikazati grafički s nekoliko
osnovnih grafičkih elemenata (flow chart).
Objektno i strukturno programiranje zatno pojednostavljuju
“koncipiranje” programa i eliminiraju potrebu za složenim
grafičkim prikazima.
Grafički prikazi izvođenja programa su pomoć u radu i preporučuju
se početnike u programiranju.
Elementi grafičkog prikaza programa            19

          smjer prijenosa informacije


          unos ( čitanje) podataka

          izlaz (pisanje) podataka


          pridruživanje podataka i varijabli



           logičko ispitivanje tvrdnje


           kraj
                      Primjer programa                      20


Zadatak: Napišite program za proračun protoka za izmjerni
pad tlaka na suženju.

                                    P  P2
                     Q    A0     1
                                      


 Zadani su slijedeći podaci:
  = 0,75
 R = 0,125
 P1 = 250 000   P2 = 210 000
  = 1520
                    21
 “Flow chart” za
računanje protoka


      čitaj
  alfa = 0.75
  R = 0.125
  P1 = 250 000
  P2 = 210 000
  ro = 1520



   A=3.14*R^2
              PROGRAMSKE STRUKTURE                   22



1. Linijski niz naredbi


2. Program s granama i povratnim tokom (petljom)


3. Struktura s potprogramima ( vektori i matrice )
            Dijagram toka programskih struktura   23


                     GRANE




                      PETLJA
Linijska struktura
Struktura s potprogramima                 24

 call
                  potprogram
                        1

        return



                    potprogram
                            2



                            paket potprograma
         GLAVNI
         PROGRAM
               VEKTORI I MATRICE                25


a = ( a1 ,a2 , a3 ……an )T
ai u QBASIC-u se piše kao a(i)


 a = ( 2 ,-1.5 , 3.1 ……7.4 )T

                   matrica Ai,j je u QBASIC-u
 u QBASIC-u je
 a(1) = 2
                   A(i,j)

 a(2) = -1.5
 a(3) = 3.1
 ……….
                 Primjer: srednja vrijednost        26


Rezultati mjerenja veličine x su:
4.3, 5.1, 4.8, 4.9, 5.2, 4.85, 5.01, 4.95


Prvo ćemo napisati grafički prikaz tijeka naredbi
a zatim program u QBASIC-u
              čitaj N                                  27
                 i=1
             čitaj x(i)

                 ako
                 i=N                i     i+1
            da            ne
petlja       suma=0
“loop”       i=1

         suma=suma+x(i)
             i   i+1
                               ne
                 ako
                 i=N                    ii+1
            da

         srednjix = suma/N                      kraj
                 Programiranje petlje                    28
                                   i=1


                             naredbe koje se
                             ponavljaju


For i = 1 TO N STEP korak
                                              ne
                                  ako
naredba1                                           i=i+korak
                                  i=N
naredba2
NEXT i                                   da

              učitati program srednjiX
            W.R. Mathematica srednjiX              29




     8 @8< <
        D
Npodataka = 8;
x=
        D
       @D
       @D
     4.3, 5.1, 4.8, 4.9, 5.2, 4.85, 5.01, 4.95 ;


     @
srednjiX = Sum x     i   , i, 8
Print "srednji x= ", srednjiX
                                    Npodataka;




srednji x= 4.88875
           Kvadratna jednadžba                 30

       Zadatak: riješite kvadratnu jednadžbu
                        a*x2+b*x+c=0


Rješenje može biti:
1) realna i različita
2) realna i identična
3) konjugirano kompleksna


Rješenje zavisi od diskriminante D=b2-4*a*c
                        Dijagram toka                           31
                         čitaj a,b,c

                           D=b2-4*a*c

                      ne                 da
                           ako D>0            x1=(-b+sqr(D))/(2a)
            ako D<0
   ne
                                              x2=(-b-sqr(D))/(2a)
                 da
                       realx= -b/(2a)              piši x1,x2
x1=x2=-b/(2a)         imx=sqr(-D)/(2a)
                                                     kraj
  piši x1,x2          piši realx,imx


     kraj                  kraj     učitaj program kvadj.bas
          W.R. Mathematica kvadratna jednadžba                        32

a = 2;
b = 3;


     @D
      @D@
c = 10;


      @@ @
Clear x, R


     @ DD D
          D
          D
R = x . Solve a * x^ 2 + b * x + c = = 0, x ;




      I I
Print "rješenje1= ", R           1   ,"   rješenje2= ", R        2



        M
rješenje1=M  1
             4
                 -   3- I   71       rješenje2=
                                                  1
                                                  4
                                                      -   3+ I   71
                    Vektori i matrice   33


vektor a= (a1,a2,………….an)T
QBASIC A(i)         A(1)a1

             a11 a12    a1m 
                              
             a21 a22
matrica A  
                         a2 m 
                       
                              
            a           anm 
             n1 an 2          

 QBASIC A(i,j)  ai,j
 Potprogrami       “subroutine”, “procedure”,   ”function” 34

glavni program                        potprogram

    unos podataka


                                          potprogram
    blok naredbi
                                            lokalne
                                           varijable

    blok naredbi



        kraj
                        Primjer: norma vektora                 35
Zadatak: odrediti norme vektora

a = ( 1, -2, 2.5, 4)T      b= (-3 ,2 , 1) T
                                                       X
          čitaj a
                                                 norma
       poziv norma                                     iN
                                                 
      piši norma(a)
                                                 x     xi2
                                                       i 1


          čitaj b
                                                       ||X||

       poziv norma
       piši norma(b)
                                 učitaj program norma.bas
           kraj
                Potprogrami iz linearne algebre         36



množenje vektora           VEKTMNOZ(N,a(),b(),p
zbrajanje matrica          MATZBROJ(N,M,A(),B(),C())
množenje matrica           MATMNOZ(N,P,M,A(),B(),C())
rješavanje sustava         GAUSL(N,NS,A())
linearnih jednadžbi
                       Potprogram GAUSL                                    37

                     NS sustava s N nepoznanica

 a11 a12    a1n   x11    x12   x1ns   a1,n 1 a1,n 2     a1,n  ns 
                                                                       
 a21 a22    a2 n   x21   x22  x2 ns   a2,n 1 a2,n 2     a2,n ns 
                                                   
                                                                       
a           ann   xn1    xn 2  xnns   an,n 1 an,n  2    an,n  ns 
 n1 an 2                                                               



                A=




                             Vježbe    !!!
W.R. Mathematica : vektori i matrice             38


                   8<
    Skalarno množenje dva vektora
              A=
              B=   8<  1, 2, - 3 ;
                       -   2, 1, 4 ;
              p = A. B

              -   12




    8< 8 <
    8< < <
    8
   A=
   B=
      8           Množenje matrica
         1, - 1, 2 , 0, 4, - 3 , 1, 1, - 2
        2, - 1, 1 ;
                                             ;




    8<
   P = A. B

     5, - 7, - 1
         Rješavanje sustava linearnih jednadžbi   39




 8< 8 <
   8
 8< < <
 8@
A=
                       A*x=B
          2, 1, 1 , - 1, 2, 1 , 3, 2, - 1     ;
B=
  D   1, 2, - 1 ;
x = Inverse A . B



: >
A.x - B
     3        5        15


8<
 -        ,        ,
     14       14       14

 0, 0, 0

								
To top