Nje Hyrje Ne Matlab

169
Gentian Zavalani MAJ 3, 2014

description

Ky material eshte punuar kur autori ishte student ne Inxhinirei Matematike, ne kete material jepet nje hyrje elementare (ne Matlab) duke u fokusuar me shume ne pjesen aplikative. MATLAB është një gjuhë programimi e ndërtuar nga Math Works. Ai filloi si një gjuhë programimi matricore për kryerjen e veprimeve të algjebrës lineare , ndërsa sot ai është kthyer në një nga platformat më të fuqishme për kryerjen e veprimeve matematikore. Në këtë libër bëhet një hyrje e lehtë në gjuhën programuse të Matlab-it. Ky libër është dizenjuar në mënyrë të tillë që ti japë lexuesit aftësi programuese në mjedisin Matlab. Pjesa e problemave të cilat shërbejnë si shembuj në këtë tekstë janë dhënë në mënyrën më të thjeshtë për ta bëre mësimin sa më të shpej të dhe të efektshëm.Ky libër është përgatitur për fillestarët duke i ndimuar ata që të kuptojnë nga funksionet baze të Matlab-it duke prekur disi edhe funksionet e avancuar . Pas mbarimit të këtij libri ju do ta gjeni veten në një nivel mesatar drejt rrugës tuaj për tu bër një ekspert në përdorimin e Matlab-it

Transcript of Nje Hyrje Ne Matlab

Gentian Zavalani

MAJ 3, 2014

To my family, for their constant support

Pasqyra e lëndës

1. Hyrje………………………………………………………………………………….

2. Kryerja e llogaritjeve në Matlab………………………………………………………

2.1 Vektorët dhe Matricat

2.2 Funksionet Matricore

2.3 Funksionet analizues së të dhënave

2.4 Polinomet

2.5 Ndërtimi i numrave kompleks

2.6 Ekuacionet algjebrike jolineare

2.7 Zgjidhja e ekuacioneve difernciale

2.8 Derivimi

2.9 Integrimi

2.10 Limiti

2.11 Shuma dhe prodhimi

2.12 Seritë e Tejlorit

3 Programim në Matlab…………………………………………………………………..

3.1"Script file"

3.2 Funksion file

3.3 Nënfunksionet

3.4 INPUT/OUTPUT

3.5 Manipulimi i skedarve

3.6 Struktura e Programimit

4 Paraqitja Grafike në Matlab…………………………………………………………………..

4.1Grafike dy-dimensional

4.1.1 Ndërtimi parametrik

4.1.2 Ndërtimi konturor dhe implicit

4.2 Fusha vektoriale

4.3 Grafike tre-dimensional

4.3.1 Vija në hapsirën tre-dimensionale

4.3.2 Sipërfaqet në hapsirën tre-dimensionale

4.4 Efekte të vecanta

4.4.1 Animime

5 Analiza e qarqeve elektike …………………………………………………………………..

5.1Qarku RC

5.2 Qarku RL

5.3 Qarku RLC

5.4 Funksionet ode

6 Aplikime………………………………………………………………………………………..

6.1Ndricimi i dhomës

6.2 Simulimi Monte Karlo

6.3 Dinamika e popullimeve

6.3.1Rritja dhe rrënia eksponenciale

6.3.2 Rritja Logjistike

6.3.4 Simulimi i mdoelit logjistik

6.4 Modelet Lineare Ekonomike 6.5 Programim linear

6.6 Lavjersi 0360

6.7 Zgjjidhja numerike e ekuacionit të përcueshmërisë

6.7.1Zgjidhja me metodën e diferencave të fundme

6.7.2Zgjidhja e Simuluar

………………………………………………………………………………………………………

Kapitulli 1

HYRJE

MATLAB është një gjuhë programimi e ndërtuar nga MathWorks. Ai filloi si një gjuhë

programimi matricore për kryerjen e veprimeve të algjebrës lineare , ndërsa sot ai është kthyer

në një nga platformat më të fuqishme për kryerjen e veprimeve matematikore. Në këtë libër

bëhet një hyrje e lehtë në gjuhën programuse të Matlab-it. Ky libër është dizenjuar në mënyrë të

tillë që ti japë lexuesit aftësi programuese në mjedisin Matlab. Pjesa e problemave të cilat

shërbejnë si shembuj në këtë tekstë janë dhënë në mënyrën më të thjeshtë për ta bëre mësimin sa

më të shpejtë dhe të efektshëm. Ky libër është përgatitur për fillestarët duke i ndimuar ata që të

kuptojnë nga funksionet baze të Matlab-it duke prekur disi edhe funksionet e avancuar . Pas

mbarimit të këtij libri ju do ta gjeni veten në një nivel mesatar drejt rrugës tuaj për tu bër një

ekspert në përdorimin e Matlab-it.

Domosdoshmëri

Në këtë tekst supozohet se ju keni pak njohuri nga fusha e nje gjuhe programimi dhe kuptoni

konceptet bazë si variabla, konstante, shprehje etj. Nese ju keni mësuar programim në ndonjë

gjuhët tjetër programimi si C,C++ ose Java , atëherë mësimi i Matlab-it do të jetë shumë

argëtues

MATLAB(matrix laboratory) është një gjuhë programim e nivelit të lartë dhe një

mjedis interaktivë për llogaritje numerike ,vizualime dhe programim. Matlab është një gjuhë

programimi e ndërtuar nga MathWorks.

Ai lejon manipulime matricore; ndërtimin e grafikve për funksione dhe të dhëna të tipeve të

ndryshme; implementimin e algoritmave ; ndërthurje me programe të shkruar në gjuhë të tjera

programimi si C, C++ , Java dhe Fortan; analizë të dhënash, ndërtim algoritmesh, si dhe krijimin

e aplikacioneve të ndryshme.

Matlab ofron një ambjent të përshtatshëm për ndërtimin e funksioneve (funksione matematikore)

të cilat ju ndimojn në llogaritjet të ndryshme, gjenerim të grafikeve si dhe në punimet me metoda

numerike,

Ai është përdorur dhe vazhdon të përdoret në cdo aspekt të matematikës llogaritse. Më poshtë

jepen disa nga shembujt llogaritës matematikore ku Matlab përdoret më së shumti.

Punimi me matrica dhe vektorë

Ndërtimi i grafikve 2-D dhe 3-D

Algjebra lineare

Ekuacionet Algjebrike

Funksionet jo lineare

Statistikë

Analizë të dhënash

Ekuacionet Diferenciale

Llogaritje Numerike

Integrim

Transformime

Përdoreusit e Matlabit

Matlab është gjerësisht i përdorur si një mjet llogaritës në inxhinieri dhe fusha të ndryshme të

shkencës, si në matematikë fizikë, kimi etj. Përdorimet e Matlab-it përfshijnë

Përpunim sinjalesh dhe Komunkim

Përpunim imazhi dhe video

Kontrolle sistemesh

Matje dhe testime

Finance kompjuterike

Biologji kompjuterike

Kuptimi i mjedisit matlab

Ju mund ta startoni Matlab-in pas instalimit direkt nga ikona e krujuar në destkopin e

kompjuterit. Dritarja kryesore e punës në Matlab njihet me emrin destkop. Kur ju startoni

Matlab-in destkopi shfaqet në formën standarte

Destkopi ka në përberje disa panele

Current Folder- Ky panel ju jep aksese mbi projekte që ju punoni/ose jeni duke punuar

në Matlab

Command Window- Kjo është pjesa më e rëndësishëme e matlabit ku ju thërrisni

komanda të ndryshme të drejtuara nga simboli (>>)

Workspace- Ky panel tregon të gjitha variablat qe ju keni krijuar dhe/ose importuar nga

file të ndryshme

Command History – Ky panel tegon komandat që ju keni thirrur në Command Window

Sintaksa Bazë

Mjedisi MATLAB sillet si një makinë llogaritëse super-komplekse. Ju mund të shkruani

komandën në (>>) dhe ai e interpreton atë. Me fjalë të tjera, ju jepni një komandë dhe Matlab

ekzekuton atë menjëherë.

Praktikimi :

Mund të shkruani një shprehje, si për shembull,

Dhe shtyp Enter

Kur ju klikoni butonin ekzekutoj, ose shtypni Ctrl + E, Matlab ekzekuton atë menjëherë dhe

rezultati i kthyer është:

Le të marrim disa shembuj:

Kur ju klikoni butonin ekzekutoj, ose shtypni Ctrl + E, Matlab ekzekuton atë menjëherë dhe

rezultati i kthyer është

Një shembull tjeter,

Kur ju klikoni butonin ekzekutoj, ose shtypni Ctrl + E, Matlab ekzekuton atë menjëherë dhe

rezultati i kthyer është

Një shembull tjetër,

Kur ju klikoni butonin ekzekutoj, ose shtypni Ctrl + E, Matlab ekzekuton atë menjëherë dhe

rezultati i kthyer është

Pikëpresje (;) tregon fundin e shprehjes. Megjithatë, në qoftë se ju doni të mos shfaqni rezultatet

për një veprim të kryer atëherë shtoni një pikëpresje pas shprehjes (veprimit).Për shembull

Kur ju klikoni butonin ekzekutoj, ose shtypni Ctrl + E, Matlab ekzekuton atë menjëherë dhe

rezultati i kthyer është

Shtimi i komenteve

Simboli perqindje (%) ne matlab përdoret për të treguar një linjë komenti. Për shembull

Operacionet më të përdorshme dhe karakteret e veçanta

Operatoret Shpjegimet

+

-

*

.*

^

.^

/

\

./

.\

Plus; operator mbledhje

Minus; operator zbritje

Operator i shumezimit skalar dhe matricor

Operator i shumëzimt element për element

Operatori i ngritjes në fuqi për skalar dhe matrica

Operator i ngritjes në fuqi element për element

Operatori i pjestimit nga e djthta

Operatori i pjestimit nga e majta

Operatori i pjestimit nga e djthta element për element Operatori i pjestimit nga e majta element për element

Variabëlat e veçanta dhe Konstantet

Simboli Shpjegimet

Ans

i,j

inf

NaN

Pi

Përgjigja më e fundit

Njësia imagjinare .

Infinit.

Rezultat numerike i papërcaktuar (nuk është numër).

Numri π

Variabëlat

Në mjedisin Matlab, çdo variabël është një vektor apo matricë

Përcaktimi i një variabëli në ambjentin matlab mund të bëhet në disa mënyra . Për shembull,

Matlab do të ekzekutojë shprehjen e mësipërme dhe do të kthejë rezultatin si më poshtme:

Ajo krijon një matricë me permasa 1x1 me emrin x dhe ruan vlerën 3 në elementet e saj. Le të

shikojmë një shembull tjetër,

Matlab do të ekzekutoj shprehjen e mësipërme dhe do të kthejë rezultatin si më poshtë:

Theksohet se:

Ju mund ti referoheni nje variabële ne detyra të ndryshme, pasi ajo variabël është futur

në sistem,

Variabëlat duhet të kenë vlera para se të përdoren.

Kur një shprehje kthen një rezultat që nuk është përcaktuar në lidhje me ndonjë variabël

, sistemi e cakton atë në një variabël me emrin ans, e cila mund të përdoret më vonë.

Për shembull,

Matlab do të kthejë rezultatin si më poshtë:

Ju mund të referoheni variabëlit ans për veprime të mëtejshëme

Matlab do të kthejë rezultatin e mëposhtme:

Kapitulli 2

KRYERJA E LLOGARITJEVE NE MATLAB

2.1 Vektorët dhe Matricat

Në këtë pjesë do të trajtojmë një përmbledhje të komandave më të dobishme në MATLAB të

cilat mund të përdoren gjatë programimit të metodave të ndryshme. Percaktimi i një matrice në

matlab bëhet sipas komandës së mëposhtëme

[1,2,3;4,5,6;7, 1,7]A

pas ekzekutimit rezultati që do të përftojmë do të na shfaqet si më poshtë

1 2 3

4 5 6

7 1 7

A

Pra matrica futet në matlab rresht për rresht ku secili rreshte ndahet nëpërmjet simbolit (;),

brënda rreshtit elementët janë të ndarë me presje (,) ose me hapsirë . Komandat dhe variablat të

përdorura në Matlab janë mjaftë të ndjeshme. Kjo do të thotë që shkronjat e vogla janë të

ndryshme nga ato të mëdha. Përmasat e një matrice kontrollohen nëpërmjet komandës

( )size A

3ans 3

Matrica e traspozuar: Për të gjetur matricen e traspozuar përdorim komandën

'A

Rezultati është:

1 4 7

2 5 1

3 6 7

A

Komponentet e rreshtave dhe shtyllave: Matlabi jep mundësin e përdorimit të operatorve të

rreshtave dhe shtyllave në një matricë. Kështu duke përdorur shprehjen e mëposhtëme

(:,3)A

marrim rezultatin

3

6

7

A

e cila është shtylla e tretë e matricës A. Duke vazhduar ne këtë mënyrë

(1,:)A

marrim si rezultat rreshtin e parë të matricës A.

1 2 3A

Gjithashtu mund të provojmë

(1,:) (:,3)A A

8 1 10ans

Le të përcaktojmë një matricë tjetër në Matlab por ndryshe nga e para

[1,5,6;2,4,6;3,7,9];B

pas ekzekutimit në ekran nuk do të shfaqet asnjë rezultat. Matlabi nuk shfaqë asnjë rezultat në

ekran kur një veprim shoqerohet në fund me simbolin (;)

për të kontrolluar matricën B mjafton të përdorim komandën

B

duke dhënë si rezultat matricën B

1 5 6

2 4 6

3 7 9

B

Mbledhja e matricave: Mbledhja e matricave në Matlab kryhet shumë thjeshtë

C A B

duke përcaktuar një matricë të re si shumë të dy matricave A dhe B

2 7 9

6 9 12

10 6 16

C

Zbritja e matricave: Për të përcaktuar diferencën e matricës A me matricën B, përdorim

shprehjen e mëposhtëme

D A B

Rezultati i së cilës është një matricë e re D si diferencë e matricës A me atë B

0 3 3

2 1 0

4 8 2

D

Shumëzimi i matricave: Në mënyrë të ngjashme shumëzimi i matricave kryhet si

*E A B

14 34 45

32 82 108

26 80 99

E

2.2 Funksionet Matricore

Manipulimi i matricave është celsi i funksioneve të Matlabit. Matlabi është mjeti më i dobishëm

për manipulimet e matricave dhe vektorve .Një pjesë të komandave për funksionet matricore janë

përmbledhur në tabelën e mëposhtëme 2.2.1. Ku secili prej funksioneve shpjegohet nëpërmjet

shembujve.

Tabela 2.2.1

Simboli Shpjegimet

inv

det

rank

cond

eye(n)

trace

zeros(n,m)

Matrica inverse

Përcaktori i një matrice

Rangu i një matrice

Numri i kushtëzuar i një matrice

Matrica identike me përmasa n*n

Shuma e elementëe të diagonales së një matrice

Matrica me përmasa n*m me element zero

Matrica inverse: Gjetja e matricës inverse për një matricë të dhënë A si më poshtë

[1,2,3;4,5,6;7, 1,7]A

( )inv A

ans=

-0.8542 0.3542 0.0625

-0.2917 0.2917 -0.1250

0.8125 -0.3125 0.0625

Për të verifikuar rezultatin përdorim komandën

* ( )A inv A

rezultati është një matricë identike me përmasa 3*3

1.0000 0 -0.0000

0 1.0000 -0.0000

0 0.0000 1.0000

ans

Përcaktori i një matrice :

det( )d A

komandë e cila prodhon si rezultat përcaktorin e matricës A

-48d

Rangu i një matrice: Rangu i një matrice është numri i rreshtave ose shtyllave të pavarura

( )rank A

3ans

Matrica identike

(3)eye

1 0 0

0 1 0

0 0 1

ans

Kjo komand është mjaftë e dobishëme në inicializimin e një matrice.

Matrica me numra të rastit: Nje matrice me numra rasiti mund të gjenerohet shumë lehtë në

matlab nëpërmjet përdorimit të komandës

(3,3)rand

Rezultati i së cilës është

0.8147 0.9134 0.2785

0.9058 0.6324 0.5469

0.1270 0.0975 0.9575

ans

Shuma e elementëve të diagonales së një matrice: Për të gjetur shumën e elmentëve të

diagonales së një matrice në matlab përdoret operatori trace

Për shumbull

[1,2,3;4,5,6;7, 1,7]A

( )trace A

ans =

13

Komanda ( )trace A jep si rezultat numrin 13 i cili është shuma e elementëve te diagonales së

matricës A.

Matrica me zero: Për të ndërtuar një matricë me përmasa m*n elementët e së cilës janë zero

përdoret komanda zeros

Për shembull

(5,4)zeros

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

ans

Numri i kushtëzuar i një matrice :Komanda ( )cond A përdoret për të llogaritur numrin e

kushtëzimit të një matrice

Për shembull numri i kuzhtëzimit të një matrice njësi është 1

( (3))cond eye

1

ans

Funksione të tjera matricore janë paraqitur në tabelën 2.2.2. Lexuesi mund të konsultohet me

referencat e matlabit ose me përdorimin e komandes help kur deshironë të njohë funksione të

tjera të matlabit.

Tabela 2.2.2

Simboli Shpjegimet

Expm

eig

lu

qr

svd

Matrica eksponenciale

Vlerat/vektorët e vetë të matricës

Faktorizimi LU i një matrice

Faktorizimi QR i një matrice

Vlera e veteme e faktorizimit të matricës

Matrica eksponenciale: expm( )A jep si rezultat eksponencialin e matrice A.

(3,3)A rand

0.8147 0.9134 0.2785

0.9058 0.6324 0.5469

0.1270 0.0975 0.9575

A

expm( )A

3.2881 2.2290 1.3802

2.2617 2.8712 1.7128

0.4615 0.3910 2.7554

ans

Vlerat e veta: Vlerat e veta të një matrice përkufizohe si

A

Ku janë vlerat vetijake të matricës A, ndërsa është vektori i vetë shoqerues.

( )e eig A

ose

[ , ] ( )V D eig A

duke dhënë si rezultat matricën V, shtyllat e së cilës janë vektorët e vetë , dhe matricën

diagonale D elementët e së cilës janë vlerat e veta te matricës A.

Për shembull

[1,2,3;4,5,6;7, 1,7]A

[ , ] ( )V D eig A

-0.7613 0.3334 -0.2711

-0.1250 0.8122 -0.9037

0.6363 0.4787 0.3314

V

-1.1789 0 0

0 10.1789 0

0 0 4.0000

D

Faktorizimi LU i një matrice: Komanda e faktorizimi LU të një matrice përdoret për ta

faktorizuar matricen si kombinim i një matrice trekëndëshe të sipërme me një matricë

trekëndëshe të poshtëme

[1,3,5;2,4,8;4,7,3]A

1 3 5

2 4 8

4 7 3

A

[ , ] ( )L U lu A

0.2500 1.0000 0

0.5000 0.4000 1.0000

1.0000 0 0

L

4.0000 7.0000 3.0000

0 1.2500 4.2500

0 0 4.8000

U

Për të kontrolluar rezultatin ,shkruajmë

*L U

1 3 5

2 4 8

4 7 3

ans

Matrica trekëndëshe e poshtëme nuk është perfekte trekëndëshe . Matlabi disponone një

komandë tjetër

[ , , ] ( )L U P lu A

1.0000 0 0

0.2500 1.0000 0

0.5000 0.4000 1.0000

L

4.0000 7.0000 3.0000

0 1.2500 4.2500

0 0 4.8000

U

0 0 1

1 0 0

0 1 0

P

Ku matrica P quhet matricë e permutimeve.

Vlera e vetme e faktorizimit: Komanda svd përdoret për të gjetur vlerën e veteme të

faktorizimit të një matrice. Për një matricë të dhënë

'A U V

ku është një matricë diagonale me vlera jo negative .Për shembull në se kemi përcaktuar një

matricë A të formës

[1,2,3;4,5,6;7, 1,7]A

[ , , ] ( )U sigma V svd A

-0.2600 -0.3110 -0.9141

-0.6338 -0.6592 0.4046

-0.7285 0.6846 -0.0257

U

12.8388 0 0

0 4.9595 0

0 0 0.7538

sigma

-0.6149 0.3719 0.6954

-0.2306 -0.9281 0.2924

-0.7541 -0.0194 -0.6564

V

Faktorizimi QR: Një matricë mund të faktoriziohet si kombinim i një matrice ortgonale dhe një

matrice trekëndëshe të sipërme. Me fjale të tjerea

A QR

Faktorizimi QR ka një aplikim të gjërë në analizën e matricave. Për shembull

[1,2,3;4,5,6;7, 1,7]A

[ , ] ( )Q R qr A

-0.2182 0.9117 0.3482

-0.4364 0.2279 -0.8704

-0.8729 -0.3419 0.3482

Q

-4.5826 -8.5105 -7.2012

0 1.2536 5.3561

0 0 -4.1779

R

Zgjidhja e ekuacioneve lineare: Zgjidhja e sistemeve lineare të ekaucioneve është mjaftë e

rëndësishme në disiplina të ndryshme të matematikës. Forma tipike e një sistemi linear algjebrik

ekuacionesh është:

Ax y

zgjidhja e së cilit merret në formën

( )*x inv A y

ose duke përdorur simbolin "\"

\x A y

2.3 Funksionet analizues së të dhënave

Më sipër diskutuam një pjesë prej funksioneve matricore dhe operatorve të matlabit. Gjithashtu

matlabi përmbanë një gamë të gjërë funksionesh analizuse për një vektor ose shtyllën e një

matrice . Ne tabelen 2.3.1 janë listuar disa operatorë për manipulimin e të dhënave.

Tabela 2.3.1

Simboli Shpjegimet

min(max)

sum

std

sort

mean

Minimumi(maksimumi) i një vektori

Shuma e elementëve të një vektori

Devijimi standart i të dhënave të mbledhura

Rendit elementet e një vektori

Llogarit mesatren e vlerave të një vektori

Minimumi(maksimumi): Komanda min(max) gjenë vlerën minimale (maksimale) të një

vektori. Për shembull

[1,3,4,7,9]v

min( )v

1

ans

max( )v

9

ans

Shuma e elementëve të një vektori: Komanda sum gjënë shumën e elementëve të një vektori.

Për shembull

[1,3,4,7,9]v

( )sum v

24

ans

Devijimi standart: Komanda std llogarit devijimin standart për një vektor të dhënë .

Për shembull

( )std v

3.1937

ans

Rendit e një vektori: Komanda sort rendit elementët e një vektroi në rendin rritës . Për

shembull

[1,3,4, 67, 49,12]

( )sort

-67 -49 1 3 4 12

ans

Vlera mesatare e një vektori: Komanda mean llogarit vlerën mesatare të elementëve të një

vektori. Për shembull

[1,3,4, 67, 49,12]

( )mean

-16

ans

Operatori i kompozimit të vektorëve:

Le të përcaktojmë dy vektor

1 [1,3,4,7,9]v

2 [1,3, 67, 49,12]v

Ndonjëherë ne duam të shumzojmë komponentët e vektorit 1v me komponentët korrespondues të

vektorit 2v .Veprimi që kryehet në matlab është

1 2.*v v

1 9 -268 -343 108

ans

Një veprime tjetër mjaftë i dobishëm është

1 2. /v v

1.0000 1.0000 -0.0597 -0.1429 0.7500

ans

Duhet të theksojmë se të gjitha mjetet për analizën e të dhënave që u perdorën me lartë (mbi një

vektor) janë të aplikushem dhe mbi një matricë. Secila shtyllë e një matrice është një vektor në

analizën e të dhënave .

2.4 Polinomet

Polinomet përdoren shpeshe në analizën e sistemeve lineare .Matlab siguron në ambjent të

pasur për të punuar me polinomet . Një përmbledhje funksioneve kryesore polinomiale jepet në

tabelën e mëposhtëme

Tabela 2.4.1

Simboli Shpjegimet

poly

roots

polyval

conv

dencov

polyfit

Konverton rrënjët në një ekuacion polinomial

Funksion i cili gjen rrënjët e një ekuacioni polinomial

Vlerson polinomin për një vlerë të dhënë

Shumëzon dy polinome me njëri-tjetrin

Zbërthen një polinom në pjestuesin dhe mbetjen

Ndërton kurbën e përshtatshëme për një polinom

Rrënjët e një ekuacioni polinomial: Një ekuacion polinomial jepet nëpërmjet formës

1 2

1 2 3 1... 0n n n

n na x a x a x a x a

Rrënjët e një ekuacioni polinomial gjenden nëpërmjet përdorimit të komandës roots1

Për shembull 4 3 24 5 56 6 0x x x x

>> roots([1 4 -5 56 -6])

ans =

-6.2551

1.0735 + 2.7788i

1.0735 - 2.7788i

0.1081

Gjenerimi i një polinomi duke përdorur rrënjët e tij. Komanda poly merr rrënjët e një polinomi

dhe i konverton ato në një polinom .Për shembull nëse njohim rrënjët

1 2[ , ,..., ]nr r r në 1 2

1 2 3 1 2 1( )( )( )...( ) ...n n n

n n nx r x r x r x r x a x a x a x a

atëherë komanda poly gjen koeficentët 1 2[ , ,..., ]na a a të ekuacionit polinomial

Për shembull

1 Duhet theksuar se në matlab koeficientët e polinomit shkruhen në rendin zbritës.

>>poly([-1 -2+2*i -2-2*i -5+7*i -5-7*i])

ans =

1

15

136

498

968

592

Për të kontrolluar rezultatin përdorim përsëri komandë roots

>> roots([ 1 15 136 498 968 592])

rezultati duhet të jetë [-1 -2+2*i -2-2*i -5+7*i -5-7*i]

ans =

-5.0000 + 7.0000i

-5.0000 - 7.0000i

-2.0000 + 2.0000i

-2.0000 - 2.0000i

-1.0000

Vlera e polinomiale: Për të llogaritur vlerën e polinomit në një pikë të përcaktuar, ne mund të

përdorim komandë polyval.

>> polyval([1 2 -4 5],2)

ans =

13

Komand e cila llogarit vlerën që merr polinomi 4 3 22 4 5 0x x x x në pikën x=2

Shumëzimi i dy polinomeve: Komanda conv2 përdoret për të shumëzuar dy polinome ndërmjet

tyre

Për shembull le të jenë 1( )a x dhe 2 ( )a x dy polinome të dhena si më poshtë

2

1( ) 3 4a x x x 4 3 2

2( ) 2 4 5a x x x x x

2 Në matlab prodhimi i dy polinomeve korrespondon konvolucionit te vektorve me koeficientet tyre.

Shumëzimi i polinomit 1( )a x me 2 ( )a x bëhet si vijon

>> c=conv([1 -3 4],[1 2 -4 5])

c =

1 -1 -6 25 -31 20

Duke përftuar në këtë mënyrë koeficentët e prodhimit 1( )a x me 2 ( )a x

Zbërthimi i polinomeve: Komanda deconv përdoret për të zbërthyer një polinom në formën

( ) ( ) ( ) ( )a x b x m x r x

Kjo do të thotë që polinomi ( )a x përfaqësohet nëpërmjet termit të herësit ( )m x dhe mbetjes

( )r x . Komanda e Matlab-it është

>> [m,r]=deconv(a,b)

Ku parametra a dhe b janë vektorët me koeficientët e polinomeve përkatëse.

Për shembull

>> [m,r]=deconv([1 -2 6 -7],[1 3 -1])

m =

1 -5

r =

0 0 22 -12

Nëse ndryshojmë rendin e polinomeve do të kemi

>> [m,r]=deconv([1 3 -1],[1 -2 6 -7])

m =

0

r =

1 3 -1

Polinomi i përshtatshëm: Komada polyfit përdoret për të gjeneruar një kurbë polinomiale e

cila arrin të shpjegoj më mirë një grup të dhënash. Ky polinom meret duke minimizuar gabimin

midis polinomit dhe të dhënave në shqyrtim. Simbolikisht përfaqësohet nëprmejt komadës së

mëposhtëme

>> p=polyfit(x,y,n)

ku x,y janë vektorë e të dhënave në shqyrtim në formen (x,y) , ndërsa n është rendi i dëshiruar i

polinomit i cili duam të ndërtojmë për të përafruar këto të dhëna. Rezultati në dalje do të jetë një

vektor p i cili do të përmbaj koeficientët e polinomit të ndërtuar . Më poshtë jepet një shembull

>> x=[1 2 3 4 5 6];

>> y=[-1 3 5 2 -3 -1];

>> p=polyfit(x,y,1)

p =

-0.6000 2.9333

Duke ndërtuar një kurbë lineare për të shpjeguar të dhënat e mësipërme.

2.5 Ndërtimi i numrave kompleks

Për të ndërtuar një numër kompleks 2 3*i , ne përdorim

2 3*i ose 2 3* j

Matlab e trajtonë i -në dhe j -në si numra kompleks , ose mund të veprohet ndryshe duke përdorur

1j si më poshtë

=sqrt(-1)i

i =

0 + 1.0000i

Komandat abs dhe angle përdoren për të gjetur modulin (abs) dhe kendin (angle) për një numër

kompleks të dhënë. Për shembull

Nëse

c 1 i

atëhere moduli dhe këndi i numrit kompleks të shqyrtuar më sipër do të jenë

>> abs(c)

ans =

1.4142

>>angle(c)

ans =

2.3562

Pjesa reale dhe imagjinare e një numri kompleks: Komandat real dhe imag përdoren për të marrë

pjesën reale(real) dhe pjesën imagjinare (imag) të një numër kompleks. Për shembull

>> c=-10+9*i

>> [real(c),imag(c)]

ans =

-10 9

conj: Komanda conj përdoret për të gjeneruar numrin kompleks të konjuguar .

>> conj(-1+5*i)

ans =-1 - 5*i

2.6 Ekuacionet algjebrike jolineare

Ekuacionet algjebrike jolineare ndeshen në shumë fusha të ndryshme të shkencësh dhe

imxhinierisë. Ekuacionet jolineare janë shumë të ndyshëm nga ekuacionet lineare, kjo është dhe

arsyeja që nuk ka asnjë mjetë anlizues të vetë për ekuacionet jolineare. Matlabi është i pajisur me

disa funksione të cilët punojnë me ekuacionet jolineare. Një përmbledhje funksioneve kryesorë

jepet në tabelën e më poshtëme 2.6.1

Tabela 2.6.1

Funksionet per ekuacionet algjebrike jolineare

Simboli Shpjegimet

fmin

fsolve

Gjen minimumin e një funksioni me një variabël

Zgjidh nje ekuacion algjebrik jolinear me nje variabël

Minimumi i një funksioni (fmin). Komada fmin minimizonë një funksion duke gjetur vlerën e

cila përfaqëson vlerën minimale për funksionin e dhënë. Simbolikisht jepet nëpërmejt komadës

së mëposhtëme

1 2fmin(' ', , )funksion x x

Ku ' 'funksion është shënuar emri i funksionit të cilin duam të minimozojmë dhe 1 2x , x

përfaqëson limitn e poshtëm dhe të sipërm të intervalit ku do të kërkohet minimumi i funksionit.

Për shembull:

fmin('x*cos(x)',-2,2)

ans =-0.8603

Zgjidh nje ekuacion algjebrik jolinear me nje variabël. Kur një ekuacion është shkruar në

trajtën

3 53*sin( ) 0x x x

Në këtë rast për të gjetur zgjidhjne e një ekuacioni algjebrik jolinear përdoret komanda fzero.

Simbolikisht përfaqësohet nëprmejt komadës së mëposhtëme

0fzero(' ',x )funksion

Ku 'funksion është shënuar një M-file e cila mban funksionin te cilin duam ti gjejmë zgjidhjne,

ndërsa 0x është një vektor i kushteve fillestare (një pikë nisje për të gjetur zgjidhjen e

ekuacionit të shqyrtuar).

Për shembull për funksionin e dhënë mësipër ne shkruajmë një M-file fctn.m si :

function [f]=fctn(x)

f=x^3+x*cos(x)-x^5;

end

Duke përdorur komandën fzero si më poshtë:

>> zgjidhja= fzero('fctn',-5)

zgjidhja =

-1.1461

Për të kontrolluar rezultatin shkruajmë :

>> fctn( -1.1461)

ans =

-2.1581e-04

2.7 Zgjidhja e ekuacioneve diferncial

Matlab ofron një seri teknikash numerike per zgjidhjen e ekuacinerve diferenciale lineare dhe

jolineare. Një përmbledhje e teknikave kryesore jepet në tabelën e mëposhtëme 2.7.1

Tabela 2.7.1

Teknika numerike për zgjidhjen e ekuacioneve diferenciale

Simboli Shpjegimet

ode23

ode45

Zgjidhë një ekuacion diferencial duke përdorur

algoritmin Runge-Kutta e rendit të 2të/ 3

Zgjidhë një ekuacion diferencial duke përdorur

algoritmin Runge-Kutta e rendit të 4të/ 5

Algoritmi Runge-Kutta i rendit të dytë dhe të tretë: Matlabi përdor algoritmin Runge-Kutta

për të zgjidhur një ekuacion differencial ose një sistem ekuacionesh diffrenciale. Simbolikisht

përfaqësohet nëprmejt komadës së mëposhtëme

0 0, ' ', t t ,ft x funks x ode23

Ku 'funks' është një funksion i cili mban informacion në lidhje me derivatet, 0t është koha

fillestare, t f është koha përfundimtare, ndërsa 0x është vektori i kushteve fillestare. Daljet janë x

dhe t .

Për shembull, duam të zgjidhim ekuacionin

sin( ) 0x x

të cilin mund ta shkruajmë ndryshe si:

1 2

2 1sin( )

x x

x x

Ku 1x x dhe 2x x

Për ekuacionin e mësipërm ne shkruajmë një M-file funks.m si :

function [f]=funks(t,x)

[f]=zeros(2,1);

f(1)=x(2);

f(2)=-sin(x(1));

end

Tani thërrasim komandën ode23:

, ' ', 0 10 , 2 0t x funks ode23

Algoritmi Runge-Kutta i rendit të katër dhe të pestë: Është një tjetër algoritem Runge-Kutta

ode45 i cili është më i saktë se ode23.

Për të thirrur funksioni ode45 përdorët e njëjat simbolikë si në rastin e ode23 .

2.8 Derivmi

Ju mund të përdorni komandën diff për të derivuar një shprehje matematikore, dhe gjithashtu të

përafroni derivatin e një funksion të dhënë numeriksiht

>> syms x; diff(xˆ3)

ans =

3*x^2

Në këtë rast matlabi e kupton se variabli mbi të cilin duhet të kryhet dervimi është x. Një

mënyrë tjetër është :

>> f = inline(’xˆ3’, ’x’); diff(f(x))

ans =

3*x^2

Sintaksa për derivatin e rendit të dytë është diff(f(x), 2), dhe për derivatin e rendit n është

diff(f(x), n) , komanda diff mund të llogaris dhe derivatet e pjesshme të një shprehje

matematikore e cila përfshin në vetvete disa variabëla, si diff(xˆ2*y, y), ndërsa për të marr

derivatet të shumfishat të përziera ju duhet të përsërisni përdorimin e komandës diff, si

diff(diff(sin(x*y/z), x), y)3.

3Kujdes: Deklaroni y dhe z si simbole

Ekziston rasti kur diferencimi shkruhet me shkronjën D, kur lind nevoja për të specifikuar një

ekuacion diferncial si argument hyrës në një komand. Për shembull për të zgjidhur ekaucionin

diferencial 'xy y y ; shkruajm

dsolve(’x*Dy+ 1 = y’, ’x’)

2.9 Integrimi

Matlab mund të llogaris integrale të caktuar dhe të pacaktuar. Më poshtë jepet një integral i

pacaktuar:

>> int (’xˆ2’, ’x’)

ans =

1/3*x^3

Ashtu si në rastin e komandëë diff, ju mund ta dekalroni x si simbol me ndimën e

apostrofëve.Theksojmë se Matlab në rezultatin që prodhon nuk përfshin konstante integrim. Më

poshtë jepet shembulli i një integrali të caktuar.

>> syms x; int(asin(x), 0, 1)

ans =

1/2*pi-1

Pa dyshim që ju jeni të informuar se jo cdo funksion që shfaqet për llogaritje mund të integrohet

simbolikisht, kështu që herë pas here shumë i rëndësishëm është dhe integrimi numerik. Matlab

ka tre komanda për integrimin numerik të një funksioni ( )f x .quad, quad8, dhe quadl. Ne

rekomandojmë quadl, dhe si zgjedhje të dytë komandën quad8. Për shembull

>> quadl(vectorize(exp(-x^4)), 0, 1)

ans =

0.8448

Matlab mund të kryej dhe llogaritjen e integraleve të shumëfishta. Komanda e mëposhtëme llogarit

integralin e dyfishtë

sin

2 2

0 0

( )

x

x y dxdy

>> syms x y; int(int(x^2 + y^1, y, 0, sin(x)), 0, pi)

ans =

pi/4 + pi^2 – 4

Theksojmë se Matlab supozonë se variabëla e integrimit në int është x, ndërsa rendi i integrimit kryhet

" mbrapsht"

2.10 Limiti

Ju mund të përdorni komandën limit për të llogaritur limitet e njëanshëme të majtë dhe të djathë.

Për shembull më poshtë llogaritet limiti i shprehjes 0

sinlimx

x

x

>> syms x; limit(sin(x)/x, x, 0)

ans =

1

Për të llogaritur limitin e njëanshëm të djathë dhe të majtë, vijnë në ndimë opsionet ’right’dhe

’left’. Për shembull

>> limit(abs(x)/x, x, 0, ’left’)

ans =

-1

Limiti në infinit mund të llogaritet duke përdorur simbolin Inf

>> limit((xˆ4 + xˆ2 - 3)/(3*xˆ4 - log(x)), x, Inf)

ans =

1/3

2.11 Shuma dhe prodhimi

Shumat dhe prodhimet e fundme mund të llogariten shumë thjeshte me Matlab duke shfrytëzuar

komandat sum dhe prod. Për shembull

>> X = 1:7;

>> sum(X)

ans =

28

>> prod(X)

ans =

5040

Me ndimën e programit Matlab ju mund të gjeni shuma të fundme dhe të pafundme të shprehjeve

simbolike të caktuara me anë të komandës symsum. Për të ilustruar këte rast shqyrtojmë

shembullin: 1

1 1;

1

n

k k k

>> syms k n; symsum(1/k - 1/(k + 1), 1, n)

ans =

-1/(n+1)+1

Shqyrtojmë rastin e një shume të pafundme:

21

1

n n

>> symsum(1/nˆ2, 1, Inf)

ans =

1/6*pi^2

Një shembull tjetër i zakonshë është shuma e pafundme e një serie gjeometrike.

>> syms a k; symsum(aˆk, 0, Inf)

ans =

-1/(a-1)

Përgjigja ka kuptim vetëm për 1a

2.12 Seritë e Tejlorit

Ju mund të përdorni komandën taylor për te gjeneruar një zbërthim në seri të Tejlorit në një pikë dhe me

një rend të përcaktuar. Për shembull për të gjeneruar serin polinomiale të Tejlorti të funksionit sin( )x

deri të rendi i 10 në pikën 0, ne shkruajm

>> syms x; taylor(sin(x), x, 10)

ans =

x-1/6*x^3+1/120*x^5-1/5040*x^7+1/362880*x^9

Me ndimën e komandës mund të llogarisim serinë e Tejlorit në një pikë të ndryshme nga ajo e origjinës

>> taylor(exp(x), 4, 2)

ans =

exp(2)+exp(2)*(x-2)+1/2*exp(2)*(x-2)^2+1/6*exp(2)*(x-2)^3

e cila llogarit serin e Tejlorit të funksionit xe në pikën 2.

Komanda taylor ofron komoditetin e llogaritjes së zbërthimit Tejlor edhe në infinit

Ushtrime

1. Llogarisni:

(a) 1111 345

(b) 14

e dhe 382801 deri në 15 shifra. Cili është më i madh?

(c) pjestimet 2709/1024, 10583/4000, dhe 2024/765 .Cili prej tyre është përafrimin

më i mirë për 7 .

2. Llogarisni der në 15 shifra. :

(a) cosh(0.1).

(b) ln(2) (Udhëzim.Logaritmi natyror në Matlab,thirret log dhe jo ln ).

(c) 1arctan( )2

(Udhëzim.Inversi i tagentit në Matlab,thirret atan dhe jo arctan ).

3.Të zgjidhen sistemet e ekuacioneve lineare

(a)

3 4 5 12

2 3 7 1

6 3

x y z

x y z

x y z

(b)

3 2 5 5

2 7 1

4 2 8

x y z

x y z

x y z

(c)

1 2 5 1 54

2 2 7 4 6

4 2 7 8

1 6 4 23

x y z

x y z

x y z

x y z

Kontrolloni përgjigjen duke përdorur shumëzimin matricor.

4.Provoni të zgjidhni sistemin e ekuacioneve lineare

3 9 8 2

2 3 7 1

6 3

x y z

x y z

x y z

Cfarë ndodh? Mund ta shpjegoni pse?Kontrolloni përgjigjen duke përdorur shumëzimin

matricor.A është përgjigja e saktë?

5.Faktorizoni polinomin 4 4x y ?

6.Përdorni simplify ose simple për të thjeshtuar shprehjet e më poshtëme

(a) 1

11

11

x

(b) 2 2cos ( ) sin ( )x x

7.Përdorni solve ose fzero për të zgjidhur ekuacionet e më poshtëme

(a) 8 3 0 x (Zgjidhjen ekzakte)

(b)8 3 0 x (Zgjidhjen numerike der në 15 shifra )

(c) 2 0 x qx p (Përcaktoni x në funksion të q dhe p )

(d) 8 4 x

xe (Të gjitha zgjidhjet reale )

8. Paraqitni grafikisht funksionet 4x dhe 2x në të njëjtin bosht aksesh, dhe përcaktoni se sa

herë grafiket priten.(Udhëzim:Ju mundë ti gjeni të gjitha pikëprerjet grafikëve duke

realizuar disa ndërtime në intervale me madhësive të ndryshme ).Gjeni vlerën e përafërt të

pikë së prerjes duke përdorur komandën fzero.

9. Të gjenden derivatet e funksioneve të më poshtëme. Nëse është e mundur të thjeshtohet

secila përgjigje.

(a) 3 2( ) 6 5 2 3 f x x x x

(b)2

2 1( )

1

xf x

x

(c) 2( ) sin(3 2) f x x

(d) ( ) arcsin(2 3) f x x

(e) 4( ) 1 f x x

(f) ( ) rf x x

(g) 2( ) arctan( 1) f x x

10. Tregoni nëse Matlab mund të kryej simbolikisht integralet e më poshtëme. Për integralet

e pacaktuara kontrolloni rezultatet me ndimën e derivatit.

(a)

2

0

cos

xdx

(b) 2sin( ) x x dx

(c) sin(3 ) 1 cos(3 ) x x dx

(d) 2 4 x x dx

(e)2

x

dxe

11. Llogarisni numerikisht integralet duke përdorur quad8 ose quadl

(a)sin

0

xdxe

(b)

1

3

0

1 x dx

(c) 2

x

dxe .

Gjithashtu llogarisni gabimin në përgigjen numerike duke e krahasuar me zgjidhjen

ekzakte te gjetur në problemin 11

12. Llogarisni limitet e më poshtëme

(a)0

sinlim .x

x

x

(b)1 cos

lim .

x

x

x

(c) 2lim .

x

xx e

(d)1

1lim .

1 x x

(e)0

1lim sin .

x x

13. Llogarisni shumat e më poshtëme

(a) 2

1

.

n

k

k

(b)0

n

k

k

r

(c) 0 !

k

k

x

k.Mund të përdorni funksionin gamma

1

0

( )

t xx t dte ,i cili në Matlab thirret

me ndimën e komandës gamma e cili gëzon vetinë ( 1) ! k k .

(d)2

1.

( )

k z k

14. Gjeni polinomet e Tejlorit për funksionet e më poshtëme

(a) ( ) , 7, 0 x

f x n ce

(b) ( ) sin , 5 f x x n dhe 6, 0c

(c) ( ) sin , 6, 2 f x x n c

(d) ( ) tan( ), 7, 0 f x x n c

(e) ( ) ln , 5, 1 f x x n c

(f) ( ) ( ), 9, 0 f x erf x n c

15. Në këtë problem do të përdorim operatorin backslash ose pjestuesi i matricës nga e majta

për zgjidhjen e sistemeve lineare

(a) Përdorni operatorin për zgjidhjen e sistemeve të ekuacioneve lineare të dhëna në

problemin 3.

(b) Të njëjtën metod zbtoheni në problemin 4.Matlab gjen vetëm një përgjigje, dhe jo të

gjitha. Mund ta shpjegoni pse?

(c) Përdorni metodën e mësipërme për të zgjidhur sistemin e më poshtëm

3 2 4 1

2 3 4 1

4 3 2 1

2 3 4 1

w x y z

w x y z

w x y z

w x y z

16. Ashtu sic e kemi shpjeguar më sipër kur llogarisim [ , ] ( )V D eig A secila shtyllë e V

është një vektor i vetë i matricës A në lidhje me vlerën e vetë, që gjendet në shtyllën

përkatëse të matricës diagonale D .Kjo do të thotë AV VD

(a)Verifikoni barazimin AV VDpër secilin nga sistemet e ekuacioneve lineare të

problemit 3.

(b) Në fakt ( ) ( )rank A rank V kur A është jo singulare(Një matricë nxn është jo

singulare nëse ranku i saj është n ) atëherë 1 V AV D

Kështu që nëse dy matrica ,A B të diagonalizushme kanë të njëjtën bashkësi vektorësh të

vetë, atëherë matricat diagonale gjatë llogaritjeve për këto dy matrica janë të njëjta.

Verifikoni këtë fakt për dy matricar e më poshtëme

1 0 2

1 0 4

1 1 5

A ,

5 2 8

3 6 10

3 3 7

B

Do të tregoni që matricat e vektorëve të vetë janë të njëjtë , që do të thotë se shtyllat e

secilës matricë janë të njëjta në lidhje me një faktor kostant, dhe më pas do të tregoni që

AB BA.

Kapitulli 3

PROGRAMIM ME MATLAB

Mënyra më e zakonshme për të punar në Matlab është nëpërmjet shkruarjes së komandave në "Command

Window", një alternativë tjetër e përdorimit e cila zgjeron mundësit e Matlab-it në zgjidhjen e shumë

problemeve të ndryshme është M-file. Një M-file përbëhet nga një seri shprehjesh të cilat ekzekutohen

njëkohësisht. Nomenklatura M-file vjen nga faktin se skedar të tille ruhen me prapashtesën .m .Një

M-file vjen në dy forma; si "script file" dhe "funksion file"

Sa herë që shkruani një M-file, ju jeni duke shkruar një program kompjuterik duke përdorur

gjuhën programuese që ofron Matlab. Ju mund të bëni shumë në Matlab duke përdorur vetëm

teknikat bazë të programimimt. Me ndimën e këtij kapitulli në do të mbulojmë një pjesë të

rendësishëme të komandave dhe teknikave programuese të cilat janë të dobishëme për të

"sulmuar" shumë probleme komplekse me ndimën e Matlab-it. Nëse ju jeni familjarë me gjuhë të

tjera programuese (si C++), pjesë dërmuese e këtij materiali do të jetë shumë i lehtë për tu

kuptuar.

Pjesë më e madhe e komandave të Matlab-it në vetevet janë m-file, të cilat mund ti

kontrolloni duke shtypur type ose edit (për shembull shtypni type isprime për të parë m-

file e komandës isprime). Ju mund të mësoni më shumë rreth teknikave programuese të

Matlabi-it duke kontrolluar m-file për komanda të ndryshme

3.1 "Script file"

Një "Script file" është thjesht një seri komandash të cilat janë të rregjistruar në një skedar. Ato

jane mjaft të dobishëme kur ju kërkoni që këto komanda ti ekzekutoni më shumë se një herë.

Ekzekutimi i Skriptit mund të kryeht direkt nga "Command Window" duke shkruar emrin me të

cilin e keni ruajtur skedën, ose në duke klikuar "Run" në dritaren e editorit.

Shembull 3.1: Ndërtoni një skript që llogarit shpejtësin e rrënies së lirë të një parshutisti në rast

se shpejtësia fillestare është zero

Zgjidhja. Në fillim hapim editorin duke ndjekur hapat File, New, M-file. Shkruani shprehjet e

mëposhtëme të cilat llogarisin shpejtësin e rrënies së lirë të një trupi në një cast të caktuar të

kohës

g = 9.81; m = 68.1; t = 12; cd = 0.25; v = sqrt(g * m / cd) * tanh(sqrt(g * cd / m) * t)

Ruheni me emerin skriptshembull.m. Rikthehemi të "Command Window" dhe shkruani

skriptshembull

Rezultati do shfaqet si më poshtë

v =

50.6175

Së fundmi përcaktojmë vlerën e g duke shkruar në "Command Window"

>>g

g =

9.8100

Ju mund ta shikoni edhe pse g është përcaktuar brënda skriptit, ajo mban vlerën e saj edhe në

"Workspace". Sic do të shohim më vonë kjo është një dallim shumë i rëndësishëm midis

skripteve dhe funksioneve

3.2 Funksion file

Një funksion file nuk është gjë tjetër vetëm një M-file e cila fillon me fjalën function. Në

ndryshim nga një "script file" ato pranojnë argumenta hyrës dhe kthejn rezultate.

Nëse ndërtojmë një file të quajtur funksion.m atëherë funksion.m duhet të filloj më rreshtin

kryesor

1 2 1 2[ , ,...] [ , ,...]ov ov iv ivfunction funksion

Ku 1 2, ,...iv iv janë variabëlat hyrse, ndërsa 1 2, ,...ov ov janë variabëlt dalse. Variabëlat hyrse janë

variabëla specifike, ndërsa variabëla dalse janë false, pra mund të përdorim variabëla cfarëdo.

Për shembull le të zgjithim ekuacioni algjebrik të rendit të dytë.

2 0ax bx c

Zgjidhja e të cilit në trajtën analitike jepet nëpërmjet formulës

2

2 1

4

2

b b acx

a

Duam të shkruajmë një m-file me emrin gjejrrenj.m, e cila jep zgjidhjen analitike të ekuacionit

algjebrik të rendit të dytë.

function [r1,r2]=gjejrrenj(a,b,c) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Gjej dallorin---- Cdo komand ne Matlab e cila fillon me simbolin % lexohet si koment D=b^2-4*a*c; if(D<0) r1=(-b+j*sqrt(-D))/2*a; r2=(-b-j*sqrt(-D))/2*a; disp('Ekuacioni ka dy rrenje komplekse te konjuguara') elseif(D==0), r1=-b/2*a; r2=-b/2*a; disp('Ekuacioni ka dy rrenje qe perseriten') else(D>0) r1=(-b+sqrt(D))/2*a; r2=(-b-sqrt(D))/2*a; disp('Ekuacioni ka dy rrenje reale') end end

Disa komanda të cilat shfaqen në shembullin e mësipërm do ti diskutojmë më vonë. Menjëherë

pasi kemi krjuar gjejrrenj.m, funksionin mund ta thërrasim si:

[r1,r2]=gjejrrenj(3,4,5)

ose

[p1,p2]=gjejrrenj(3,4,5)

Një m-file tjetër do të ishte

function [f]=funks(x) f=(1-x)^2; end

Funksioni i mësipërm përfaqëson funksionin 2(1 )f x . Në "Command Window" funksionin

mund ta thërrasim si:

>> y=funks(9)

Shembulli 3.2 Ashtu si në shembullin 3.1 llogarisni shpejtësin e rënies së lirë por tani duke

përdorur një funksion file.

function v = rrenielire(t, m, cd) % v=rrenielire(t,m,cd) llogarit shpejtesin %e renies se lire % argumentat hyres: % t = time (s)

% m = mass (kg) % cd = koeficenti i rezistences (kg/m) % Rezultati: % v = shpejtesia e rrenies (m/s) g = 9.81; % nxitimi gravitacional v = sqrt(g * m / cd)*tanh(sqrt(g * cd / m) * t);

Ruheni me merin rrenielire.m . Riktheheni të "Command Window" dhe shkruani

rrenielire(12,68.1,0.25)

Rezultati i përftuar do të jetë

ans =

50.6175

Një nga avantazhet e funksionit të mësipërm është se ai mund të thirret për vlera të ndryshme të

argumentave hyrës. Supozojmë se duam të llogarisim shpejtësin e rrënies se lirë të një

parashutisti me mas 100kg pas 8 sekondash.

rrenielire(8,100,0.25)

ans =

53.1878

Për të thirrur komadën "help" për funksionin rrenielire shkruajm

help rrenielire

v=rrenielire(t,m,cd) llogarit shpejtesin e rrenies se lire

argumentat hyres:

t = time (s)

m = mass (kg)

cd = koeficenti i rezistences (kg/m)

Rezultati:

v = shpejtesia e rrenies (m/s)

Së fundmi ashtu si në shembullin 3.1 përcaktojmë vlerën e g duke shkruar në "Command

Window"

>>g

Si përgjigje Matlab afishon mesazhin e më poshtëm

Undefined function or variable 'g'

Pra edhe pse g ka vlerën 9.8 brenda në M-file, ajo nuk e mban vlerën e saj edhe në

"Workspace". Sic theksuam në përfundim të shembullit 3.1 ky është një nga dallimet themelore

ndërmjet një skripti dhe funksioni. Variabëlat që përdoren brënda një funksioni janë lokal, që do

të thotë se këto variabëla fshihen menjëherë pas ekzekutimit të funksionit. Në ndryshim nga një

skript, variabëlat e të cilit nuk fshihen pas ekzekutimit të skriptit.

Funksionet M-file mund të kthejn më shumë se një rezultat. Në situata të tilla variabëlat mbajtëse

të rezulatit janë të përcaktura dhe të ndara me presje brënda kllapave katrore. Për shembull

funksioni i mëposhtëm stat.m llogarit mesataren dhe devijimin standart të një vektori

function [mean, stdev] = stat(x) n = length(x); mean = sum(x)/n; stdev = sqrt(sum((x-mean).^2/(n-1)));

Më poshtë jepet shembulli se si përdoret funksioni i mësipërm

y = [8 5 10 12 6 7.5 4];

[m,s] = stat(y)

m =

7.5000

s =

2.8137

Herë pas here funksioneve m-file do ti referohemi për thjeshtësi M-file

3.3 Nën-funksionet

Funksionet mund të thërrasin funksione të tjerë.Funksione të tillë mund të jenë në M-file të

ndryshme ose brënda një M-file të vetëm. Për shembull, M-file i ndërtuar në shembullin 3.2 (pa

komentet) mund të ndahet në dy funskione dhe të ruhen si një M-file i vetëm.

function v = rrenielirenenfunks(t, m, cd)

v = vel(t, m, cd);

end

function v = vel(t, m, cd) g = 9.81; v = sqrt(g * m / cd)*tanh(sqrt(g * cd / m) * t);

end

M-file i mësipërm do të ruhet me merin rrenielirenenfunks.m Në një situat të tillë funksioni

i parë quhet funksioni kryesor. Ky është i vetmi funksion i arritshëm me ndimën e "Command

Window". Të gjitha funksioneve të tjera (në shembullin tonë vel ) i referohemi si nën-

funskione. Nëse ekzekutojmë rrenielirenenfunks.m nga "Command Window" rezultati

është i njëjtë me atë të shembullit 3.2 rrenielirenenfunks(12,68.1,0.25)

ans =

50.6175

Gjithësesi nëse përpiqemi të ekzekutojmë nën-funksionin vel, Matlab do të sinjalizojë mesazh

gabimi

vel(12,68.1,.25)

Undefined function 'vel' for input arguments of type 'double'.

3.4 INPUT/OUTPUT

Ashtu si në pjesë 3.1 informacioni kalon në funksion nëpërmjet listës së argumentave , dhe

rezultati nëpërmjet emrit të funskionit. Dy funksione të tjerë sigurojnë një mënyrë alternative të

dhënies dhe shfaqjes së informaciont direkt nga "Command Window". Funksionet input/output i

sigurojnë përdoruesve të Matlab-it një mjedis të përshtatshëm programues. Disa funksione

input/output janë të listuara në tabelën e mëposhtëme.

Tabela 3.4.1

Funksionet baze input/output

Simboli Shpjegimet

input

disp

format

Merr të dhëna hyrese nga përdoruesi nëpërmjet tastjerës

Shfaq një tekst ose një rezultat numerik në ekran

Shfaq formate të ndryshme të numrave

Funksion input: Komanda input ju lejon dhënien e informacionit në kohë nga "Command

Window". Është e disponueshme si për të dhëna hyrese numerike ose stringje. Për shembull,

>> Mosha= ('Sa vjec jeni?');input

>> Name= ('Si e keni emrin?', ;input 's')

Simboli 's' tregon se e dhëna hyrse është string.

disp: Komanda disp përdoret në rastet kur përdoruesi dëshiron të shfaq një tekst ose një

rezultat numerik në ekran. Për shembull,

disp('Sot eshte e hene?')

Shembulli 3.3

Ashtu si në shembullin 3.1 llogarisni shpejtësin e rrënies së lirë por duke përdorur funksionet

input/disp.

function rrenielirein % Llogarit shpejtesin e rrenies se lire g = 9.81; % nxitimi gravitacional m = input('Masa (kg): '); cd = input('Koeficenti i rezistences (kg/m): '); t = input('Koha (s): '); disp(' ') disp('Shpejtesia (m/s):') disp(sqrt(g * m / cd)*tanh(sqrt(g * cd / m) * t))

Ruheni me emrin rrenielirein.m .Për të thirrur shkojmë në "Command Window" dhe

shkruajmë.

rrenielirein

Masa (kg): 68.1

Koeficenti i rezistences (kg/m): 0.25

Koha (s): 12

Shpejtesia (m/s):

50.6175

format: Komanda format përdoret në rastet kur përdoruesi dëshiron ti shfaq numrat në formate

të ndryshme. Për shembull

>> x=1/9

x =

0.111111111111111

>> format short e

>> x

x =

1.1111e-01

>> format long

>> x

x =

0.111111111111111

>> format long e

>> x

x =

1.111111111111111e-01

>> format hex

>> x

x =

3fbc71c71c71c71c

3.5 Manipulimi i skedarve

Manipulimi i skedarve është një karkteristikë tjetër që ofron ambjenti Matlab. Ne mund ti ruajm

të gjitha variabëlat qe kemi krijuar dhe/ose importuar nga file të ndryshme si në format binar

ashtu dhe në formatin tekst. Skedarin e ruajtur mund ta rihapim për përdorim të mëvonshëm. Një

përmbledhje e komandave kryesore jepet në tabelën e më poshtëme 3.5.1

Tabela 3.5.1

Komandat kryesore manipuluese të skedarve

Simboli Shpjegimet

save

load

diary

Ruan variablat aktuale në një skedar

Hapë një skedar të ruajtur në ambjentin Matlab

Ruan rezultatet e shfaqura në ekran në formatin tekst

save: Komanda save përdoret për të ruajtur variabëlat në një skedar kur jemi duke punar në

Matlab. Simbolikisht përfaqësohet nëpërmjet komandës së mëposhtëme

save filename var1 var2 ...

Ku filename është emri i skedarit ku duam të vendosim variabëlat var1 var2 ... . Emri i skedarit i

gjeneruar nga komanda save ka mbaresen .mat dhe njihet zakonisht me emrin mat-file. Nëse nuk

vendosim emrat e variabëlave, pra komanda save ka pamjen

save filename

atëherë të gjitha variabëlat aktuale kur jemi duke punuar do te ruhen automatikisht.

load: Komanda load është e kundërta e komandës save, ajo përdoret për të rihapur variabëlat

nga një skedar i cili më parë është ruajtur nëpërmjet komandës save kur ne jemi duke punar në

Matlab. Simbolikisht përfaqësohet nëpërmjet komandës së mëposhtëme

load filename var1 var2 ...

Ku filename është emri i skedarit nga ku duam të rihapim variabëlat var1 var2 ... . Është një

mat-file i gjeneruar nga komanda save. Nëse nuk vendosim emrat e variabëlave që duam të rihapim,

atëherë komanda load do të rihapë të gjitha variabëlat. Për shembull

;

;

a 1 3 4

b 3

save test

clear all

who

load test

who

diary: Duke përdorur komandën diary ne mund të ruajmë të gjitha komandat dhe përgjigjet të cilat

shfaqen në ekran në formatin tekst. Për shembull

>> diary on

>> a=1;b=2;c=3;

>> [a b c];

>> d=a*b;

>> g=b*c;

>> diary off

3.6 Struktura e Programimit

Ashtu si dhe në jetën e përditshëme dhe në gjuhët e programimit në varësi të situatave të

ndryshmë duam të kryejm veprime të ndryshmë. Matlab-i përmbanë disa instruksione të

kushtëzuar të cilat na ndimojnë të shkruajmë kombinime të ndryshme të komandave që ofron

ambjenti Matlab. Vec kësaj ciklet janë një element tjetër i rëndësishëm të cilat mundësojn

përsëritjen e ekzekutimit të instruksioneve, ato mund të përdoren në të njëjtën mënyrë sic

përdoren në gjuhët e tjera të programimit. Një përmbledhje e cikleve dhe instruksioneve të

kushtëzuara jepen në tabelën e mëposhtëme 3.6.1

Tabela 3.6.1

Ciklet dhe instruksionet e kushtëzuara

Simboli Shpjegimet

for

while

if

elseif, else

break

sëitch

Strukture ciklike e njejtë si në gjuhët e tjera të programimit.

Strukture ciklike e cila përdoret së bashku me një kusht, dhe

ekzekutohet për aq kohë sa kushti është i vërtetë.

Prodhon një kusht .

Përdoret së bashku me komandën if.

Struktura ciklike break, kur një konditë është plotësuar.

Një instruksion i cili ju lejon ta ndani problemin në disa raste.

Cikli for: for është një komand ciklike e cila përfundon me komandën end

for i=1:100 a(i,i)=2*i; end

Në shembullin e mësipërm i është një indeks i ciklit i cili fillon nga 1 dhe përfundon në 100.

Është plotësisht e mundur që një cikël for të jetë pjesë përbërse e trupit të një cikli tjetër for.

Për ta ilustruar këtë strukturë shqyrtojmë shembullin e mëposhtëm

for i=1:100 for j=1:50 for k=1:50 a(i,j)=b(i,k)*c(k,j)+a(i,j) end end end

while: While është një tjetër cikël i rëndësishëm në Matlab. Megjithëse në pamje të parë, ky

cikël duket më i thjeshtë se cikli for, ai përdor të njëjtët element sikurse dhe cikli for, por të

shpërndara në program dhe jo të grupuar në kryë të ciklit. Cikli while është më i përshtatshëm se

cikli for kur nuk dihet paraprakisht sa herë do të ekzekutohet trupi i ciklit .

Struktura e përgjithshëme e ciklit while është

 ( )kushti

Shprehja

while

end

Për shembull:

i=1 while(i<10) i=i+1; end

Një shembull tjetër në lidhje me përdorimin e ciklit while

n=100 var=[]; while(n>0) n=n/2-1; var=[var,n] end

Rezultati është:

var =

Columns 1 through 5

499.0000 248.5000 123.2500 60.6250 29.3125

Columns 6 through 9

13.6563 5.8281 1.9141 -0.0430

Në shembullin e mësipërm kemi përdorur [] për të deklaruar një matricë boshe.

if, elseif , else: if, elseif, else janë instruksione të kushtëzuar të cilat përdoren të kombinuar, pra

  #1

#1

  # 2

# 2

kushti

Shprehja

kushti

Shprehja

Shprehja

if

elseif

else

end

Për shembull

n=100; if(rem(n,3)==0) x=0; elseif(rem(n,3)==1) x=1; else x=2 end

Ku rem(x,y) llogarit mbetjen e pjestimit të x me y.

if

Për te ilustruar më thjeshtë instruksionin if, shqyrtojmë funksionin e mëposhtëm m-file vlabs.m,i

cili llogarite vlerën absolute te një numri real.

function y = vlabs(x) if x>=0 y=x; else y = -x; end

Rreshti i parë në këtë m-file, na tregon se funksioni ka një hyrje të vetem x dhe një dalje të vetme

y. Nëse argumenti hyrës është jo-negativ, dhe nëse instruksion if i përcaktuar nga Matlab është i

vërtetë atëherë komanda ndërmjet if dhe else-it do të ekzekutohet,pra y=x,nëse x është negativ

atëhere Matlab ekzekuton suksesshëm komandën ndërmjet else-it dhe end-it,pra y = -x.

Pjesa më e madhe e shmebujve në këtë kapitull do të japin rezultate të pazakonta nëse

argumenti hyrës është i ndryshëm nga ai i menduar. M-file i mësipërm vlabs.m është

ndërutar vetëm për argumenta hyrës skalar dhe real, jo numra kompleks apo vektor. Nëse

argumenti hyrës x është kompleks atëherë instruksioni x>=0 kontrollon vetëm nëse pjesa

reale numrit kompleks është jo-negative, dhe dalja y për më tepër do të jetë komplekse.

Matlab ka funksionin e ndërtuar abs i cili funksion shumë mirë dhe në rastin e vektorve

të numrave kompleks.

Në përgjithësi instruksioni if duhet të ndiqet në të njëjtin rresht nga një kusht të cilin Matlab e

teston nëse është i vërtetë ose i gabuar. Pas cdo if në program ka një end, mund të ndodh mes

tyre të ketë një ose më shumë elseif dhe/ose një else. Nëse kushti është i vërtetë Matlab

ekzekuton të gjtha komandat ndërmjet instruksionit if dhe instruksionit të parë elseif, else ose

end, duke injoruar të gjitha komandat e tjera. Nëse kushti është i gabuar Matlab kalon në

instruksionin më të afërt elseif, else ose end, duke vepruar nga atje, kontrollon një kusht të ri në

rastin e ndonjë elseif. Në shembullin e mëposhtëm kemi riformular rasitn e gjetjes së vlerës

absolute të një numri real vlabs.m, kështu që nuk nevojite asnjë komand nëse kushti është i

gabuar, duke eliminuar përdorimin e një else-i.

function y = vlabs(x) y=x; if y<0 y = -y; end

Instruksioni elseif mund të përdoret në rastë se janë më shumë se tre alternativa, duke i ndarë në

sekuenca me kushte të vërteta/gabuara. Instruksioni elseif është ekuivalent me instruksioni else i

cili pasohet menjëherë nga instruksioni if. Në shembullin e më poshtëm, ne përdorim instruksion

elseif për të llogaritur funksionin e dhënë matematikorë

1 0

sgn( ) 0 0

1 0

x

x x

x

function y = signum(x) if x>0 y=1; elseif x == 0 y=0; else y = -1; end

Këtu nëse argumenti hyrës është pozitiv, atëherë argumenti dalës y merr vlerën 1, dhe të gjitha

komandat nga elseif në end injorohen. Nëse x nuk është pozitiv atëherë Matlab kalon në

instruksionin elseif duke kontrolluar kushtin nëse x==0, nëse është i vërtetë atëherë

y=0,përndryshe y=-1.

break: Instruksioni break siguron daljen nga cikli (për shembull nga ciklet if dhe while)

menjëherë sapo ai ekzekutohet pavarsisht nga rezultati i testimit të kushtit.

Për shembull:

for i=1:100 i=i+1; if(i==10)break; end end

Tabela 3.6.2

Operatorët logjik dhe relacional

Simboli Shpjegimet

==

~=

< (<=) > (>=)

&&

~

|

Dy kushtet janë të barabartë

Dy kushtet nuk janë të barabartë

Më i vogël (më i vogël baraz) Më i madh (më i madh baraz)

Operatori AND

Operatori NOT

Operatori OR

Operatorët logjik

&& Operatori AND

n=100; if(n>0&&n<100) i=i+1; end

Ky operator thotë: n.q.s shprehja në të majtë 0n dhe shprehja në të djathë janë njëkohësisht të

vërteta atëherë e tërë shprehja n 0 && n 100 është e vërtetë

~ Operatori NOT

Operatori logjik NOT (~). Ai realizon trasformimin e një shprehje të vërtetë në jo të vërtetë dhe

anasjellas. Per shembull

~(x<10)

Kjo shprehje do të lexohej:"jo x më i vogël se 10", pra nëse x është më i vogël se 10 shprehja

është jo e vërtetë.

| Operatori OR

Le të shqyrtojmë shprehjen e mëposhëtme

if(x==y | x=22-y)

Ky operator thotë: nëse njëra nga shprehjet x y apo 22x y është e vërtetë atëherë e

gjithë shprehja x y | x 22 y është e vërtetë.

switch

Një instruksion tjetër shumë i rëndësishëm është switch. Një instruksion i cili ju lejon ta ndani

problemin në disa raste. Për të parë se si funksion ky instruksion, shohim shembullin e

mëposhtëm

function y = numero(x) switch x case 1 y = 'nje'; case 2 y = 'dy'; otherwise y = 'shume'; end

Këtu instruksioni switch vlerosn argumentin hyrës x, dhe më pas m-file gjatë ekzekutimit kalon

në secilin rastë . Nëse argumenti hyrës x është i barabartë me 1 atëherë dalja y do të jetë stringu

"nje", nëse argumenti hyrës është 2 atëherë rezulati do të jetë stringu "dy", nëse nuk gjendet

asnjë përputhje me rastin 1 (case 1) dhe rastin 2 (case 2)atëherë Matlab kalon te

instruksionet opsional otherwise ose end.Në shembullin e mësipërm nëse argumenti hyrës nuk

është 1 ose 2 atëherë rezultati dalës do të jetë stringu "shume".

Ndryshe nga if, instruksioni switch nuk lejon shprehje vektoriale, por lejon stringje. Kjo

karakteristike mund tju ndimojë nëse doni të ndërtoni një m-file i cili përdorë një argument

string për të kontrolluar ndërmjet rasteve të ndryshme të programit që ju keni shkruar.

Stringjet nuk mund të krahasohen më ndimën e operatorve logjikë si == (vec nëse kanë

gjatësi të njëjtë). Ju mund të krahasoni stringjet në instruksionet if ose else me ndimën e

komandës strcmp. Kërkoni help strcmp për të parë se si kjo komandë funksionin, ndersa

për të parë se si kjo komandë funksion në bashkpunim me instruksionet if dhe else

shkruani help hold.

Më sipër kemi folur për ciklin for, duke përdorur ciklin for ju përcaktoni numrin e herve që cikli

do të ekzekutohet. Shpesh herë në probleme të ndryshme lind kërkesa që komandat brenda një

cikli të ekzekutohen për aq kohë sa plotësohet një kusht i cakutr, pa përcaktuar numrin e

iteracioneve. Komanda e cila e lejon dicka të tillë është while

➱Përdorimi i while aksidentalisht mund ta futë programin në një cikël të pafundëm, për

arsye se kushti qe ju keni vendosur nuk plotësohet asnjëherë. Mbani mend ju mund ta

ndërprisni ekzekutimin e nje cikli të tillë duke shtypur CTRL+C, përndryshe duhet të fikni

Matlab-in.

Ushtrime

1. Shkruani një program triangle.m, i cili gjen gjatësin e hipotenuzës dhe këndin e

ngushtë në trekëndshin këndrejt kur jepen gjatësit e dy brinjëve të tjera.

2. Shkruani një program forcag.m, i cili gjen forcën gravitacionale( në N) ndërmjet dy

trupave duke përdorur relacionin 1 2

2

m mF G

r me kostante gravitacional

11 2 26.673 10 / G Nm kg . Ekzekutoni programin për të gjetur forcën që ushtrohet mbi

një trup, masa e të cilit është 80kg nga një trup tjetë më masë 60kg në një largësi prej

2m

3. Shkruani një progrma henake.m, i cili vlerson numrin e këpucve që duhen për të

mbulur plotësisht sipërfaqen e hënës ( rrezja e së cilës është 1740km ). Gjerësi e këpucës

është 6cm ndërsa gjatësia 24cm .

4. Kur dy trupa goditen në një mënyrë të tillë që shuma e energjisë kinetike para goditjes

është e barabrtë me shumën e energisë kinetike pas goditjes, thuhet se trupat kryej goditje

elastike. Shpejtësit përfundimtare të dy trupave mund të llogariten nëpërmjet relacioneve

të mëposhtëme

1 2 21 1 2

1 2 1 2

2

f o o

m m mv v v

m m m m

1 2 12 1 2

1 2 1 2

2

f o o

m m mv v v

m m m m

Shkruani një program goditja.m, i cili vlerson shpejtësit përfundimtare gjatë goditjes

elastike të dy trupave duke përdorur të dhënat , 1 2 15 , 3 , 2 / om kg m kg v m s dhe

2 4 / ov m s

5. Madhësi e forcës së fërkimit për një trup në lëvizje llogaritet nëpërmjet ekuacionit

f fF N

Ku fështë koeficienti i fërkimit,dhe N forca normale e trupit në lëvizje. Nëse trupi

mbështetet në një sipërfaqe paralele me bazën, atëherë forca normale është vetëm pesha e

trupit N mg ,ku m është masa e trupit dhe 29.8 /g m s nxitimi gravitacional.

Shkruani një program ferkim.m, i cili vlerson madhësin e forcës së fërkimit, kur jepen

masa m e trupti dhe koeficenti i fërkimit f. Ekzekutoni programin për secilin nga

rastet e mëposhtëme

(a) 0.8m kg dhe 0.68 f(Bakër dhe Qelq)

(b) 50m g dhe 0.80 f(Celik)

(c) 324m g dhe 0.04 f(Plastik dhe Celik)

6. Shkruani një program drita.m, i cili vlerson kohën që i duhet dritës për të udhëtuar nga

(a) Nga New York në San Francisco.

(b) Nga Dielli në Tokë

(c) Nga Toka në Mars

(d) Nga Dielli në Pluton

7. Rezistenca totale e dy rezistencave të lidhura në paralelë jepet nëpërmjet relacionit

1 2

1 1 1

R R R

Shkruani një program Rparalele.m, i cili vlerson rezistencën totale, të rezistencave të

lidhura në paralelë, për secilin nga rastet e mëposhtëme

(a) 1 100 , R k 2 100 R k

(b) 1 100 , R k 2 1 R

(c) 1 100 , R k 2 10 R

8. Shqytojmë funksionin ( ) cos( )f x x . Shkruani programin diffundme.m, i cili vlerson

derivatin e funksionit të mësipërm me ndimën e diferncave të fundme me anë të shprehjes

0

0 0( ) ( )( )

x x

f x x f xdf x

dx x

Ekzekutoni programin për x sa më të vogla për të parë se përafrimi konvergjon në një

limit. Gjeni limitin për vlera të ndryshme të 0x duke përfshirë pikat 0

50, , , ,

4 2 4

x

dhe 2 . A e parashikonit rezultatin e marrë?

Kapitulli 4

PARAQITJA GRAFIKE NE MATLAB

Në këtë kapitull do të përshkruajmë një pjesë të rendësishëme të komandave grafike, dhe

veprimet e zakonshme që mund të kryhen me to. Ju mund të merrni informacion rreth

komandave grafike duke shtypur ne "Command Window" help graphics, help graph2d në rastin

grafikve dy dinesional ose help specgraph për komanda specifike.

Ne do ta fillojmë këtë kapitull duke diskutuar më shumë rreth përdorimit të këtyre komadave si

dhe komandave të tjera për paraqitjet dy-dimensionale dhe tre-dimensionale. Në këtë kapitulli do

të diskutohen dhe disa teknika manipuluese dhe rregulluese në lidhje me paraqitjet grafike.

Matlab-i ka një koleksion të pasur të paraqitjeve grafike të të dhënave në formate të ndryshme .

Ndertimi i grfikëve në ambjentin Matlab është relativisht i thjeshtë për arsye të alternativave të

ndryshme të disponueshme. Një përmbledhje e komandave kryesore jepet në tabelën e

mëposhtëme 4.1.

Tabela 4.1Komandat bazë të grafikëve

Simboli Shpjegimet

Plot

xlabel(ylabel)

axis

text

title

ginput

gtext

grid

subplot

Komanda bazë e ndertimit të grafikëve

Vendosja e emrave në boshtet x (y)

Shkallëzim manual i boshteve x (y)

Vendos tekstin në një pozicion të caktuar në grafik

Vendos emrin e grafikut në pjesën e sipërm të grafikut

Gjeneron kordinatat e një pike në grafike

Vendos tekstin në një pozicion të caktuar në grafik me

ndimën e mausit

Vendos rrjetën në paraqitjen grafike

Ndan dritaren e paraqitjes grafike në disa të tilla

Një komand e thjeshtë e paraqitjes grafike jepet më poshtë

>> t=0:0.1:10;

>> y=sin(t);

>> (y)

>> title('y=sin(t)')

plot

>> t=0:0.1:10;

>> y=sin(t);

>> (t,y)

>> title('y=sin(t)')

plot

0 20 40 60 80 100 120-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1y=sin(t)

Në shembullin e mësipërm t përfaqëson një vektor vlerat e të cilit fillojnë nga 0 në 10 me hap

0.1 . Për të bërë paraqitjen grafike ne mund të përdorim vetëm y ose të dy si y dhe t së bashku.

Në rastin e parë vlerat në boshtin horizontal përfaqësojn një numër të dhënash nga 0 në 101.

Në rastin e dytë vlerat në boshtin horizontal përfaqësojn shkallëzim e vektorit t në komandën

(t,y)plot .

Një shembull tjetër do të ishte

>> t=0:1:100;

>> y1=sin(t).*t;

>> y2=cos(t).*t;

>> (t,y1,'-',t,y2,'-')plot

0 1 2 3 4 5 6 7 8 9 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1y=sin(t)

Simbolo '-' përfaëqson një mënyrë të paraqitjes grafike. Në tabelën e mëposhtme jept një

përmbledhje e simboleve të ndryshme që përdoren në paraqitjet grafike.

Tabela 4.2

Modeli Paraqitja e vijave Ngjyrat

'-'

'_'

':'

'-.'

.

*

o

+

x

r e kuqe

g jeshile

b blu

ë e bardhë

i e padukshme

xlabel(ylabel): xlabel('tekst'), ylabel('tekst') përdoren për të emërtuar boshtet x dhe y.

0 10 20 30 40 50 60 70 80 90 100-100

-80

-60

-40

-20

0

20

40

60

80

100

axis: Komanda axis vendos limitet e boshteve. Simbolikisht përfaqësohet nëpërmejt komandës

së mëposhtëme

min max min max[ , , , ]x x y yaxis

text: Komanda text përdoret për vendosjen e tekstir në një pozicion të caktuar në grafik.

Simbolikisht përfaqësohet nëpërmejt komandës së mëposhtëme

( , , ' ', ' ')x y teksti sctext

ginput: Komanda ginput na lejon te zgjedhim një pikë cfarëdo në grafike. Simbolikisht paraqitet

si më poshtë

[ , ]x y ginput

Komanda ginput na lejon të zgjedhim aq pika sa ne dëshirojm.

gtext:Komanda gtext përdoret për vendosjen e tekstit në një pozicion të caktuar në grafik me

ndimën e mausit. Simbolikisht përfaqësohet nëpërmejt komandës së mëposhtëme

(' ')tekstigtext

grid: Komanda grid përdoret për vendosjen e rrjetës në grafik. Kjo komand është e dobishëme

në rastet kur duam të bëjmë më të qartë shkallëzimin e boshteve.

Në grafikun e mëposhtëm jepet një paraqitje grafike ku përdoren disa nga komandat e përshkruara më

sipër.

>> t=0:0.1:20;

>> (t,sin(t))

>> xlabel('Koha(sec)')

>> ylabel('ydata')

>> title('Grafiku sin(t)')

>> grid

>> gtext('sin(t)')

>> axis([0 20 -1.5 1.5])

plot

subplot: Komanda subplot përdoret për vendosjen e mëshumë se një grafiku në të njëjtën drtiare

grafike. Simbolikisht paraqitet si më poshtë

( , , )p q rsubplot

Përmasa e grafikut rregullohet nga një matricë me përmasa p q në gjithë madhësin e dritares

grafike të Matlab-it. Indeksi i tretë r vendos grafikun në ndarjen e r -te në gjithë strukturën të dritares

grafike. Për shembull

>> x=0:0.1:3*pi;

>> y=sin(x);

>> z=cos(x);

>> (2,2,2)

>> (x,y)

>> title('x dhe y')

>> (2,2,3)

>> (x,z)

>> title('x dhe z')

>> (2,2,4)

>> (y,z)

>> title('y dhe z')

subplot

plot

subplot

plot

subplot

plot

0 2 4 6 8 10 12 14 16 18 20-1.5

-1

-0.5

0

0.5

1

1.5

Koha(sec)

ydata

Grafiku sin(t)

sin(t)

4.1 Grafik dy-dimensional

Shpesh lindin problemi i ndërtimit të një vije të lakuar në planin xoy , por kur y nuk është

dhënë në trajtë eksplicite funksion i x . Ekzistojn dy teknika kryesore për ndërtimin e vijave të

tilla, ndërtimi parametrik dhe ndërtimi konturor ose implicit. Ne do diskutojm r këto dy teknika

në vijim.

4.1.1 Ndërtimi parametrik

Herë pas here x dhe y jepen në funksion të disa parametrave. Për shembull rrethi me qëndër

(0,0) dhe rreze 1 mund të shprehet në formën parametrike në trajtën cos(2 )x t , sin(2 )y t

ku t varjon nga 0 në 1. Në këtë rast y nuk është shprehur si funksion i x . Ju mund ta ndërtoni

lehtë këtë vij nëpërmjet komandës plot

>> T = 0:0.01:1;

>> plot(cos(2*pi*T), sin(2*pi*T))

>> axis square

0 5 10-1

-0.5

0

0.5

1x dhe y

0 5 10-1

-0.5

0

0.5

1x dhe z

-1 -0.5 0 0.5 1-1

-0.5

0

0.5

1y dhe z

Figura 2-1

Rezultati është shfaqur në figuren 2-1. Nëse do të kishim përdorur një hapë 0.1 atëherë rezultati

do të ishte një shumëkëndësh.

Nëse ju keni Symbolic Math Toolbox, ndërtimi parametrik është plotësisht i

mundur dhe me anë të komndës ezplot.

ezplot('cos(t)', 'sin(t)', [0 2*pi]); axis square

-1 -0.5 0 0.5 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Figura 2-2

4.1.2 Ndërtimi konturor dhe implicit

Ndërtimi konturor i një funksioni me dy variabëla është ndërtimi i vijave të nivelit të këtij

funksion, që do të thotë janë grupe pikash në planin xoy ku funksioni ka vlerë konstante. Për

shembull vijat e nivelit të 2 2x y janë rrathë të qendërzuar në origjinë. Ndërtimi konturor

realizohet me ndimën e komandave meshgrid dhe contoure. Komanda meshgrid krijon një rrjet

pikash në një zonë drejtkëndhsë më ndarje të përcaktuar. Rrjeta e pikave më pas shfrytezohet nga

contoure për të realizuar ndërtimin konturor.

Një paraqitje konturore e 2 2x y realizohet si vijon

>> [X Y] = meshgrid(-3:0.1:3, -3:0.1:3);

>> contour(X, Y, X.^2 + Y.^2)

>> axis square

-1 -0.5 0 0.5 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

x

y

x = cos(t), y = sin(t)

Figura 2-3

Rezultati është shfaqur në figuren 2-3. Kemi përdorur konceptin vektorial të Matlab-it për të

krijuar një rrjetë më ndarje 0.1 në të dy drejtimet. Komanda axis square është përdorur për të

bërë një shkallëzim të njëjtë në të dy boshtet ,x y .

Ju mund të specifikoni vijat e nivelit të cilat dëshironi të ndërtoni duke shtuar një vektor në

komandën contoure. Për shembull nëse duam të ndërtojmë rrathët me reze 1, 2 dhe 3

shkruajmë

contour(X, Y, X.^2 + Y.^2, [1 2 3])

Vektori i më sipërm duhet të mbaj të paktën dy element. Nëse ju dëshironi të ndërtoni një vijë

nivelit të veteme, atëherë ju duhet ta specifikoni të njëjtin nivel dy herë. Për shembull

-3 -2 -1 0 1 2 3-3

-2

-1

0

1

2

3

nëse duam të ndërtojmë rrethin me rreze 1 shkruajmë

contour(X, Y, X.^2 + Y.^2, [1 1])

Për të ndërtuar lemniskatën me ekuacion 2 2 2 2 2( )x y x y , shkruajmë ekuacionin në trajtën

2 2 2 2 2( ) 0x y x y

>> [X Y] = meshgrid(-1.1:0.01:1.1, -1.1:0.01:1.1);

>> contour(X, Y, (X.^2 + Y.^2).^2 - X.^2 + Y.^2, [0 0])

>> axis square

>> title('Lemniskata x^2-y^2=(x^2+y^2)^2')

Figura 2-4

Lemniskata x2-y2=(x2+y2)2

-1 -0.5 0 0.5 1

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Nëse ju keni Symbolic Math Toolbox, ashtu si në rastin e ndërtimit

parametrik edhe ndërtimi konturor është plotësisht i mundur dhe me anë të komndës ezplot.

>> ezplot(’(x^2 + y^2)^2 – x^2 + y^2’,[-1.1, 1.1], [-1.1, 1.1]); axis square

4.2 Fusha vektoriale

Komanda bazë e Matlab-it e cila realizon ndërtimin e fushave vektoriale është quiver

Vektorët mund të pozicinohen në pika me ndarje të barabarta në plan (nëse kordinatat e x dhe y

nuk janë dhënë në trajtë eksplicite), ose të vendosen në pozicione të caktuar. Për këtë qellim

komanda quiver është e pajisur me një argument opsional shkallzimi. Skripti i mëposhtëm

ndërton fushën vektoriale me një pikë samar.

>> [x, y] = meshgrid(-1.1:.2:1.1, -1.1:.2:1.1);

>> quiver(x, -y); axis equal; axis off

Figura 2-5

4.3 Grafik Tre-Dimensional

Matlab ofron nje koleksion të pasur komandash për ndërtimin e grafikve tre-dimnesional .

4.3.1 Vija në hapsirën tre-dimnesionale

Për ndërtimin e vijave në hapsirën tre-dimensionale komanda bazë është plot3 e cila funksion si

komanda plot me ndryshimin që komanda plot3 merr tre vektor, një vektor për kordinatat e x-it,

një vektor për kordinatat e y-it dhe një vektor për kordinatat e z-it. Për shembull ne mund të

ndërtojmë një helikoid.

>> T = -2:0.01:2;

>> plot3(cos(2*pi*T), sin(2*pi*T), T)

Figura 2-6

Nëse ju keni Symbolic Math Toolbox , atëherë ekziston një rrugë më e shkurtër

nëpërmjet komandës ezplot3.

>> ezplot3(’cos(2*pi*t)’, ’sin(2*pi*t)’, ’t’, [-2, 2])

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1-2

-1

0

1

2

4.3.2 Sipërfaqet në hapsirën tre-dimnesionale

Janë dy komanda bazë për ndërtimin e sipërfaqeve në hapsirën tre-dimnesionale: mesh dhe surf.

Ekzistojn dy mënyra të ndryshme për përdorimin e secilës komand një për ndërtimin e

sipërfaqeve kur z është dhënë funksion i x dhe y, dhe tjetra për sipërfaqt parametrike kur x, y dhe

z janë dhënë funksione të dy parametrave të tjerë. Le të ilustrojmë secilën nga komandat e

përmendura më sipër.

Për të ndërtuar ( , )z f x y , në fillim përdorim komandën meshgrid si në rastin e ndërtimit

konturor. Për shembull "sipërfaqja samar" 2 2z x y mund të ndërtohet si vijon:

>> [X,Y] = meshgrid(-2:.1:2, -2:.1:2);

>> Z = X.^2 - Y.^2;

>> mesh(X, Y, Z)

Figura 2-7

Rezultati i kërkuar jepet në figurën 2-7, cila duket shume bukur , kjo sepse Matlab ngjyros sipërfaqen

me një skemë ngjyruese në varësi të kordinatave të z-it.

-2

-1

0

1

2

-2

-1

0

1

2-4

-2

0

2

4

Me Symbolic Math Toolbox , ekziston një rrugë më e shkurtër nëpërmjet

komandës ezmesh

>> ezmesh(’x^2 – y^2’, [-2, 2], [-2, 2])

Nëse duam të ndërtojmë një sipërfaqe e cila nuk mund të jepet me ekuacionin e trajtës

( , )z f x y , për shembull sferën 2 2 2 1x y z , atëherë është mira ta parmetrizojmë ekuacionin

e mësipërm duke përdorur një sistëmi kordinativ të përshtatshëm, në këtë rast kordinatat

cilindrike ose sferike. Për shembull ne mund të marrim si parameter boshtin z dhe kendin në

plani xoy . Nëse me r shënojmë disatncën nga boshti z-të atëherë ekuacioni i sferës merr formën

2 2 1r z ose 2 21r z , kështu që

21 cosx z , 21 siny z .

Në këtë mënyrë mund të ndërtojmë sipërfaqen e kërkuar me një nga procedurat e përshkruara

më sipër .

>> [theta, Z] = meshgrid((0:0.1:2)*pi, (-1:0.1:1));

>> X = sqrt(1 - Z.^2).*cos(theta);

>> Y = sqrt(1 - Z.^2).*sin(theta);

>> surf(X, Y, Z); axis square

Figura 2-8

Me Symbolic Math Toolbox , ndërtimi parametrik i sipërfaqeve thjeshtohet

shumë me ndimën e komandave ezsurf dhe ezmesh , nëpërmjet të cilave merrni rezultat të ngjashëm

me atë të pasqyruar në figuren 2-8,

4.4.Efekte të vecanta

Deri tani kemi diskutuar vetëm komandat grafike të cilat krijojnë ose modifikojnë një figurë

satike .Matlab është i aftë të të kombinojë disa figura në një dritare të vetme (e diskutuar kjo në

hyrje të kapitullit), ose të krijojë një grafik të animur i cili ndryshonë në lidhje me kohën

4.4.1 Animime

Matlab ka a dy mënyra për të animuar një grafik. E para, nëse llogaritjet kompjuterike jane

mjaftushëm të shpejta, atëherë funksioni standart për paraqitjen grafike mund të përdoret në

mënyrë të tillë që të shfaq një animin të lehtë të grafikut. Më poshtë jepet fragmenti i një kodi i

cili tregon se si cikli for dhe komanda standarte plot përdoren për të animuar një grafik.

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

for j=1:n komanda plot end

Mënyra e dytë për të realizuar një figurë të animuar është duke përdorur comet, e cila realizon

ndertimin parametrik të një vije (ashtu si komanda plot), me ndryshimin e vetem se ju mund ta

gjurmoni vijën në kohë

>> t = 0:0.01*pi:2*pi;

>> figure; axis equal; axis([-1 1 -1 1]); hold on

>> comet(cos(t), sin(t))

Për animime më të komplikuara, ju mund të përdorni getframe dhe movie. Për shembull skripti i

mëposhtëm realizon animimine një fije lëkundse.

>> x = 0:0.01:1;

>> for j = 0:50

plot(x, sin(j*pi/5)*sin(pi*x)), axis([0, 1, -2, 2])

M(j+1) = getframe;

end

>> movie(M)

Vlen të theksohet se përdorimi i komandës axis është shumë i rëndësishëm për të siguruar se

secila formë e levizjes është vizatuar në boshte kordinatve të njëjta, përndryshe shkallëzimi i

boshteve do të ishte i ndryshëm në secilën formë dhe rezultati i lëvizjeve do të ishte corientues.

Pikpresja (;) pas komandës getframe është gjithashtu shumë e rëndësishëme; pasi pengon

shfaqen e shumë të dhënave numerikë në cdo formë të lëvizjes.

Shembulli . Animimi i lëvizjes së një prelle

Në munges të rezistencës së ajrit, kordinatat karteziane të lëshimit të një prelle me shpejtësi

fillestare 0v dhe kënd 0 mund të llogariten si më poshtë

0 0cos( )x v t

2

0 0sin( ) 0.5 y v t gt

ku 29.8 /g m s . Ndërtoni një skript i cili realizon animimin gafik të prellës për 0 5 /v m s dhe

kënd 0 45 o .

Skripti i cili realizon animimin grafik të prellës mund të shkruhet

clc,clf,clear g=9.81; theta0=45*pi/180; v0=5; t(1)=0;x=0;y=0; plot(x,y,'o','MarkerFaceColor','b','MarkerSize',8) axis([0 3 0 0.8]) M(1)=getframe; dt=1/128; for j = 2:1000 t(j)=t(j-1)+dt; x=v0*cos(theta0)*t(j); y=v0*sin(theta0)*t(j)-0.5*g*t(j)^2; plot(x,y,'o','MarkerFaceColor','b','MarkerSize',8) axis([0 3 0 0.8]) M(j)=getframe; if y<=0, break, end end pause movie(M,1)

Si fillim kemi përcaktuar gjatësin e boshteve x dhe y. Së fundmi sigurohemi që gjatë kohës që

Matlab ekzekuton ciklin për të prodhuar imazhin, mos të mbivendosim mbi dritaren aktive , një

dritare tjetër ( si "Commanda Window"). Nëse bëni dicka të tillë, përmbajtia e dritares tjetër do

të përfshihet në format e lëvizjes.

Matlab 6 është i pajisur më një komandë të re movieview të cilën ju mund ta përdorni në

vënd të komandës movie për të shikuar animimet në dritare të ndryshme me një komandë

për ta përsëritur lëvizjen kur ajo ka përfunduar.

Ushtrime

1. Shkruani një program lidhjepikash.m i cila paraqet në një grafik nga vektorët,

[0, 1, 2,-2,-1, 0]x dhe [0, 0, 1, 1, 0, 0]y . Secila pikë duhet të paraqitet si një yllë,

dhe pikat duhet të lidhen me vija të drejt.

2. Përdorni plot dhe/ ose ezplot për të ndërtuar grafikët e shprehjeve të mëposhtëme.

(a) 3 y x x për 4 4 x

(b)2

1sin

y

x për 2 2 x . Përdorni të dyja komandat plot dhe/ ezplot

A janë të dy rezultatet të saktë.

Udhëzim. Nëse përdorni komandën plot sigurohuni që të keni ndërtuar një numër të

mjaftushëm pikash.

(d) (c) tan2

xy për x dhe 10 10 y

Udhëzim. Ndërtoni grafikun më pas përdorni axis .

(d)2

x

y e dhe 4 2 y x x për 2 2 x . (Ndërtimi të bëhet në të njëjtin bosht aksesh)

3. Shkruani një program parabola.m e cil ndërton grafikun e funksionit 2( ) f x ax bx c në intervalin 3 3 x . Përdorni linspace për të përcaktuar

vektorin x dhe llogarisni ( ( ))f x k në cdo pikë ( )x k . Provoni për vlera të ndryshme të

kostanteve , ,a b c .

4. Shkruani një program sinwave.m i cili ndërton grafikun e funksionit

( ) sin

xf x

për 3 3 x . Përdorni linspace për të përcaktuar vektorin x dhe llogarisni

( ( ))f x k në cdo pikë ( )x k . Provoni për vlera të ndryshme 0 .

5. Përdorni komandën contour për të realizuar:

a) Ndërtimin e vijave të nivelit të funksionit 3 3( , ) 3 f x y y y x në zonënë e përcaktur si

më poshtë

I. 1 1

1 1

x

y

II. 3 3

3 3

x

y

III. 8 8

8 8

x

y

b) Ndërtoni vijën 3 33 5 y y x

c) Ndërtimin e vijave të nivelit të funksionit ( , ) ln ln f x y y x x y të cilat përmbajnë

pikën (1,1)

6. Ndërtoni sipërfaqet e mëposhtëme

a) sin sinz x y për 3 3

3 3

x

y, dhe

x

y

b) 2 2 2 2( )cos( ) z x y x y për

1 1

1 1

x

y

7. Shkruani një program plotdamped.m i cili ndërton grafikun e funksionit

( ) cos 2

x

ax

f x e

Zgjidhni një zonë të përshtatshëme për funksionin, dhe ndryshoni vlerat e parametrave a

dhe .

8. Shkruani një program plotharmonic.m i cili ndërton grafikun e lëvizjes harmonike

në kohë, të përshkruar nga ekuacioni i mëposhtëm

( ) cos( ) x t A t

Ku A është amplituda e lëvizjes, frekuenca këndore, faza të cilat të gjitha janë

kostante . Ekzekutoni programin me vlerat

a) 2A dhe 2

b) 2.6A dhe 3

2

c) 4A dhe 2

9. Shkruani një program plotLJ.m i cili ndërton grafikun e vijave të dhenë në trajtë

parametrike me karkateristika 1, ,T a b dhe

cos( )x a t

sin( ) y b t

Ku 2

T

Jepen [0, ]t T , , [0,10]a b dhe [0,2 ]

10. Ndërtoni vijën C të përcaktuar nga ekuacionet parmetrike të mëposhtëme

2

2

3 12

1( ) 1 tan (1 ) 1 0

33

11 tan (1 ) 0 1

33

tt

x t t t

t t

2

2

3 12

1( ) tan (1 ) 1 0

33

1tan (1 ) 0 1

33

tt

y t t t

t t

11. Nëse një trup hidhet vertikalisht me një shpejtësi fillestare 0v , lartësia e trupti në cdo cast

kohe llogaritet me anë të ekuacionit 2

0 0( )2

gt

h t h v t

Ku 0h është lartësia fillestare e trupit, 29.8 /g m s nxitmi gravitacional. Për trupin në

shqyrtimi mund të llogarisim energjinë kinetike, potenciale dhe mekanike sipas

ekuacioneve të mëposhtëme

2

2k

mvE

pE mgh

m k pE E E

Ku m është masa e trupit, v shpejtësia vertikale e trupti.

Shkrunai një program levizjavertikale.m, për një top tenisi me masë 58m g i

cili hidhet vertikalisht lartë nga një lartësi fillestare 0 0.8h m me shpejtësi fillestare

0 17.8 /v m s . Llogarisni për 500tN hapa dhe 4fundT

(a) Lartësin h të topti.

(b) Shpejtësin vertikale të topit, dh

dt,

(c) Energjinë kinetike( kE ),potenciale(pE ) dhe mekanike ( mE )

Përdorni komandën subplot për të ndërtuar dhe animuar tre grafikët e mëposhtëm

0 17.8 /v m s . Llogarisni për 500tN hapa dhe 4fundT

(d) Lartësin h të topti të tenisit .

(e) Shpejtësin vertikale të topit, dh

dt,në lidhje me kohën t

(f) Energjinë kinetike( kE ),potenciale(pE ) dhe mekanike ( mE ) në lidhje me kohën t

Përdorni komandën legend për të krijuar një legjende që të bëj dallimin e grafikëve

nga njëri-tjetri. Secili grafik dhe boshte duhet të emërtohet.

12. Shpërndarja Fermi-Dirac e cila jep probabilitetin që një gjëndje energjitike e lejuar

të okupohet nga një elektron në temeperaturë T jepet nëpërmjet formulës

( )

1( )

1

f

e

Ku është potenciali Fermi dhe është proprcional me temperaturën( në Kelvin).

Ndërtoni grafikun e funksionit ( )f në varësi të për rastet e më poshtëme

a. 1 dhe 0.002

b. 0.03 dhe 0.025

c. 0.01 dhe 0.025

d. 0.001 dhe 0.001

e. Përcaktoni vlerën e ( )f kur

13. Ndërtoni garfikët e derivateve të funksioneve në intervalet e përcaktuara.

(a) 1

ln1

x

x në 2 3 x

(b) 21 1

ln x

x në 1 3 x

(c) ln tanh( )2

x në 1 5 x

(d) arctan sinh( )x në 0 10 x

(e) ln csc( ) tan( )x x në 02

x

Kapitulli 5

ANALIZA E QARQEVE ELEKTRIKE

5.1 Qarku RC

Shqyrtojmë qarkun RC si në figurë

Figura 5.1

Duke përdorur ligjin Kirkofit për rrymën në qarkun e mësipërm, shkruajmë ekuacionin

0 0( ) ( )0

dv t v tC

dt R (5.1)

ose

0 0( ) ( )0

dv t v t

dt CR

Nëse shënojmë me mV tensionin fillestar në kondesatorin C , atëherë zgjidhja e ekuacionit (5.1)

është

0 ( )

t

RCmv t V e (5.2)

Ku RC është konstante kohe

Ekuacioni (5.2) përfaqëson tensionin në lidhje me kondesatorin e shkarkuar. Për të gjetur

tensionin në lidhje me kondesatorin e ngarkuar, shqyrtojmë figurën (5.2)

Figura 5.2

Duke përdorur ligjin Kirkofit për rrymen marrim

0 0( ) ( )0

sdv t v t V

Cdt R

(5.3)

Nëse filimisht kondesatori është i pa ngarkuar , 0 ( ) 0v t në 0t , atëherë zgjidhja e ekuacionit

(5.3) është

0 ( ) 1

t

RCsv t V e (5.4)

Me ndimën e disa shembujve do të tregojmë se si Matlab mund të përdoret për të zgjidhur

probleme që lidhen me qarqet RC.

Shembulli 5.1

Supozojmë se në figurën 5.2 jepet 10C F . Ndërtoni me ndimën e paketës Matlab grafikun që

jep tensionin në kondesator nëse a) 1 R k , b) 10 R k dhe c) 0.1 R k

Zgjidhja

Skriptin në Matlab

%Ngarkimi i qarkut RC % c = 10e-6; r1 = 1e3; tau1 = c*r1; t = 0:0.002:0.05; v1 = 10*(1-exp(-t/tau1)); r2 = 10e3; tau2 = c*r2; v2 = 10*(1-exp(-t/tau2)); r3 = .1e3; tau3 = c*r3; v3 = 10*(1-exp(-t/tau3)); plot(t,v1,'+',t,v2,'o', t,v3,'*') axis([0 0.06 0 12]) xlabel('Koha , s') ylabel('Tensioni ne kondesator') text(0.03, 5.0, '+ per R = 1 Kilohms') text(0.03, 6.0, 'o per R = 10 Kilohms') text(0.03, 7.0, '* per R = 0.1 Kilohms')

Figura 5.3

Nga figura 5.3 shohim se sa më e vogël të jetë konstantia e kohës aq më e vogël është koha e

ngarkimit të kondesatorit.

Shembulli 5.2

Për figurën 5.2 tensioni në hyrje është një sinjal drejtkëndësh me një amplitudë 5V dhe gjerësi

0.5s. Nëse 10C F ndërtoni grafikun e tensionit në dalje 0 ( )v t kur a) 1000 R dhe

b) 10,000 R .Grafiku duhet të filloj nga 0 dhe të përfundoj në 1.5t s

Skripti në Matlab

function [v, t] = rceval(r, c) % rceval eshte nje funksion qe llogarit % tensionin ne dalje per nje rezistences dhe kapacitete % te dhene % Perdorim [v, t] = rceval(r, c) % r eshte vlera rezistenca (ohm) % c eshte vlera e kapacitetit (Faradej) % v eshte tensioni ne dalje % t eshte koha qe i korespondon tensionit v tau = r*c; for i=1:50 t(i) = i/100; v(i) = 5*(1-exp(-t(i)/tau)); end vmax = v(50); for i = 51:100 t(i) = i/100;

0 0.01 0.02 0.03 0.04 0.05 0.060

2

4

6

8

10

12Ngarkimi i kondesatorit me tre kostante kohe

Koha , s

Tensio

ni ne k

ondesato

r

+ per R = 1 Kilohm

o per R = 10 Kilohm

* per R = 0.1 Kilohm

v(i) = vmax*exp(-t(i-50)/tau); end end

% Rezultate merren per rezistenca te ndryshme c = 10e-6; r1 = 1000; [v1,t1] = vlerarc(r1,c); r2 = 10000; [v2,t2] = vlerarc(r2,c); % Ndertimi i grafikut te tensionit plot(t1,v1,'*g', t2,v2,'+r') axis([0 1.5 0 6]) title('Pergjigja e qarkut RC kur aplikojm ne hyrje nje sinjal ') xlabel('Koha, s') ylabel('Tensioni, V') text(0.55,5.5,'* per 1000 Ohm') text(0.55,5.0, '+ per 10000 Ohm')

Figura 5.4

0 0.5 1 1.50

1

2

3

4

5

6Pergjigja e qarkut RC kur aplikojm ne hyrje nje sinjal

Koha, s

Ten

sion

i, V

* per 1000 Ohm

+ per 10000 Ohm

5.2 Qarku RL

Shqyrtojmë qarkun e dhënë në figurën 5.5

Figura 5.5

Duke përdorur ligjin Kirkofit për tensionin marrim

( )( ) 0

di tL Ri t

dt (5.5)

Nëse rryma fillestare në bobinë është mI atëherë zgjidhja e ekuacionit (5.5) është

( )

t

mi t I e (5.6)

Ku L

R

Ekuacioni (5.6) përfaqëson përgjigjen natyrale të një qarku RL. Situata e mësipërme

komplikohet nëse shtojmë një burim tensioni ( ) sv t V . Shqyrtojmë figurën 5.6 e cila paraqet një

qark RL me burim tensioni

Figura 5.6

Duke zbatuar ligjin e Kirkofit për tensionin marrim

( )( ) s

di tL Ri t V

dt (5.7)

Nëse rryma fillestare në qark merret e barabartë me zero, atëherë zgjidhja e ekuacionit (5.7)

është

( ) 1

tsV

i tR

e (5.8)

ku L

R

Tensioni në rezistenc është

( ) ( )v t Ri t

( ) 1

t

sv t V e (5.9)

( ) ( ) L s Rv t V V t

( )

t

L sv t V e (5.10)

Shembulli i mëposhtëm ilustron se si Matlab mund të përdoret për të zgjidhur probleme në

qarqet RL.

Në figurën 5.7 jepet një qark sekuencial, rryma në bobinë e të cilit është zero. Në castin 0t ,

celsi lëviz na pozicioni a në atë b ku qendron për 1s . Pas 1s ai zhvendoset nga pozicioni b në

pozicioni c ku qendron për një kohë të pa përcaktuar. Paraqitni grafikisht se si ndryshon rryma

në bobinë në lidhje me kohën.

Figura 5.7

Zgjidhja

Kur 0 1 t s për të gjetur rrymën mund të përdorim ekuacionin (5.9)

1( ) 0.4 1

t

i t e (5.11)

Ku 1

2002

100

Ls

R

Në castin 1t s

0.5

max( ) 0.4 1

i t Ie (5.12)

Kur 1t s për të gjetur rrymën përdorim ekuacionin (5.6)

2

0.5

max( )

t

i t I e (5.13)

2

2001

200

Ls

R

Më poshtë jepet programi në Matlab i cili skicon varësin e rrymës në bobinë nga koha

% Zgjidhja e shembullit 5.3 % tau1 eshte konstantja e kohes kur celsi eshte ne b % tau2 eshte konstantja e kohes kur celsi eshte ne c % tau1 = 200/100; for k=1:20 t(k) = k/20; i(k) = 0.4*(1-exp(-t(k)/tau1)); end imax = i(20); tau2 = 200/200; for k = 21:120 t(k) = k/20; i(k) = imax*exp(-t(k-20)/tau2); end % Skicimi rrymes ne varesi te kohes plot(t,i,'o') axis([0 6 0 0.18]) title('Rryma ne qarkun RL') xlabel('Koha , s') ylabel('Rryma , A')

Figura 5.8

5.3 Qarku RLC

Për qarkun RLC në seri të dhënë si në figurë, duke aplikuar ligjin e Kirkofit për tënsionin

marrim ekuacionin (5.14)

Figura 5.9

( ) 1( ) ( ) ( )

t

s

di tv t L i d Ri t

dt C (5.14)

Duke derivuar ekuacionin (5.14) në lidhje me variabëlin t , marrim

0 1 2 3 4 5 60

0.02

0.04

0.06

0.08

0.1

0.12

0.14

0.16

0.18Rryma ne qarkun RL

Koha , s

Rry

ma ,

A

2

2

( ) ( ) ( ) ( ) sdv t d i t i t di t

L Rdt dt C dt

ose

2

2

( )1 ( ) ( ) ( ) sdv t d i t i t R di t

L dt dt CL L dt (5.15)

Zgjidhja e homogjenit mund të gjendet duke e marrë ( )sv t konstante, pra

2

2

( ) ( ) ( )0

d i t i t R di t

dt CL L dt (5.16)

Ekuacioni karakteristikë (5.16) është

20 a b (5.17)

Ku R

aL

dhe 1

aLC

Pasi përcaktojmë rrënjët e ekuacionit të mësipërm. Supozojmë se rrënjët e ekuacionit janë

,

Atëherë zgjidhja e ekuacionit (5.17) është

1 2( )

t t

bi t e e (5.18)

Ku 1 dhe 2 janë konstante

Nëse ( )sv t kostante atëherë do të kemi

3( ) fi t (5.19)

Zgjidhja e përgjithshëme do të jetë

1 2 3( )

t t

i t e e

Ku 1 dhe 2 dhe 3 janë konstante dhe përcaktohen me ndimën e kushteve fillestare.

Shembulli 5.4 ilustron gjetjen e rrënjëve të ekuacionit karakteristik me ndimën e komandës

roots.

Shembulli 5.4

Për qarkun RLC në seri si në figurën 5.9. Nëse jepen 10L H , 400 R dhe

100C F , ( ) 0sv t , (0) 4i A dhe (0)

15 /di

A sdt

. Përcaktoni ( )i t .

Zgjidhja

Meqënse ( ) 0sv t atëherë duke përdorur ekuacioni (5.16) marrim

2

2

( ) 400 ( )0 1000 ( )

10

d i t di ti t

dt dt

Ekuacioni karakteristik i të cili është

20 40 1000

Me ndimën e komandës roots gjejmë rrënjët e ekuacionit karakteristik

Skripti nëMatlab

p = [1 40 1000];

landa = roots(p)

landa =

-20.0000 +24.4949i

-20.0000 -24.4949i

Duke përdorur rrënjët e ekuacionit karakteristik të gjeneruar nga Matlab , ( )i t jepet si

20

1 2( ) cos(24.4949 ) sin(24.4949 )

t

i t t te

0

1 2 1( ) (0) 4

i t e

20 20

1 2 1 2

( )20 cos(24.4949 ) sin(24.4949 ) 24.4949 sin(24.4949 ) 24.4949 cos(24.4949 )

t tdi tt t t t

dte e

2 1 2

(0)24.4949 20 15 3.8784

di

dt

Pra

20

( ) 4cos(24.4949 ) 3.8784sin(24.4949 )

t

i t t te

Mbase mënyra më e lehetë për të gjetur tensionin dhe rrymën në një qarkë RLC është me ndimën

e trasformimeve të Laplasit. Pasi shkruajmë ekuacionet difernciale për një qarkë RLC me

ndimën e trasformimeve të Laplasit ekuacionet diferenciale kthehen në ekuacione algjebrike. Ku

të panjohurat që janë tensioni dhe rryma pasi zgjidhen në fushë e variablit s, me ndimën e

trasformimit të anasjelltë, zgjidhja shprehet në fushën e kohës.

5.4 Funksionet ODE

Matlab ka dy funksione të fuqishëm për zgjidhjen numerike të ekuacioneve difernciale, ata janë

ode23 dhe ode45 të cilët janë trajtuar në kapitulin 1 paragrafi 1.9.

Forma e përgjithshëme e funksioneve ode është

0 0, ' ', t t ,ft x funks x ode23

0 0, ' ', t t , ode45 ft x funks x

Shembulli 5.5

Për qarkun e figurës 5.2, jepen 10C F , 10,000 R dhe 10sV V . Përcaktoni tensionin në

dalje 0 ( )v t nga intervali 0 në 20ms , duke supozuar se 0 (0) 0v , a) numerikisht,b)analitiksht

Zgjidhje

0 0( ) ( )0

sdv t v t V

Cdt R

0 0( ) ( )0

sdv t v t V

dt CR

pra

0 00

( ) ( )100 10 ( ) sdv t V v t

v tdt CR CR

Duke u mbështetur në zgjidhjen e përgjithshëme të ekuacionit (5.3),kemi

0 ( ) 10 1

t

RCv t e

Skripti në Matlab

% Zgjidhja e ekuacionit diferencial i rendit te pare

% funksioni diff1(t,y) eshte krijuar per te % percaktuar ekuacionin diferncila % m-file i te cilit eshte diff1.m % % Analiza e qarkut RC duke perdorur % funksionet ode dhe zgjidhja analitike % Zgjidhja numerike duke perdorur ode t0 = 0; tf = 20e-3; xo = 0; % Kushtet fillestar [t, vo] = ode23('diff1',[t0 tf],xo); % zgjidhja analitike duke perdorur ekuacioni (5.4) vo_analitik = 10*(1-exp(-10*t)); % Skicimi i te dy zgjidhjeve subplot(121) plot(t,vo,'b') title('Trajtimi numerik ') xlabel('Koha , s'),ylabel('Tensioni ne Kondesator , V'),grid subplot(122) plot(t,vo_analitik,'b') title('Trajtimi Analitk') xlabel('Koha , s'),ylabel('Tensioni ne Kondesator, V'),grid % function dy = diff1(t,y) dy = 100 - 10*y; end

Figura 5.10

Në figurën 5.10 paraqiten grafikishtë rezultatet e marra me ndimën e komandës ode23 dhe

ekuacionit (5.4). Nga të dy grafikët, shohim se rezultatet janë identikë.

Shembulli 5.6

Për qarkun e dhënë në figurën 5.11, nëse jepen 2sI A , 10C F , 10 R dhe 132

L H .

Përdorni zgjidhjen numerike të ekuacionit diferncial për të përcaktuar tensionin ( )v t .

Krahasoni zgidhjen numerike me atë anlitike 1600 400

( ) 6.67 26.67

t t

v t e e

Figura 5.11

0 0.005 0.01 0.015 0.020

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2Trajtimi numerik

Koha , s

Tensio

ni ne K

ondesato

r ,

V

0 0.005 0.01 0.015 0.020

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2Trajtimi Analitk

Koha , s

Tensio

ni ne K

ondesato

r, V

Zgjidhja

Nëse qarku hapet në castin 0t atëherë tensioni në kondesator do të jetë (0) 20cv V , ndërsa

rryma në bobinë (0) 0Li , nga ku mund të shkruajmë

( )( )L

c

di tL v t

dt

( ) ( )0 c c

L S

dv t v tC i I

dt R

Duke thjeshtuar shprehjet e mësipërme

( )( ) cL

v tdi t

dt L

( ) ( ) c S cL

dv t I v ti

dt C C CR

Nëse shënojmë

1

2

( ) ( )

( ) ( )

L

C

x t i t

x t v t

Ekuacionet e mësipërme marrin trajtën

1 2

1( ) ( )

x t x tL

2 1 2

1 1( ) ( ) ( )

SIx t x t x t

C C CR

Krijojmë një m-file në të cilin do vendosen dy ekuacionet diferenciale të mësipërme

Skripti në Matlab

% Zgjidhja e ekuacionit diferencial i rendit te dyte % funksioni diff2(t,y) eshte krijuar per te % percaktuar ekuacionin diferncila % funskioni eshte i percaktuar si me poshte % function xdot = diff2(t,x) xdot = zeros(2,1); is = 2; c = 50e-6; L = 1/32; r = 10; k1 = 1/c ; % 1/C k2 = 1/L ; % 1/L k3 = 1/(r*c); % 1/RC

xdot(1) = k2*x(2); xdot(2) = k1*is - k1*x(1) - k3*x(2); end Për të simuluar ekuacionin diferncial të përcaktuar në diff2 në inetravalin 0 30 t ,shkruajmë

1

2

(0) (0) 0

(0) (0) 20

L

C

x i

x v V

Duke përdorur funksioni ode23 , marrim

% Zgjidhja e ekuacionit diferencial i rendit te dyte % funksioni diff2(t,y) eshte krijuar per te % percaktuar ekuacionin diferncila % m-file i te cilit eshte diff1.m % % Analiza e qarkut RC duke perdorur % funksionet ode % Zgjidhja numerike duke perdorur ode23 t0 = 0; tf = 30e-3; x0 = [0 20]; % Kushtet fillestare [t,x] = ode23('diff2',[t0 tf],x0); subplot(211), plot(t,x(:,2)) xlabel('Koha , s'), ylabel('Tensioni ne Kondesator, V') text(0.01, 7, 'Trajtimi numerik') % Zgidhja analitike t2 =0:1e-3:30e-3; vt = -6.667*exp(-1600*t2) + 26.667*exp(-400*t2); subplot(212), plot(t2,vt) xlabel('Koha, s'), ylabel('Tensioni ne Kondesator, V') text(0.01, 4.5, 'Trajtimi analitik')

Figura 5.12

Shembulli 5.7

Për qarkun e dhënë si në figurë , nëse jepen 5 ( )sv u t , ku ( )u t është sinjali njësi dhe

1 2 3 10 R R R k , 1 2 5 C C F dhe 10L H . Gjeni dhe paraqitni grafikisht tensionin 0 ( )v t

në intervali (0,5)s .

Figura 5.13

Duke shkruar ekuacionet për secilën nyje, marrim

11 1 21

1 2

( )0

sV Vdv t V V

Cdt R R

(5.20)

2 1 22 1

2

( )0

dv t V VC i

dt R (5.21)

Duke përdorur analizën konturore, kemi

0 0.005 0.01 0.015 0.02 0.025 0.030

5

10

15

20

Koha , s

Ten

sion

i ne

Kon

desa

tor,

VTrajtimi numerik

0 0.005 0.01 0.015 0.02 0.025 0.030

5

10

15

20

Koha, s

Ten

sion

i ne

Kon

desa

tor,

V

Trajtimi analitik

12 1 3

( )

di tV i R L

dt (5.22)

Ndërsa dalja ( )y t jepet si

0 1 2( ) ( ) ( ) v t v t v t (5.23)

Duke thjeshtuar ekuacionet (5.20) , (5.21) dhe (5.22)

1 21

1 1 2 1 2 1 1 1

( ) 1 1

sVdv t VV

dt R C R C R C R C (5.24)

2 1 2 1

2 2 2 2 2

( )

dv t V V i

dt R C R C C (5.25)

31 21

( )

Rdi t Vi

dt L L (5.26)

Duke zëvendësuar 1 2 3 10 R R R k , 1 2 5 C C F dhe 10L H në ekuacionet (5.24), (5.25)

dhe (5.26), kemi

11 2

( )40 ( ) 20 ( ) 20 s

dv tv t v t V

dt

21 2 1

( )20 ( ) 20 ( ) ( )

dv tv t v t i t

dt

31 21

( )

Rdi t Vi

dt L L

Krijojmë një m-file në të cilin do vendosen dy ekuacionet diferenciale të mësipërme

Skripti në Matlab

% Zgjidhja e një sistemi ekuacionesh diferenciale te rendit te pare % funksioni diff3(t,y) eshte krijuar per te % percaktuar ekuacionin diferncila % funskioni eshte i percaktuar si me poshte % function vdot = diff3(t,v) vdot=zeros(3,1); %Vektor shtylle vdot(1) = -40*v(1) + 20*v(2) + 20*5;

vdot(2) = 20*v(1) - 20*v(2) - v(3); vdot(3) = 0.1*v(2) -1000*v(3); end

Kur 0t sinjali njësi është zero, pra

0 1 2(0) (0) (0) 0 v i v

Duke përdorur funksionin ode45 , marrim

% Zgjidhja e një sistemi ekuacionesh diferenciale te rendit te pare % funksioni diff3(t,y) eshte krijuar per te % percaktuar ekuacionin diferncila % funskioni eshte i percaktuar si me poshte % m-file i te cilit eshte diff3.m % % Analiza e qarkut RLC duke perdorur % funksionet ode % Zgjidhja numerike duke perdorur ode45 t0 = 0; tf = 2; x0 = [0 0 0]; % Kushtet fillestare [t,x] = ode45('diff3', [t0 tf], x0); tt = length(t); for i = 1:tt vo(i) = x(i,1) - x(i,2); end plot(t, vo) title('Analiza e Qarkut RLC') xlabel('Koha, s'), ylabel('Tensioni, V')

Figura 5.14

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20

0.2

0.4

0.6

0.8

1

1.2

1.4Analiza e Qarkut RLC

Koha, s

Tensio

ni, V

Ushtrime

5.1 Për qarkun e figurës U 5.1 të gjendet 0 ( )v t nëse celsi është i hapur në 0t . Skiconi

0 ( )v t në intervalin e kohës 0 5 t s

Figura U 5.1

5.2 Në figurën U 5.2 jepet qarku RL. Gjeni ( )i t në intervalin 0 10 t msnëse celsi është i

mbyllur në 0t . Vlerat e rezistencave janë në Ohm

Figura U 5.2

5.3 Figura U 5.3 paraqet një qarku RLC në seri, ku celsi është i mbyllur në 0t .Të

gjendet 0 ( )v t duke përdorur Matlab-in nëse energjia fillestare e grumbulluar në cdo

element të qarkut është zero .

Figura U 5.3

5.4 Të zgjidhet në Matlab ekuacioni diferencial i mëposhtëm

3 2

3 2

( ) ( ) ( )7 14 12 ( ) 10

d v t d v t dv tv t

dt dt dt

me kushte fillestare

(0) 1,v (0)

2,dv

dt

2 (0)5,

d v

dt

Skiconi ( )v t në intervalin 0 10 t s

5.5 Në figurën U 5.4 jepet qarku RC me 5 ( )sV u t . Duke supozuar se tensioni fillestar në

secilin kondesator është zero përcaktoni 1( )V t , 2 ( )V t , 3( )V t dhe 4 ( )V t në intervalin

0 20 t s

Figura U 5.4

Kapitulli 6

APLIKIME

Në këtë kapitull do të trajtojmë shembuj për tju treguar se si mund ta praktikoni Matlab-in në

probleme që ndeshen në disiplina të ndryshme. Shembujt që do të trajtojmë janë:

Ndricimi i dhomës

Simulimi Monte Karlo

Dinamika e Popullimeve

Modelet Lineare Ekonomike

Programimi Linear

Lavjersi 0360

Zgjidhja Numerike e Ekuacionit të Përcueshmërisë

Në shembujt e trajtuar nuk janë shpjeguar të gjitha komandat e përdorura, ju mund të mësoni më

shumë rreth tyre duke shkruar "help" dhe më pas emrin e komandës përkatse. Simulink është

përdorur si një mjet alternativë për trajtimin e shembujve lidhur me zgjidhjen numerike të

ekuacionit të përcueshmërisë dhe dinamikës së popullimeve.

Shëmbujt që shqyrtohen kërkojnë nivele të ndryshme të njohurive matematikore në fusha të

ndryshme ," Ndricimi i dhomës", " Dinamika e Popullimeve" shfrytëzojn njohuritë e shkollës së

mesme. "Simulimi Monte Karlo" kërkon njohuri në fushën e statistikës dhe propabilitetit;

Lavjersi 0360 kërkon njohuri në fushën e fizikës dhe ekuacioneve diferncial; "Modelet Lineare

Ekonomike", "Programimi Linear", kërkojn disa njohuri algjebrike:"Zgjidhja numerike e

ekuacionit të përcueshmërisë kërkon njohuri në fushën e ekuacioneve me derivate të pjesshme.

Edhe pse në disa prej shembujve të mësipërm ju mund të mos keni njohuritë e duhura

matematikore, ju do jeni të aftë të mësoni dicka rreth Matlab-it lidhur me to.

6.1 Ndricimi i dhomës

Supozojmë se duhet të vendosimi llabat në tavanin e një dhome me përmasa 10 4x

dhe lartësi 3 metra në mënyrë që të kemi ndricim sa më të mirë. Për arsy estetike na kërkohet të

përdorim një numër të vogël llambash inkandeshente. Ne duam llamba të cilat në total kanë

maksimumi një fuqi prej 300vat. Lind problemi: për një numër të dhënë llambash, si duhen

vendosur në mënyrë që intesiteti i dritës në pjesët më të herta të dhomës të jetë maksimal. Ne

gjithashtu duam të shohim se cfarë përmisimesh marrim kur kalojmë nga një llambë me fuqi 300

vat, në dy llamba secila me fuqi 150vat, dhe në tre llamba secila me fuqi 100vat. Për ti bërë

gjërat më të thjeshta supozojmë se në dhomë nuk ka asnjë paisje dhe drita e reflektuar nga muret

është e papërfillshme me atë që vjenë në mënyrë të drejtpërdrejt nga llambat.

6.1.1 Një llambë 300vat

Nëse është vetëm një llambë atëherë duhet ta vendosim atë në qendër të tavanit, le të shohim se

si ndricohet dyshemeja. Futim në përdorim kordinatën x vlerat e të cilës lëvizin nga 0 në 10 dhe

kordinatën y vlerat e të cilës lëvizin nga 0 në 4. Intesiteti në një pikë të dhënë, i matur në vat për

metër katrorë është fuqia e llambës, 300 pjestuar me 4 shumëzuar me disatncë në katrorë nga

llamba. Meqënse llamba është në një lartësi 3 metra nga pika (5,2) që ndodhet në dyshemen e

dhomës, atëherë ne mund ta shprehim intesitetin e e dritës në një pikë cfarëdo (x,y) të dhomës si

vijon:

syms x y; illum = 300/(4*pi*((x - 5)ˆ2 + (y - 2)ˆ2 + 3ˆ2))

illum =

75/pi/((x-5)ˆ2+(y-2)ˆ2+9)

Ne mund të përdorim komandën ezcontourf për të ndërtuar shprehjen e mësipërme mbi gjithë

dhomën.Gjithashtu kemi përdorur colormap për të rregulluar shkallën e ngjyrave, e cila na

ndimonë të shohim ndricimin

ezcontourf(illum,[0 10 0 4]); colormap(gray);

axis equal tigh

Pjesët më të errta të dhomës janë qoshet e saj. Le të përpiqemi të gjemë intesitetin e dritës në

qoshet e dhomës dhe në qendër të saj.

subs(illum, {x, y}, {0, 0})

subs(illum, {x, y}, {5, 2})

ans =

0.6282

ans =

2.6526

Qendra e dhomës në nivelin e dyshemes ka një intesitet drite rreth katër herë më të fuqishëm se

qoeshet kur vendoset vetëm një llambë. Detyra jonë është të realizojmë një ndricim uniformë të

dhomës duke përdorur më shumë llamba me një fuqi totale prej 300vat. Përpara se të

vazhdojmë më tej, vëm re se përdorimi i komandës ezcontourf na kufizon disi, kjo kamand nuk

na lejon të kontrollojmë numrin e kontureve në figurë. Kontrolle të tilla janë mjaftë të dobishëme

për të parë intesitetin e ditës, prandaj në vijim do të përdorim komandën contourf në vënd të asj

ezcontourf.

6.1.2 Dy llamba me nga 150vat

Në këtë rast duhet të marrim vendimin se ku duhen vendosur këto dy llamba. Mendimi i

zakonshë na thotë ti vendosmin simetrikisht përgjatë një vje në drejtimin gjatësor të dhomës,

përgjatë vijës y=2 . Përcaktojmë intesitetin e dritës në një pikë (x,y) të dyshemes në lidhje më

një llambë 150vat në pozicionin (d,2) në tavan.

>> light2 = inline(vectorize('150/(4*pi*((x - d)^2 + (y - 2)^2 +3^2))'), 'x', 'y', 'd')

light2 =

x

y

75/( ((x - 5)2 + (y - 2)2 + 9))

0 1 2 3 4 5 6 7 8 9 10

-1

0

1

2

3

4

5

Inline function:

light2(x,y,d) = 150./(4.*pi.*((x - d).^2 + (y - 2).^2 +3.^2))

Le të krijojmë një ide rreth fomës së ndricimit në qoftë se vendosim një llambë në d=3 dhe një

tjetër në d=7,duke përcaktur vizatimin e 20 kontureve.

>> [X,Y] = meshgrid(0:0.1:10, 0:0.1:4); contourf(light2(X, Y, 3)+ light2(X, Y, 7), 20);

>> axis equal tight

>> colormap(gray);

Dhoma është më shumë e ndricuar se në rastin kur kishim një llambë të vetme, por duket që

llambat janë më afër se c'duhen, nëse llambat i zhvendosim kundrejt njëra tjetrës në lidhje me

qëndrën e dhomës do të marrim një ndricim më të mirë të qosheve. Le të ndryshojmë pozicionin

e vendosjes së llambave në d=2 dhe d=8

>> contourf(light2(X, Y, 2) + light2(X, Y, 8), 20);

>> axis equal tight

10 20 30 40 50 60 70 80 90 100

10

20

30

40

Ky është një përmirësim. Qoshet e dhomës janë akoma të errta, megjithëse intesiteti i dritës

përgjat mureve zvogëlohet kur jemi duke lëvizur drejt qendrës ( afër x=5), për aq kohë sa llambat

i zhvendosim kundrejt njëra tjetrës. Për të ndricuar më shumë qoshet e errta të dhomës ne duhet

të vazhdojmë to zhvendosim llambat kundretj njëra tjetrës, për shembull d=1, d=9.

contourf(light2(X, Y, 1) + light2(X, Y, 9), 20);

axis equal tight

Duke u mbështetur në rezultatin e mësipërm shohim se qendra e dhomës është më pak e ndricuar

se qoshet e saj, duke arritur në konkluzionin se llambat janë zhvendosur më shumë se c'duhet

kundrejt njëra tjetrës. Le të përpiqemi të gjejmë pozicionin më të mirë për vendosjen e llambave.

Në përgjithësi ne mund të vendosim një llambë në pozicionin x=d dhe tjetra simetrikisht do të

pozicionohet në x=10-d , ku vlerat e d janë ndërmjet 0 dhe 5. Duke gjykuar nga shembujt e

10 20 30 40 50 60 70 80 90 100

10

20

30

40

10 20 30 40 50 60 70 80 90 100

10

20

30

40

mësipërm zonat e pa ndricuar mirë do të jenë ose qoeshet ose meset e dy mureve gjatësor. Për

shkakë të simetrisë ndricimi i qosheve të dhomës do të jetë i njejtë, për këtë arsye mjafton të

analizojmë intesitetin vetëm në një nga qoshet e dhomës (0,0) në funksion të d

d = 0:0.1:5; plot(d, light2(0, 0, d) + light2(0, 0, 10 - d))

Sic e prisnim, sa më e vogël të jetë d aq më të ndricuara janë qoshet e dhomës. Në kontrast me

intesitetin e dritës në mesin (5,0) të të dy faqeve gjatësor, (përsëri për arsye simetrie nuk ka

rëndësi se cilin nga dy faqet gjatësore të dhomës zgjedhim) e cila do të rritet me rritjen e d drejt

vlerës 5

plot(d, light2(5, 0, d) + light2(5, 0, 10 - d))

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

0.65

0.7

0.75

0.8

0.85

0.9

0.95

1

1.05

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

0.8

1

1.2

1.4

1.6

1.8

2

Le të gjejmë vleren minimale të d-së e cila është vlera për të cilën dy grafikët e mësipërm priten

.

plot(d, light2(5, 0, d) + light2(5, 0, 10 - d))

hold on; plot(d, light2(0, 0, d) + light2(0, 0, 10 - d));

hold off

Vlera optimale e d-së është është afër pikës 1.4 me intesitet më të vogël se 1. Për ta gjetur

ekzatësisht vlerën optimale të d-se kemi:

syms d; eqn = inline(char(light2(0, 0, d) + light2(0, 0, 10 -d) - light2(5, 0, d) - light2(5, 0,10 -

d)))

eqn =

Inline function:

eqn(d) = 75/2/pi/(dˆ2+13)+75/2/pi/((-10+d)ˆ2+13)-75/2/pi/((5-d)ˆ2+13)-75/2/pi/((-5+d)ˆ2+13)

fzero(eqn, [0 5])

ans =

1.4410

Pra llambat duhet të vendosen në një distance prej 1.44 metra. Për këtë konfigurim, intesiteti i

përafërt në pjësët më të errta të dhomës do të jetë

light2(0, 0, 1.441) + light2(0, 0, 10 - 1.441)

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

0.8

1

1.2

1.4

1.6

1.8

2

ans =

0.9301

Pra pjesët më të errta të dhomës kanë një intesitet rreth 0.9301, në krahasim me vlerën 0.63 e

cila i korespondon situatë kur kishimi vetëm një llambë. Kemi një përmisim me rreth 50%.

Tre llamba me nga 100vat

Rripërcaktojmë funksionin e intesitetin të dritës për tre llamba secila me fuqi 100vat .

light3 = inline(vectorize('100/(4*pi*((x - d)^2 + (y - 2)^2 +3^2))'), 'x', 'y', 'd')

light3 =

Inline function:

light3(x,y,d) = 100./(4.*pi.*((x - d).^2 + (y - 2).^2 +3.^2))

Supozojmë se vendosim një llambë në qëndër të dhomës dhe dy të tjerat simetrikisht si në rastin

e diskutuat më sipër. Më poshtë shohim ndricimin e dhomës kur llabat të cilat janë vendosur

simetrikisht janë në distanc secila nga 1m nga faqet të cilat përfqësojnë gjerësin e dhomës

[X,Y] = meshgrid(0:0.1:10,0:0.1:4); contourf(light3(X,Y,1)+ light3(X,Y, 5) + light3(X,Y,9), 20);

axis equal tight

Nga rezultati i më sipërm shohim se llambat duhen vendosur më afër mureve( Një veprim që jo

cdo kujt mund ti duket estetik). Le të jetë d distanca e llambave nga faqet të cilat përcaktojnë

10 20 30 40 50 60 70 80 90 100

10

20

30

40

gjerësin e dhomës. Përcaktojmë funksionin i cili jep intesitetin në pikën x përgjat faqeve ansore

të dhomës, dhe më pas ndërtojmë grafikun e intesitetit si funksion të parametrit d për vlera të

ndryshme të x.

d = 0:0.1:5;

for x = 0:0.5:5

plot(d, light3(x, 0, d) + light3(x, 0, 5) + ...

light3(x, 0, 10 - d))

hold on

end

hold off

Për d afër 5 intesiteti do të rritet nderkohë që x rritet nga 0 në 5, pra nga vija e mesme x=0 deri

në vijën x=5 e cila është vija e sipërme në grafikë. Vëm re se x=0 është vija që ndodhet më

poshtë për të gjitha vlerat e d-së. Kështu që d=0 maksimizonë intesitetin në pjesët më të errta të

dhomës ( që i korenspondon x=0) dhe ky intesitei është:

light3(0, 0, 0) + light3(0, 0, 5) + light3(0, 0, 10)

ans =

0.8920

Rezultati është surprizues; ndricimi është më i dobët se në rastin e skenarit me dy llamba. Gjatë

kalimit nga dy llamba në tre, me uljen e fuqisë për llambë, ne jemi të detyruar ti largojmë nga

qoshet llambat me voltazh të lartë dhe ti sjellim dretj qendrës. Ne mund ta përmisojmë situatën

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

0.8

1

1.2

1.4

1.6

1.8

2

në rastin e dy llambave nëse përdorim një llambë më ndricuese në fundin e dhomës, dhe një

llambë më pak ndricuese në qëndër të saj,ose duke përdorur katër llamba secila me fuqi 75vat.

Rezultati që nxjerim der tani është se sasia e ndricimit është më e vogël kur kalojm nga dy

llamba në më shumë se dy, krahasuar me sasin e ndricimit qe marrim kur kalojmë nga një

llambë në dy.

6.2 Simulimi Monte Karlo

Për të bërë parashikime statistikore gjate të proceseve të rastit është shpesh herë e dobishëme të

bëhen simulime bazuar në kuptimin e koncepteve themelore te propabilitetit. Kjo procedurë

njihet ndryshe me emrin metoda "Monte Karlo" .

Si një shembull shqyrtojmë lojën në një kazino ku lojtarët vendosin baste kundra kazinos dhe

kazinoja fiton 51% të hereve. Pyetja është: Sa loja duhet të luhen në mënyrë që kazinoja të jetë e

sigurt në fitore. Këtu do to ilustrojmë se cfarë mund të ndodh në praktikë pa përdorur njohuri të

shumta matematikore.

Si fillim ndërtojmë një shprehje e cila llogarit fitimin neto të kazinos për një lojë të vetme,

bazuar në numra të rastit te zgjedhur nga 0 te 1 me ndimën e komandës rand. Nëse numri i rastit

është më i vogël ose i barabartë se 0.51 atëherë kazinoja fitonë një njësi basti, në qoftë se numri

është më i madhë se 0.5 atëherë kazinoja humbet një njësi. Më poshtë jepet shprehja e cila kthen

1 nëse rezultati që prodhon komanda rand është më i vogël se 0.51, dhe -1 nëse rezultati që

prodhon komanda rand është më i madhë se 0.51 (0 në qoftë se rezultati që prodhon komanda

rand është barabartë me 0.51, i cili është ekstremisht i pamundur)

fitimet=sign(0.51 - rand)

fitimet =

-1

Në lojën e simuluar më sipër kazinoja humbet. Për të simuluar disa lojra njëkohësisht, për

shembull 10 lojra ne mund të gjenerojmë një vektor me 10 numra rasti duke përdorur

komandën rand(1,10) dhe më pas aplikojmë të njëjtin veprim si më sipër

fitimet=sign(0.51 - rand(1, 10))

fitimet =

-1 -1 1 -1 1 1 -1 -1 -1 -1

Në këtë rast kazinoja ka fitur 5 herë dhe ka humbur po 5 herë, përfitimi neto është 0.

Për nje numër të madh lojrash, le të themi 100, me ndimën e komandës sum mund të lloagrisim

humbjen neto të kazinos

perfitimi = sum(sign(0.51 - rand (1, 100)))

perfitimi =

-4

Në këtë provë kazinoja ka një humbje në total prej 4 njësish pas 100 lojrave. Mesatarisht në cdo

100 lojra kazinoja duhet të fitoj 51% të herëve ndërsa lojtarët duhet të fitojn 49% të herëve,

kështu që mesatarisht kazinoja do të realizoj një fitim prej dy njësish. Të shohim cfarë ndodh

gjatë realizaimit të disa provave.

perfitimi = sum(sign(0.51 - rand(100, 10)))

perfitimi =

14 -12 6 2 - 4 0 -10 12 0 12

Shohim se përfitimi neto ka një luhatje të ndjeshme nga një bashkësi prje 100 lojrash në një

tjetër, dhe ekziston një probabilitet shumë i madhë që kazinoja të humbasë pas 100 lojrave. Për të

krijuar një ide më të qartë se si shpërndahet përfitimi neto i kazinos, kryejm eksperimentin e më

sipërm në një numër të madhë herësh dhe më pas ndërtojmë histogramën e rezultateve.

Funksioni i mëposhtëm llogarit përfitimin neto për k prova të ndryshe secial me nga n lojra.

perfitimi = inline('sum(sign(0.51 - rand(n, k)))', 'n', 'k')

perfitimi =

Inline function:

perfitimi(n,k) = sum(sign(0.51 - rand(n, k)))

Funksioni i mësipërm realizon ndërtimin e një matrice n k me numra të rastit dhe më pas

kryen veprimet e mësipërme ku për cdo hyrje në matricë kthen 1 nëse kazinoja fiton dhe -1 nëse

kazinoja humbet duke ndërtuar një matricë, elementët e së cilës janë 1 dhe -1. Më pas llogarisim

shumën e cdo shtylle të matricës duke gjeneruar një vektor me k element, secili prej tyre

përfaqëson fitimin që sjell cdo shtyllë me n lojra . Ndërtojmë histogramën e përfitimit duke e

marr 100k dhe 100n . Teorikisht ne e dimë se kazinoja mund të fitoj ose të humbasë mbi

100 njësi, por në praktikë rezultati është brënda 30 ose afër 0.

hist(perfitimi(100, 100), -40:2:40); axis tight

Histograma konfirmon pritjet tonë se ka një luhatje të madhe të rezultateve pas 100 lojrave.

Shpërndarja e mësipërme është mjaftushmërisht e pa rregullt për të na dhënë një informacion më

të qartë në lidhje me humbjet apo fitimet e kazinos, kjo na detyronë të kryejm më shumë prova

për të marr një përafrimë më të mirë të shpërndarjes aktuale.

Le të eksperimentojmë me 1000 prova.

hist(perfitimi(100, 1000), -40:2:40); axis tight

-40 -30 -20 -10 0 10 20 30 400

2

4

6

8

10

12

-40 -30 -20 -10 0 10 20 30 400

10

20

30

40

50

60

70

80

90

Në përputhje me teoremën qendrore limite, kur të dy numrat n dhe k bëhen shumë të mëdhenj,

forma e histogramës do të jetë në trajtën e një këmbane. Le të përpiqemi ta konfirmojmë këtë

rezulat

hist(perfitimi(100, 10000), -40:2:40); axis tight

Forma e këmbanës duket shumë qartë. Megjithëse nuk kemi fitur shumë informacion për të ditur

se si kazinoja do të jetë pas 100 lojrave, dhe se sa do të jetë humbja neto në një rast të

mundshëm. Dobishmëria qendron se përfundimet tona pas 1000 provash janë një përshkrim i

mirë i shpërndarjes së mundshme të rezultateve të lojës.

Shqyrtojmë përfitimin neto pas 1000 lojrave. Ne presimi qe kazinoja të fitojë mesatarisht 510

lojra dhe të humbasë 490, me një përfitim total prej 20 njësish. Përsëri fillojm me 100 prova.

hist(perfitimi(1000, 100), -100:10:150); axis tight

-40 -30 -20 -10 0 10 20 30 400

100

200

300

400

500

600

700

800

Megjithëse zona e vlerave të vëshguara për përfitim pas 1000 lojrave është më e madhe se zona

pas 100 lojrave, zona e vlerave të mundhme është rreth 10 herë më e madhe, që do të thotë se

rezultatet janë më afër se më parë. Kjo është një pasqyrim i principeve teorike (në përputhje me

teoremën qendrore limite) që shpërndarja mesatare e rezultateve pas një numri të madh provash

do të jetë proporcionale më rrënjën katrore të n-së, numrin e lojave të luajtura në një provë. Kjo

është shumë e rëndësishmë për kazinon pasi, nëse shpërndarje ishte proporcional me n atëherë

kazinoja nuk do të ishe e sigurt në realizimin e fitimt të saj. Kur ne e rrisim n më n-faktor të 10

shpërndarja do të rritet vetëm me faktorin e 10 .

Theksojmë se pas 1000 lojrave , kazinoja pa dyshim ka më shumë mundësi për të fituar se sa për

të humbur, megjithatë mundësitë që ajo të humbas janë akoma të konsiderueshme.

Për të qënë më të sigurt në rezultatin tonë, përsërisim eksperimentin e më sipërm me 1000

prova.

hist(perfitimi(1000, 1000), -100:10:150); axis tight

-100 -50 0 50 100 1500

5

10

15

Shohim se si forma e këmbanës shfaqet përsëri. Megjithatë mundësit që kazinoja të humbasë më

shumë se sa 50 njësi pas 1000 lojrave nuk janë 0. Nëse secila njësi është e barabartë me 1000$,

ne i këshillojmë kazinos që të ketë të paktën 100,000$ në arkë për tu përgatitur për një rast të tillë

.

Së fundmi do të shohim se cfarë ndodhë pas 10,000 lojrave. Ne presim që fitimi mesatarë i

kazinos të rritet në 200 njësi, duke u bazuar në diskutimin e bërë më sipër, zona e vlerave që

duhet të përdorim për të ndërtuar histogramën duhet të rritet me faktorin 3. Shqyrtojmë rastin e

100 provave.

hist(perfitimi(10000, 100), -200:25:600); axis tight

-100 -50 0 50 100 1500

20

40

60

80

100

120

-200 -100 0 100 200 300 400 500 6000

2

4

6

8

10

12

Sic duket përfitimi i marrë në rastin e 10,000 lojravë është më i madhë, megjithëse në rastin e100

provave ne nuk arrijm të krijojmë një ide të qartë për skenarin më të keqë. Prandaj do të kryejm

një eksperiment në rastin e 1000 provave edhe pse kjo do na marrin pak kohë në kompjuter.

Gjatë realizimit të një eksperimenti të tillë mundë të ndodhë që Matlab sinjalizonë në mesazh

gabimi të tipit

hist(perfitimi(10000, 1000), -200:25:600); axis tight

??? Error using ==> inlineeval

Error in inline expression ==> sum(sign(0.51 - rand(n, k)))

??? Error using ==> -Out of memory. Type HELP MEMORY for your options.

Error in ==>

C:\MATLABR12\toolbox\matlab\funfun\@inline\subsref.m

On line 25 ==> INLINEOUT = inlineeval(INLINEINPUTS,

INLINEOBJ.inputExpr, INLINEOBJ.expr)

Në këtë rast matrica e gjeneruar brenda funksionit perfitimi, vendoset në memorien e

kompjuterit. Meqenëse n është 10,000 dhe k 1000, në përpjekien tonë të fundit për të ekzekutuar

këtë funksion, ne kërkojmë një matricë me 10,000,000 numra të rastit. Cdo numër në formatin

float merr 8 bit nga memoria, kështu që matricës tonë i duhet një memorie prej 80 Mb, e cila

është shumë e madhe për disa kompjutera. Meqenëse k përfaqëson numrin e provave atëherë ato

mund të realizohen në mënyrë të pavarur, pra një zgjidhje përsa i përket memories është të

ndajmë 1000 provat në 10 të tilla secial me nga 100 prova, duke përdorur një cikël i cili

ekzekuton 100 provat nga 10 herë dhe në fund grumbullon rezultatin

vektoriiperfitimeve = [ ];\

for i = 1:10

vektoriiperfitimeve = [vektoriiperfitimeve perfitimet(10000, 100)];

end

hist(vektoriiperfitimeve, -200:25:600); axis tight

Mundësit për të humbur pas 10,000 lojrave janë shumë të vogla, edhe pse nuk mund të

neglizhohen, mund të gjykojmë se kazinoja nuk duhet të përjashtoj mundësin e humbjes me 100

ose më shumë njësi në ndonjë cast të caktuar. Gjithësesi trendi rritës duket qartë, mund të presim

që pas 10,000 lojrave kazinoja është jashtëzakonisht e prirur për të bërë fitim. Bazuar në

vëzhgimet e shpërndarjes së rezultateve të lojës, ne presim qe në pjesën më të madhe të kohës

fitimi neto i kazinosë do të jetë brenda 1000 së vlerës së pritur 2000. Më poshtë shohim rezultatet

e 10 provave me nga 10,000 lojra

perfitimi (100000, 10)

ans =

Columns 1 through 6

1972 1710 2130 2596 1760 1514

Columns 7 through 10

1546 1744 2072 1978

-200 -100 0 100 200 300 400 500 6000

20

40

60

80

100

6.3 Dinamika e Popullimeve

Në këtë pjësë do të analizojmë dy modelet e rritjes së popullimit të specieve. Model i parë është

ai standartë i rritjes dhe rrënies eksponenciale, i cil arrin të shpjegoj shumë mirë popullimin e

specieve të cilat janë drejt zhdukjes, ose sjellien afatshkurte të rritjes së popullimeve në një

mënyrë të pa kontrolluar. Modeli i dytë i cili shihet si një model më real pasi përshkruan rritjen

specieve në lidhje me hapsirën, ushqimin, grabitqarët dhe konkurrencën.

6.3.1 Rritja dhe rrënia eksponenciale

Supozojmë se numri fillestar i specieve është 0P . Popullimi pas n njësi kohe do të bëhet nP .

Supozojmë se në secilin interval kohe numri i specieve rritet ose zvogëlohet më një raport

konstant të vlerës në fillim të intervalit. Kështu që 1 1n n nP P rP , 1n . Konstantia r

përfaqëson ndryshesën ndërmjet rrimit të lindjes dhe ritmit të vdeksjes. Popullimi i specieve

rritet nëse r është pozitive, zvogëlohet kur r është negative dhe nuk ndryshon kur 0r .

Më poshtë jepet një M-file i cili llogarit popullimin e specieve në një fazë n për një numër

speciesh të dhënë në një fazë të mëparshme si dhe ritmin r .

function X = itseq(f, Xfill, n, r)

X = zeros(n + 1, 1);

X(1) = Xfill;

for i = 1:n

X(i + 1) = f(X(i), r);

end

Në fakt ky është një program i cili llogarit në mënyrë iterrative vlerat e sekuncës 1( )n na f a ,

1n , duke u sigurar që kemi shkruar formulën e f si dhe vlerën fillestare të sekuencë 0a .

Shohim së në algoritmin e ndërtuar është futur dhe një parametër shtesë r .

Përdorim programin e mësipërm për të llogaritur dy popullime në intervale pesë vjecar për vlera

të ndryshme të r .

r = 0.1; Xfill = 100; f = inline('x*(1 + r)', 'x', 'r');

X = itseq(f, Xfill, 100, r);

format long; X(1:5:101)

ans =

1.0e+06 *

0.000100000000000

0.000161051000000

0.000259374246010

0.000417724816942

0.000672749994933

0.001083470594339

0.001744940226889

0.002810243684806

0.004525925556818

0.007289048368510

0.011739085287970

0.018905914247128

0.030448163954142

0.049037072529785

0.078974695679944

0.127189537139507

0.204840021458548

0.329896902959206

0.531302261184831

0.855667604660783

1.378061233982238

r = -0.1; X = itseq(f, Xfill, 100, r);

X(1:5:101)

ans =

1.0e+02 *

1.000000000000000

0.590490000000000

0.348678440100000

0.205891132094649

0.121576654590569

0.071789798769185

0.042391158275216

0.025031555049932

0.014780882941435

0.008727963568088

0.005153775207320

0.003043252722170

0.001797010299914

0.001061116611996

0.000626578748218

0.000369988485035

0.000218474500528

0.000129007007817

0.000076177348046

0.000044981962248

0.000026561398888

Në rastin e parë shohim se popullimi i specieve rritet shumë shpejtë,ndërsa në rastin e dytë

zvogëlohet shpejt. Në fakt është shumë e qartë se nga modeli se 1 (1 )n

n

Pr

P

, kemi

0(1 )n

nP P r për 0n .Modeli i mësipërm parashikon rritjen e popullimit të specieve pa asnjë

kufizim, prandaj është jo realist. Modeli që do të shqyrtohet në vijim lejon që të kontrollohet

rrijta e numrit të specieve në lidhje me hapsirën e limitur, ushqimin e limituar, konkurencën dhe

grabitqarët.

6.3.2 Modeli Logjistike

Modeli i mëparshëm supozonte se ndryshimet relative në numrin e specieve janë konstante, që

do të thotë se 1n n

n

P Pr

P

.

Le ta trasformojm ekuacionin në mënyrë që ta mbajmë rritjen e numrit të specieve të ulët.

1n n

n

n

P Pr uP

P

, ekuacionit të mësipërm mund ti japim një formë më të thjeshtë duke

supozuar se 1u r , duke marrë 1 (1 )n n nP uP P ,ku u është një konstante pozitive .

Në këtë model P është ndërtuar në mënyrë të tillë që vlerat e saj të shtrihen ndërmjet 0 dhe 1,

dhe duhet të interpretohet si përqindja maksimale e mundshëme e popullimit në mjedis.

Ndërtojmë funksionin te cilin do ta përdorim në procedurat iterrative.

clear f; f = inline('u*x*(1 - x)', 'x', 'u');

Le të trajtojmë disa shembuj duke përdorur dhe komandën plot për ti shfaqur rezultatet

grafikisht.

u = 0.5; Xfill = 0.5; X = itseq(f, Xfill, 20, u); plot(X)

u = 1; X = itseq(f, Xfill, 20, u); plot(X)

0 5 10 15 20 250

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

u = 1.5; X = itseq(f, Xfill, 20, u); plot(X)

u = 3.4; X = itseq(f, Xfill, 20, u); plot(X)

0 5 10 15 20 250

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

0 5 10 15 20 250.32

0.34

0.36

0.38

0.4

0.42

0.44

0.46

0.48

0.5

0 5 10 15 20 250.4

0.45

0.5

0.55

0.6

0.65

0.7

0.75

0.8

0.85

0.9

Në llogaritjet e para kompjuterike, ne kemi përdorur programin iterativ për të llogaritur

densitetin e gjallesave për 20 intervale kohe, duke supozuar një rritje logjistike konsatnte

0.5u dhe një denstiet fillestar të gjallesave 50%. Rezultatet janë që numri specive është në

rënie. Në shembujt e mësipërm ne mbajtëm konstant vetëm densitetin e gjallesave në 50%, e

vetmja gjë që ndryshuam eshtë vetëm konstantia e rritjes logjistike. Në shembullin e dytë me një

konstante logjistike 1u , numri i specieve vazhdon të zvogëlohet por me një ritëm më të vogël.

Në shembullin e dytë me një konstante logjistike 1.5u numri i specieve duket më i stabilizuar

në rreth 33.3%. Si përfundim në shembullin e fundit me një konstante logjistike 3.4u , numri i

gjallesave luhatet ndërmjet densiteteve 45% dhe 85%.

Këto shembuj zbulojnë karakteristikat e jashtzakonshme te modelit logjistik. Ky model është

studiuar për më shumë se 150 vjet, kuptimin dhe analizën e parë e ka dhënë matematikanti Belg

Pierre Verhuls. Këtu jepen disa fakte lidhur me këtë model. Disa prej tyre do ti punojmë dhe

me Matlab, gjithashtu ne do të përdorim dhe komandën bar, për të ilustruar disa të dhëna.

(1) Konstantja logjistike nuk mund të jetë më e madhe se 4

Që modeli të funksionoj, rezultatet në cdo pikë duhet të shtrihen ndërmjet 0 dhe 1, por parbola

(1 )ux x ,për 0 1x , ka lartësi maksimale për 1

2x , vlera e të cilës është

4

u. Për ti mbajtur

vlerat ndërmjet 0 dhe 1 duhet që vlera e u të jetë të shumtën 4. Më poshtë jepet cfarë ndodh

nëse vlear e u -së është më e madhe se 4.

u = 4.5; Xfill = 0.9; X = itseq(f, Xfill, 10, u)

X =

1.0e+72 *

0.000000000000000

0.000000000000000

0.000000000000000

-0.000000000000000

-0.000000000000000

-0.000000000000000

-0.000000000000000

-0.000000000000000

-0.000000000000000

-0.000000000000000

-3.491034034580701

(2) Nëse 0 1u densiteti tenton në zero për cdo konfigurim fillestar

X = itseq(f, 0.99, 100, 0.8); X(101)

ans =

1.939524024691387e-12

X = itseq(f, 0.75, 20, 1);

bar(X)

(3) Nëse 1 3u popullimit do të stabilizohet në 1

1u

, për cdo densitet fillestar të

ndryshëm nga zero

Në këtë shembull marrim një konstante logjistike 2,2.5u dhe 3 atëherë 1

1u

do të ketë vlerat

0.5, 0.6, 0.666. Konvergjenca në llogaritjet e fundti është disi më e ngadaltë (e cila mund të

ndodhë për shkakë të ndonjë pike bifurikimi)

X = itseq(f, 0.25, 100, 2); X(101)

ans =

0.500000000000000

X = itseq(f, 0.5, 20, 2.5);

plot(X)

0 5 10 15 20 250

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

(4) Nëse 3 3.56994 u , atëherë kemi një cikël periodik.

Në këtë rast teoria është shumë delikate. Për shpjegime të më teprta, lexuasi mund të

konslultohet me librin Encounters with Chaos, nga Denny Gulick, McGraw-Hill, 1992, paragrafi

1.5.

Në fakt ekziston një sekuenc

0 1 2 33 1 6 ... 4u u u u

e tillë që ndërmjet 0u dhe 1u është një cikël me period 2 , ndërmjet 1u dhe 2u është një cikël

me period 4 , ndërsa ndërmjet ku dhe 1ku është një cikël me period 12k , ku 1ku për vlera

shumë të vogla të k kemi 1 1 3k ku u . Pra

0 5 10 15 20 250.5

0.52

0.54

0.56

0.58

0.6

0.62

0.64

0 10 20 30 40 50 60 70 80 90 1000

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

u1=1+sqrt(6)

u1 =

3.449489742783178

perafrimiu2= 1 + sqrt(3 + u1)

perafrimiu2=

3.539584561061746

Kjo shpjegon sjellien luhatse të cilin e pamë në një nga shembuj e mësipërm me kostante

logjistike( 0 13.4u u u ). Më poshtë jepen rezultatet për konstante logjistike

( 1 23.5u u u ). Përdorimi i komandës bar është mjaftë e rëndësishme për të vënë re ciklet

me period 4

X = itseq(f, 0.75, 100, 3.5);

bar(X); axis([0 100 0 0.9])

(5)Vlerë 4u për të cilin ndodh "kaosi"

Është plotësisht e mundshme të tregohet se sekuenca ku në proces limiti tenton drejt u .Vlera e

u shpesh herë njihet me emrin parametri Feigenbaum, dhe është afërsisht 3.56994... .

Le të shohim cfarë ndodh nëse përdorim një vlerë të u që ndodhet ndërmjet parametri Feigenbaum

dhe 4.

0 10 20 30 40 50 60 70 80 90 1000

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

X = itseq(f, 0.75, 100, 3.7); plot(X)

Ky është një shembull i asaj që matematicienët e quajnë fenomen kaotik. Edhe pse sekuenca

është gjeneruar me proceduar matematikore shumë të rregullta, rezultati i manifestuar ka një

formë të pa parashikueshme. Fenomet kaotike janë të pa parashikueshëm, por me metoda

moderne( duke përfshirë analizën kompjuterike) matematicienët janë në gjendje që brenda

proceseve kaotike të dallojnë forma të caktuara të sjellies. Për shembull figura e mësipërme

sugjeron mundësin e cikleve periodike të paqendrushëm.

6.3.3 Simulimi i mdoelit logjistik

Modelin e rritjes logjistike të cilin e kemi studiuar më sipër, marrim shkas ta analizojmë

vecanarisht dhe me ndimën e paketës SIMULINK . Më poshtë jepet modeli i simulimit i cili i

korrespondon llogaritjeve të bëra më sipër.

0 20 40 60 80 100 1200.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Le të shpjegojmë shkurtimisht se si funksionë. Nëse injorojmë për një moment bllokun gjenerues

të pulseve diskret dhe bllokun e shumimit të cilat ndodhen majtas poshtë, atëherë ky model

implementon ekuacionin

(1 )ri vjeter vjeterx ux x

i icili është ekuacioni i modelit logjistik. Blloku "paraqitje grafike" shfaqë rezultatet e x si

funksion diskret i kohës. Mirëpo, ne duhet të ndërtojmë kushtin fillestar për x .Mënyra më e

thjeshtë për ta realizuar këtë është: ne shtojmë në anën e djathtë një sinjal diskret i cili është vlera

fillestare për x në castin 0t . Meqenëse modeli është diskret ju mund të realizoni këtë duke

vendosur periodën në bllokun gjenerues të pulseve diskrete pak më të madhe se koha e

simulimit, dhe gjatësin e pulsit te 1, ndërsa amplitudën e pulsit vlerë të njëjëtë me kushtin

fillestar x . Më poshtë jepen rezultatet për vlera të 3.4u

dhe 3.7u

Në rastin e parë kur 3.4u sjellia periodike është mjaftë e dukshme , ndërsa kur 3.7u marrim

sjellien kaotike.

6.4 Modelet Lineare Ekonomike

Njohurite mbi algjebren lineare përbëjnë një mjet të rëndësishëm për studimin e modeleve

lineare ekonomike, të cilat ndryshe njihen dhe me emrin modelet Leontief (për nder të

ekonomistit Wassily Leontief) ose modelet hyrje-dalje. Një nga modelet më të thjeshta është

modeli i shkëmbimeve lineare ose modeli mbyllur Leontief. Ky model supozon se ekonomia

është ndarë në n sektor, të tilla si sektori i buqësis, industrisë përpunuese, shërbimeve, konsumit

etj. Secili sektor ka hyrje dhe nga sektorët e tjerë (duke përfshir dhe veten), dhe prodhon

produkte të cilat ndahen ndermjet sektorve të ndryshëm.Për shembull sektori i buqësis prodhon

produktet për konsumim familjar dhe për eksport, por gjithashtu farat e ndryshme qe dalin nga

ky sektor mund të përdoren në industrin përpunuese. Fjala "mbyllur" pëdoret në kuptimin se

prodhimi total është i barabartë me konsumin total. Ekonomia është ne ekulibër kur secili sektor i

ekonomis ka rentabilitet. Për të ndodhur kjo duhet që cmimet e produkteve të ndryshme të

rregullohern nga fuqia e tregut. Le të shënojm me ija një njësi të produktit që prodhohet nga

sektori j dhe konsumohet nga sektori i . Atëherë ija është një matricë katrore që njihet ndryshe

si matrica e shkëmbimeve dhe do ta shënojm me A , ku shuma e cdo shtylle është e barabartë me

1. Le të jet ip cmimi i produktit që prodhon sektori i . Meqenëse cdo sektor ka renatbilitet

atëherë ip nuk mund të jetë me e vogël se vlera e produkteve të cilat hyjnë për konsum në

sektorin i . Me fjalë të tjera

i ij j

j

p a p

Duke shumuar sipas i dhe duke përdorur faktin se 1ij

i

a , shohim se të dy anët duhet të jenë të

barabarta. Në gjuhën e matricave kjo do të thotë që ( ) 0I A p , ku p është vektori shtyllë i cmimeve .

Kështu që p është vektori i vetë i matricës A për vlerën e vetë 1, nga teoria stokastike e matricavce

marrim (supozojmëse matrica A është e pa reduktueshme që do të thotë se nuk ekzistonë një

nënsektor i përshtatshëm i ekonomis i tillë që të gjitha produktet që prodhohen nga nënsekotr

të qendrojnë brënda ) që p është e përcaktuar me një faktor konstant. E thënë me fjalë të

tjera , një model linear ekonomik i pa reduktueshmë i mbyllur ka një gjendje ekulibri të vetme .

Për shembull nëse kemi

A = [.3, .1, .05, .2; .1, .2, .3, .3; .3, .5, .2, .3; .3,.2, .45, .2]

A =

0.3000 0.1000 0.0500 0.2000

0.1000 0.2000 0.3000 0.3000

0.3000 0.5000 0.2000 0.3000

0.3000 0.2000 0.4500 0.2000

sum(A)

ans =

1 1 1 1

Pra, shumat e shtyllave të matricës A janë të barabrta me 1.

[V, D] = eig(A); D(1, 1)

p = V(:, 1)

ans =

1.0000

p =

0.2739

0.4768

0.6133

0.5669

Shohom se 1 është vlerë e vetë e matricës A me vektora të vetë p .

Disi më real është modeli ekonomik Leontief i hapur, i cili merr parasysh dhe fuqin puntore,

konsumim, etj. Le ta ilustrojmë me një shumbull.

Të dhënat e më poshtme janë një tabel transaksioni hyrje-dalje i ekonomisë Britanike gjatë vitit

1963. ( Tabela e më poshtme është marrë nga Input-Output Analysis and its Applicationsby R.

O’Connor and E. W. Henry, Hafner Press, Neë York, 1975.) Tabela T është një maticë me

përmasa 10 9 . Njësit janë miliona të shprehura në paund. Rreshtat përfaqësojn respektivisht,

buqësin,industrin, shërbimet, ndër industrin, importet, shitjet nga blersit përfundimtar, taksat

indirekte, pagat dhe përfitimet, totalin e inputeve themelore, si dhe totalin e inputeve. Ndërsa

shtyllat përfaqësojn, buqësin, idustrin, shërbimet, ndër industrin totale, eksportet,nevojat

perfundimtare totale, outputet. Outputet nga secili sektor mund të lexohen përgjatë rreshtave

ndërsa inputet mund të lexohen përgjat shtyllave.

T = [277, 444, 14, 735, 1123, 35, 51, 1209, 1944; ...

587, 11148, 1884, 13619, 8174, 4497, 3934, 16605, 30224; ...

236, 2915, 1572, 4723, 11657, 430, 1452, 13539, 18262; ...

1100, 14507, 3470, 19077, 20954, 4962, 5437, 31353, 50430; ...

133, 2844, 676, 3653, 1770, 250, 273, 2293, 5946; ...

3, 134, 42, 179, -90, -177, 88, -179, 0; ...

-246, 499, 442, 695, 2675, 100, 17, 2792, 3487; ...

954, 12240, 13632, 26826, 0, 0, 0, 0, 26826; ...

844, 15717, 14792, 31353, 4355, 173, 378, 4906, 36259; ...

1944, 30224, 18262, 50430, 25309, 5135, 5815, 36259, 86689];

Disa nga karakteristikat e kësaj matrice jepen në vijim

T(4, :) - T(1, :) - T(2, :) - T(3, :)

T(9, :) - T(5, :) - T(6, :) - T(7, :) - T(8, :)

T(10, :) - T(4, :) - T(9, :)

T(10, 1:4) - T(1:4, 9)'

ans =

0 0 0 0 0 0 0 0 0

ans =

0 0 0 0 0 0 0 0 0

ans =

0 0 0 0 0 0 0 0 0

ans =

0 0 0 0

Kështu rreshti i katër i cili përmbledh inputet e ndër-industrisë është shumë e tre rreshtave ,

rreshti i nëntë i cili përmbledh inputet themelore është shumë i rreshtave 5,6,7,8, rreshti i dhjetë

i cili përmbledh inputetet totale është shumë i rreshtave 4,5,6,7,8,9, dhe katër elementët e parë të

rreshtit të fundit përputhen më katër elementët e parë të shtyllës së fundtit (që do të thotë se të

gjitha outputet nga sektori i industris merren në shqyrtim).

Gjithashtu kemi

(T(:, 4) - T(:, 1) - T(:, 2) - T(:, 3))'

(T(:, 8) - T(:, 5) - T(:, 6) - T(:, 7))'

(T(:, 9) - T(:, 4) - T(:, 8))'

ans =

0 0 0 0 0 0 0 0 0 0

ans =

0 0 0 0 0 0 0 0 0 0

ans =

0 0 0 0 0 0 0 0 0 0

Kështu shtylla e katër e cila përmbledh inputet e ndër-industrisë është shumë e shtyllave 1,2,3 ,

shtylla e tetë e cili përmbledh nevojat përfundimtëre është shumë e shtyllave 5,6,7, ndërsa

shtylla e nëntë e cili përmbledh outputet totale është shumë e shtyllave 4,5,6,7,8. Matrica A me

koeficientët teknik të ndër-industrisë mund të merret duke pjestuar shtyllat e tabelës T të

sektorve industrisë ( të cilat në rastin tonë janë tre) me inputet totale korrespondues. Pra

A = [T(:, 1)/T(10, 1), T(:, 2)/T(10, 2), T(:, 3)/T(10, 3)]

A =

0.1425 0.0147 0.0008

0.3020 0.3688 0.1032

0.1214 0.0964 0.0861

0.5658 0.4800 0.1900

0.0684 0.0941 0.0370

0.0015 0.0044 0.0023

-0.1265 0.0165 0.0242

0.4907 0.4050 0.7465

0.4342 0.5200 0.8100

1.0000 1.0000 1.0000

Shqyrtojmë tre rreshtat e parë të matricës A

A = A(1:3, :)

A =

0.1425 0.0147 0.0008

0.3020 0.3688 0.1032

0.1214 0.0964 0.0861

Nëse vektori Y përfaqëson nevojat përfundimtare në cdo sektor të industrisë dhe me X shënojmë

outputet totale të këtyre sektorve, atëherë nga fakti që shtylla e fundit e tabelës T është shumë e

shtyllës katër dhe shtyllës 8, të përkthyera në ekuacion matricor kemi

X AX Y ose (1 )Y A X . Kontrollojm:

Y = T(1:3, 8); X = T(1:3, 9); Y - (eye(3) - A)*X

ans =

0

0

0

Tani mund të realizojmë eksperimente të ndryshme kompjuterike. Për shembull cfarë efekti do të

ketë në outputet industriale për një rritje të nevojave përfundtimtëre me 10 £milion (të përkthyera

në problemin do të kemi 10,000 për njësi), pa rritje të nevojave për produkte në sektorin buqësor

dhe atë të shërbimeve. Meqënse modeli ekonomik është supozuar linear atëherë ndryshimin X

mund ta llogarisim me ndimën e ekuacionit matricor (1 )Y A X

deltaX = (eye(3) - A) \ [0; 10000; 0]

deltaX =

1.0e+04 *

0.0280

1.6265

0.1754

Outputet në sektorin buqësor do të rriten me 280 £milion , në sektorin industrial me

16.265 £milion , ndërsa në sektorin e shërbimeve me1.754 £milion . Ne mund ti ilustrojmë

rezultatet, p.sh për rritje të ngjashme të kërkesave në sektor të ndryshëm duke përdorur "pie

chart"

deltaX1 = (eye(3) - A) \ [10000; 0; 0];

deltaX2 = (eye(3) - A) \ [0; 0; 10000];

subplot(1, 3, 1), pie(deltaX1, {'Buq.', 'Ind.', 'Sherb.'}),

subplot(1, 3, 2), pie(deltaX, {'Buq.', 'Ind.', 'Sherb.'}),

title('Efektet e rritjes se kerkeses per tre sekoret e mesiperm', 'FontSize',14),

subplot(1, 3, 3), pie(deltaX2, {'Buq.', 'Ind.', 'Sherb.'});

Buq.

Ind.

Sherb. Buq.

Ind.

Sherb.

Efektet e rritjes se kerkeses per tre sekoret e mesipermBuq.

Ind.

Sherb.

6.5 Programim linear

Matlab ofron një ambjent të përshtatshëm për trajtimin e problemeve të programimit linear.

Këto janë problem në të cilat një madhë si varet linearisht nga disa variabla, të cilat ju doni ti

minimizoni ose maksimizoni në lidhje me disa kushte që shprehen nëpërmjet mosbarazimeve

lineare, funksione të të njëjtave variabëla. Në se numri i varaiabëlave dhe kushteve është

mjaftushëm i vogël atëherë ekzistojnë teknika të shumta matematikore për zgjidhjen e

problemeve të programimit linear, disa prej këtyre teknikave mësohen në shkollë të mesme

dhe në disa kurse që zhvillohen në universitete. Por shpeshë herë numri i variabëlave është i

madh, edhe nëse është i vogël mund të ndodhë që konstantet në mozbarazimet lineare ose në

shprehjet që duhen optimizuar mund të jenë numerikisht mjaftë komplekse, në këto raste një

paket si Matlab është e nevojshme për të kryer zgjidhjen e problemeve të programimit linear.

Do të ilustrojm metodën e programimit linear duke trajtuar disa shembuj të thjeshte, dhe duke

dhë në një kombinim të zgjidhjeve grafike-numerike, më pas do vazhdojmë me trajtimin e

problemeve të cilët në thelbe janë më të komplikuar.

Supozojmë se një fermer ka 75 hektar tokë të cilën do ta mbjedh me grurë dhe elb. Për të

realizuar kë to të korra, fermerti i kushton 120$ /hektar për grurin dhe 210$ /hektar për helb(

duke përfshirë fara,plehë rime,etj). Fermeri ka në dispozicion 15,000$ . Por pas të korrave

fermeri duhet ta mbaj prodhimin në një magazinë deri sa të gjejë tregun me kushtet e

favorshme për shitje. Fermeri ka një magazinë me kapcitet vetëm për 34000m . Secili hektar jep

rreth 3110m grurë dhe 330m elb. Në se përfitimi neto (pasi janë zbritur të gjitha shpenzimet)

për 1 3m grurë është 1.30$dhe pë r 1 3m elb është 2.0$ ,si duhet ti mbjedhin 75 hekatrë

fermeri në mënyrë që të maksimizojë fitimin.

Fillimisht formulojmë problemin matematikisht. Në fillim shprehim matematikisht qellimin e

problemit i cili është përfitimi, shprehim algjebrikisht kushtet e problemit, dhe më pas me

ndimën e interpertimit grafik dhe një numri të vogël veprimesh aritemtike arrijm te zgjidhja e

problemit.

Shënojmë me x numrin e hektarëve që do të mbillen me grurë dhe me y numrin e hektarve që

do të mbillen me elb. Shprehja që duhet maksimizuar, pra shprehja e cila je përfitimin është

(110)(1.30) (30)(2.0)P x y

Problemi mësipërm i nënshtrohet tre kushteve të cilat vijn si pasoj e kufizimeve në shpenzime

në hapsirën mbajtse të produkteve (magazina) dhe në hapsirën e disponushme për mbjellie.

120 210 15,000

130 40 4,000

75

x y

x y

x y

Këtyre tre kushteve i shtojmë dhe mozbarazimet 0, 0x y të cilët vendosen për faktin që

fermeri nuk mund të planifikojë të mbjell një numër negativ hektarësh.

Në vazhdim vizatojmë zonën që kufizohet nga kushtet e mësipërme, dy mozbarazimet e fundit na

tregojn që duhet të shqyrtojmë vetëm kuadrantin e parë të planit xoy . Më poshtë paraqitet një skicë

grafike e zonës trekëndëshe të përcaktuar nga mozbarazimi i parë 120 210 15,000x y

X = 0:125;

Y1 = (15000 - 120.*X)./210;

area(X, Y1)

Le të paraqesim zonën që formojn dy mozbarazimet e tjera.

Y2 = max((4000 - 110.*X)./30, 0);

Y3 = max(75 - X, 0);

Ytop = min([Y1; Y2; Y3]);

area(X, Ytop)

0 20 40 60 80 100 1200

10

20

30

40

50

60

70

80

Është pak e vështirë të shohim kufijtë e shumëkëndshit të cilët formojn zonën, të përpiqemi ta

bëjm pak më të qartë .

area(X, Ytop); axis([0 40 40 75])

Tani mbi zonën e ndë rtur mbivendosim konturet e funksionit P, (kujtojmë

(110)(1.30) (30)(2.0)P x y )

0 20 40 60 80 100 1200

10

20

30

40

50

60

70

80

0 5 10 15 20 25 30 35 4040

45

50

55

60

65

70

75

hold on

[U V] = meshgrid(0:40, 40:75);

contour(U, V, 143.*U + 60.*V); hold off

Duket qartë se vlera maksimale e funksionit P do të arrihet në vijën e nivelit e cila kalon

nëpërmjet kulimit të shumëkëndshit që shtrihet afër (23,25). Në të vërtetë mund të llogarisim:

[x, y] = solve('x+ y = 75', '110*x + 30*y = 4000')

x =

175/8

y =

425/8

double([x, y])

ans =

21.8750 53.1250

0 5 10 15 20 25 30 35 4040

45

50

55

60

65

70

75

Pra shpërndarja e hektarve në mënyrë që fermeri të marrë përfitimin maksimalë është 21.8750  

hektar duhet të mbillen grurë dhe 53.1250 hektar duhet të mbillen elb. Përfitimi që merr fermeri

është :

P = 143*x + 60*y

P =

50525/8

format bank double([P])

ans =

6315.63

Rezultati i shembullit të trajtuar më sipër mbulohet dhe nga teorema themelore e programimit

linear e cila në rastin e dy variablave formulohet:

Shprehja lineare ax b e përcaktuar mbi një zonë konvekse të mbyllur S , brinjët e së

cilës janë segmente, merr vlerën maksimale dhe minimale në kulmet e S .Në se zona S ë

shtë e pakufizuar, atëherë shprehja lineare mund të ketë ose jo optimum, por nëse ka ajo

realizohet në kulmet e zonës.

Matlab, vec të tjerave në pjesën Simulink ka një funksion të ndërtuar simlp, që realizon

zgjidhjen e problemeve të programimit linear. Nje funksion tjetër është dhe linprog të cilin

mund të gjeni në pjesën e optimizimit. Ne do të përdorim komandën simlp për të zgjidhur

problemin e mësipërm, më pas do ta implementojmë në zgjidhjen e disa problemeve disi më të

komplikuar të cilët përfshijnë më shumë variabla dhe kushte. Nëse shkruajmë help simlp një

pjesë e mesazhit të shfaqur në dritaren kryesore do të jetë :

simlp Helper function for GETXO; solves linear programming problem.

X=simlp(f,A,b) solves the linear programming problem:

min f'x subject to: Ax <= b

x

Në rastin e problemit të trajtuar më sipër do të kemi:

f = [-143 -60];

A = [120 210; 110 30; 1 1; -1 0; 0 -1];

b = [15000; 4000; 75; 0; 0];

format short; simlp(f, A, b)

ans =

21.8750

53.1250

Rezultatet e përftuar janë të njëjtë si në rastin e parë . Meqënse funksioni simlp kërkon

minimumin e një funksioni dhe jo maksimumin atëherë koeficentët e funksionit që duam të

optimizojmë janë vendosur me minus, gjithashtu dhe në matricën A dhe vektorin b në dy

rreshtat e fundit janë vendosur kushte jo negative .

Problemi i shtruar më sipër ishte shumë i lehtë dhe mund të zgjidhej edhe pa ndimën e

kompjuterit. Por supozojmë se fermeri ka në planë të mbjellindhe misër, të dhënat

korresponduese janë

Kostoia për hektar 150.75$

Prodhimi për hektar 3125m

Përfitimi për 3m 1.56$

Nëse shënojmë me z numrin e hektarve që do të mbillen me misër funksioni P do të marr

pamjen :

(110)(1.30) (30)(2.0) (125)(1.56)P x y z

120 210 150.75 15,000

130 40 125 4,000

75

0, 0, 0

x y z

x y z

x y z

x y z

Me ndimën e komandës simlp problemi i më sipërm zgjidhet si vijon:

clear f A b;

f=[-143 -60 -195];

A = [120 210 150.75; 110 30 125; 1 1 1;-1 0 0; 0 -1 0; 0 0 -1];

b = [15000; 4000; 75; 0; 0; 0];

simlp(f,A,b)

ans =

0

56.5789

18.4211

Pra sic e shohim fermeri duhet të heq dorë nga mbjellia e grurit. Duhet theksuar fakti se nuk

ka një numër të limituar të variablave ose kushteve me të cilat Matlab mund të punoj. Në

mjaft aplikime të teknikave të programimit linear, cdo kujt mund ti lind detyra të punoj me

shumë variabla ose kushte të ndryshme të problemeve. Zgjidha e problemeve të tillë me dorë

është e pa realizueshme, prandaj paketa programuese sic është dhe Matlab janë vendimtare në

realizimin me sukses të detyrave të tilla. Për shembull në problemin e fermerit të trajtuar më

sipër, mundet që fermeri të planifikoj të mbjell më shumë se tre lloj bimësh, ose mund të

lindin kushte të tjera, përvec shpënzimeve, kapcitetit mbajtës si dhe hapsirës së limitura të

tokës, për shembull:

Farat e disponushme. Të cilat mund të sjellin kufizime të till si jx k

Preferencat personale. Mund të ndodh që fermerët të kenë preferenca më shumë për një grup

varietetesh se sa për një grup tjetër duke insistuar në mbjellien e një varieteti, kjo mund të na

drejtoj drejt kufizimeve të tipit i jx x ose 1 2 3x x x

Subvencionet qeveritare. Të cilat mund të sjellin në mosbarazime të till si jx k .

clear f A b

f = [-110*1.3 -30*2.0 -125*1.56 -75*1.8 -95*.95 -100*2.25 -50*1.35];

>> A = [120 210 150.75 115 186 140 85; 110 30 125 75 95 100 50;...

1 1 1 1 1 1 1;1 0 0 0 0 0 0;0 0 1 0 0 0 0;0 0 0 0 0 1 0;...

1 -1 0 0 0 0 0;0 0 1 0 -2 0 0;0 0 0 -1 0 -1 1;...

-1 0 0 0 0 0 0;0 -1 0 0 0 0 0;0 0 -1 0 0 0 0 ;...

0 0 0 -1 0 0 0 ;0 0 0 0 -1 0 0;0 0 0 0 0 -1 0;...

0 0 0 0 0 0 -1];

b = [55000;40000;400;100;50;250;0;0;0;-10;-10;-10;...

-10;-20;-20;-20];

simlp(f, A, b)

ans =

10.0000

10.0000

40.0000

45.6522

20.0000

250.0000

20.0000

Vëm re se pavarsisht nga kompleksiteti i problemit Matlab arrin ta zgjidhë në cast. Ne ju

sugjerojmë të ndryshoni shpenzimet dhe/ose kapacitetin mbajtës të magazinës për të parë se si

këto të fundit ndikojn në zgjidhjen e problemit.

6.6 Lavjersi 0360

Normalisht ne një lavjerës e mendojmë si një trup me masë m të varur në një fije elastike e

cila mund të lë kundet. Në lloj tjetër lavjersi merret duke fiksuar një trup me masë m në

aksin e një shufret të lehtë , i cili mund të kryej lë kundje ne kënde të ndryshme, deri në 0360

nëse shpejtasia e dhënë është e mjaftueshme. Megjithëse kjo nuk është plotësisht e saktë në

praktikë , pasi ne supozojmë se madhësia e forcës së fërkimit e cila tenton të ngadalsoj lekundjet

e lavjersit është proporcionale me shpejtësin e lavjersit. Supozojmë se gjatësia e lavjersit është

1m , ndërsa trupi i vendosur në fund të lavjersit e ka masë n 1kg , dhe koeficienti i fërkimit

është 0.5 . Në këtë situatë ekuacioni që jep lëvizjen e lavjersit ka pamjen

'( ) ( ), '( ) 0.5 ( ) 9.8sin( ( ))x t y t y t y t x t

ku variabli t përfaqëson kohën në sekonda, x përfaqëson kendin e lavjersit nga vertikalia në

radian ( 0x është pozicioni kur lavjersi ndodhet në preheje) y përfaqëson shpejtësin e lavjersit

në /radian sekond , ndërsa 29.8 /m s ë shtë nxitimi për shkak të gravitetit. Më poshtë jepet

portreti fazor i zgjidhjes së ekuacionit të mësipërm me vendodhje fillestare (0) 0x dhe

shpejtësi fillestare (0) 5y për intervalin 0 20t .

f = inline('[x(2); -0.5*x(2) - 9.81*sin(x(1))]', 't', 'x');

[t, xa] = ode45(f, [0 20], [0 5]);

plot(xa(:, 1), xa(:, 2))

Rikujtojmë se x i korrespondon këndit të lavjersit, ndërsa y shpejtësis së grafikut. Duke filluar

lëkundjen nga pika (0,5) me rritjen e t vjia spirale i drejtohet në drejtim të akrepave të orës

pikës (0,0) . Këndi i lëkundjeve, bëhet gjithnjë dhe më i vogël derisa lavjersi në castin 20t

ndodhet praktikisht në preheje. Ndërkohë që dhe shpejtësia luhatet, duke marr vlerën

maksimale në secilën lëkundje, kur lavjersi ndodhet në mesin e lëkundjes (këndi është afër

zeros) dhe kalon zeron kur lavjersi ndodhet në fund të lëkundjes.

Më poshtë shohim se cfarë ndodh kur e rrisim shpejtësin fillestare në 10

[t, xa] = ode45(f, [0 20], [0 10]);

-1.5 -1 -0.5 0 0.5 1 1.5 2-4

-3

-2

-1

0

1

2

3

4

5

plot(xa(:, 1), xa(:, 2))

Në një situat të tillë këndi rritet mbi 14 radian, përpara se vija të realizoj spiralen afër pikës

(12.5,0) . Saktësisht duhet thënë se vija realizon spiralen drejt (4 ,0) sepse 4 përfaqëson të

njëjtin pozicion për lavjersin ashtu si dhe 0 radian. Lavjersi ka kryer dy rrotulime të plota

përpara se lëkundjet e tij të shuhen dhe ti afrohen pozicionit të prehejes. Shpejtësia në fillim

zvogëlohet, por fillon të rritet pasi këndi ka kaluar vlerën , pasi lavjersi ka kaluar pikën më të

lartë duke rritur momentin, si pasoj lavjersi ka moment të mjaftushëm të rrotullohet dhe një

herë rreth pikës më të lartë në këndin 3 .

Tani supozojmë se duam të gjejmë shpejtësin minimale fillestare e cila nevojitet ti komunikohet

lavjersit nga pozicioni fillestar për të realizuar një rrotullim të plotë. Në raste të tilla është e

dobishëme të shohim zgjidhjen e ekuacionit për vlera të ndryshëme të shpejtësis fillestare.

Në fillim shohim se cfarë ndodh kur vlerat e shpejtësis ndryshojn nga 5 në 10

hold on

for a = 5:10

[t, xa] = ode45(f, [0 20], [0 a]);

plot(xa(:, 1), xa(:, 2))

end

hold off

0 5 10 15-5

0

5

10

Shpejtësit fillestare 5,6,7 nuk janë të mjaftueshëme për ta rritur këndin përtej , ndërsa

shpejtësit 8,9,10 janë të mjaftueshëme për të detyruar lavjersin të bëj një rrotullim të plotë .

Të shohim cfarë ndodh ndërmjet shpejtësive fillestare 7 dhe 8 .

hold on

for a = 7.0:0.2:8.0

[t, xa] = ode45(f, [0 20], [0 a]);

plot(xa(:, 1), xa(:, 2))

end

hold off

-2 0 2 4 6 8 10 12 14 16-6

-4

-2

0

2

4

6

8

10

-2 0 2 4 6 8 10 12 14 16-6

-4

-2

0

2

4

6

8

10

Shohim se ndërprerja është midis 7.2 dhe 7.4 .Le të bëjm një përmirësim të paraqitjes

hold on

for a = 7.2:0.05:7.4

[t, xa] = ode45(f, [0 20], [0 a]);

plot(xa(:, 1), xa(:, 2))

end

hold off

Arrijm në përfundimin se shpejtësia fillestare minimale ndodhet diku mes vlerave 7.25dhe 7.3 .

6.7 Zgjjidhja numerike e ekuacionit të përcueshmërisë

Në këtë pjesë do të përdorim paketën Matlab për të zgjidhur numerikisht ekuacionin e

përcueshmërisë ( i cili njihet ndryshe dhe me emrin ekuacioni i difuzionit) një ekuacion me

derivate të pjesshme i cili përshkruan procese të ndryshme fizike. Ju mund ta përfytyroni

procesin e difuzionit si përhapjen e një pike boje në një gotë me ujë. Pika e bojës përbëhet nga

një numër i madh grimcash, secila prej tyre arrin sipërfaqen e molekulave të ujit, duke ndjekur

një rrugë të rastësishme.

Në rastin tre dimensional ekuacioni i përcueshmërisë ka pamjen

2 2 2

2 2 2

u u u uk

t x y z

-2 0 2 4 6 8 10 12 14 16-6

-4

-2

0

2

4

6

8

10

Ku u është funksion i , ,t x y dhe z ,dhe përfaqëson temperaturën ose përqendrimin e përzjeries

në rastin e difuzionit në castin t të pikë s ( , , )x y z , koeficienti k varet nga materiali, ai quhet

koeficienti i përceueshmërisë ose koeficienti i difuzionit në rastin e difuzionit. Për ta thjeshtuar

problemin shqyrtojmë rastin një dimensional, e cila mund të përfytyrohet si përcushmëria e

nxehtësisë përgjatë një shufre të hollë dhe të izoluar ose si procesi difuzionit përgjat një tubi

të hollë të mbushur me ujë ; le të shqyrtojmë fillimisht rastin e përcueshmërisë, atëherë

ekuacioni me derivate të pjesshme merr trajtën

2

2

u uk

t x

6.7.1 Zgjidhja me metodën e diferencave të fundme

Për të zgjidhur këtë ekuacion me derivate të pjesshme, ne na nevojiten dy kushte; kushtet

fillestare ( ,0) ( )u x f x , ku ( )f x jep shpëndarjen e temperaturës në shufër në castin 0t ,

dhe kushtet kufitare në skajet e shufrës; i shënojmë skajet e shufrës x a dhe x b .

Zgjedhim kushtet kufitare ( , ) au a T T dhe ( , ) bu b t T . Megjithëse në një situatë të tillë

zgjidhja ekzakte e problemit mund të gjendet shumë lehtë, ne do ta ilustrojmë zgjidhjen

numerikisht me ndimën e metodë së diferencave të fundme.

Për të filluar, në kompjuter ne mund ta ndjekim temperaturën u në një bashkësi pikash

diskrete të kohës t dhe të hapsirës x . Le të jetë koha 0, ,2 ,...., ,t t N t ndërsa hapsirën

, ,..., ,a a x a J x b dhe shënojmë ( , )n

ju u a j x n t . Rishkruajmë ekuacionin me

derivate të pjesshme në rastin një-dimensional me ndimën e skemës së diferencave të fundme

1

1 1

2

2n n n n n

j j j j ju u u u uk

t x

(Ky është një përafrim i thjeshtë që mund ta përdorim për derivatet, metoda mund të

përmisohet, duke përdorur përafrime më të mira, vecanarisht për derivatin në lidhje me

variabëlin kohë t ). Në qoftë se për ndonjë n njohim vlerën e n

ju , atëherë ne mund ta zgjidhim

ekuacionin e mësipërm në lidhje me 1n

ju , j .

1

1 1 1 122 (1 2 )n n n n n n n n

j j j j j j j j

k tu u u u u s u u s u

x

ku 2

k ts

x

. E thënë ndryshe ky ekuacion na tregon se si të gjejmë shpërndarjen e temperaturës

në hapin e 1n , kur e njohim shpërndarjen e temperaturës në hapin n . Ne mund ta

interpretojmë ekuacionin e mësipërm duke thënë se temperatura në hapin pasardhës është një

mesatare e peshuar e kësaj temperature dhe temperaturave në zonat fqinje të hapit aktual.

Ndryshe mund të themi se në një cast kohe t një seksion i telit me gjatë si x trasferon te

zonat fqinje një pjesë s të nxehtësis dhe mban pjesën (1 2 )s

M-file në vijim të cilin i kemi vendosur emrin percueshmeria.m, përsërit procedurën e

shpjeguar mësipër.

function u = percueshmeria(k, x, t, kf, kk)

% Zgjidhja e ekuacionit te percushmerise 1D %me kushte fillestare u(x, t(1)) dhe %kushte kufitare % u(x(1), t) = kk(1), u(x(end), t) = kk(2). J = length(x); N = length(t); dx = mean(diff(x)); dt = mean(diff(t)); s = k*dt/dx^2; u = zeros(N,J); u(1, :) = kf; for n = 1:N-1 u(n+1, 2:J-1) = s*(u(n, 3:J) + u(n, 1:J-2)) +(1 - 2*s)*u(n, 2:J-1); u(n+1, 1) = kk(1); u(n+1, J) = kk(2); end

Funksioni percueshmeria ka si argumenta hyrës vlerën e k ,vektorin x dhe t , vektorin

kf të kushteve fillestare ( i cili është menduar të ketë të njëjtën gjatësi me vektorin x ), dhe

vektorin kk i cili përmban dy kushtet kufitare. Theksojmë se meqenëse trguesit e rreshtave në

Matlab duhet të fillojn nga 1 dhe jo 0, një problem i cili është shmangur lehtësishtë nga

shënimi fillestar 1n për kohën fillestare dhe 1j e cila përfaqëson skajin fundore në të majtë

të shufrës. Përdorim programin e mësipërm për të zgjidhur ekuacion e përcueshmërisë me

2k në intervalin 5 5x për [0,4]t , me kushte kufitare 15 dhe 25 , dhe shpërndarje

fillestare të temperaturës15 për 0x dhe 25 për 0x . Rastin e mësipërm mund ta mendojmë

si dy shufra me temperatura të ndryshme seciala me gjatësi 5 njesi të bashkuara në pikën

0x në castin 0t , dhe secili prej skajeve të shufrave janë vendosur në një mjedis i cil ruan

temperaturën e tyre fillestare. Duhet të zgjedhim vlerat e t dhe x , provojmë me 0.1t dhe

0.5x , pra janë 41 vlera të variablit t që shtrihen në [0,4] dhe 21 vlera të variabëlit x që

shtrihen në [ 5,5]

vlert = linspace(0, 4, 41);

vlerx = linspace(-5, 5, 21);

kf = 20 + 5*sign(vlerx);

u = percueshmeria(2, vlerx, vlert, kf, [15 25]);

surf(vlerx, vlert, u)

xlabel x; ylabel t; zlabel u

Gjatë ekzekutimit të programit të mësipërm kemi përdorur surf për të shfaqur grafikisht

zgjidhjen e plote ( , )u x t . Rezultati i përftuar është i pabesushme4; po të shohim shkallëzimin

në boshtin u .Zgjidhja numerike e ekuacioneve me derivate të pjesshme është plot "rrezik",

paqendrueshmëria ashtu sic shfaqet mësipër është një nga problemt më të zakonshme të

metodës së diferencave të fundme. Për shumë ekuacion me derivate të pjesshme skema e

diferencave të fundme jo gjithmonë funksion, por në rastin e ekuacionit të përcueshmërisë dhe

në ekuacion të ngjashme me të, funksionimi i mirë i kësaj skeme varet nga cilësit e zgjiedhjes

së t dhe x . Ndonjë mund të medoj se meqenëse zgjedhja e x ishte e madhe, atëherë kjo

duhet zvogëluar, por një veprim i tillë vetëm sa mund ta përkeqësoj situatën. Së fundi

parametri i vetëm që përdorim gjatë llogaritjeve është konstantja s , një disavantazh i kryerjes

4 Fenomeni blow-up

-5

0

5

0

1

2

3

4-1

-0.5

0

0.5

1

x 1012

xt

u

së llogaritjeve në një m-file është se ne nuk mund të shohim madhësit e ndërmjetëme që ai

njehson. Në nje situat të tillë ne mund të njehsojmë se 2

2(0.1)0.8

(0.5)s , kjo do të thotë se

koeficenti 1 2s i n

ju është negativ. Pra "mesatarja e peshurar" të cilën e përshkruam mësipër në

shpjegimin e hapave iterativ në të vërtetë nuk është një mesatare sepse në secilin cast kohe ,

secila pjesë e shufrës trasferon më shumë nxehtësi se sa ka. Kështuqë zgjidhja e problemi të

mësipërm është zvogëlimi i t , për shembull nëse e përgjysmojm, pra 0.4s , atëherë të gjithë

koeficientët janë pozitiv.

vlert = linspace(0, 4, 81);

vlerx = linspace(-5, 5, 21);

kf = 20 + 5*sign(vlerx);

u = percueshmeria(2, vlerx, vlert, kf, [15 25]);

surf(vlerx, vlert, u)

xlabel x; ylabel t; zlabel u

Ndërkohë që koha rritet, shohim se shpërndarja e temperaturës duket se përafrohet me një

funksion linear të x .Me të vërtetë ( , ) 20u x t x , është limit i gjëndjes së qendrueshme për

këtë problem; ai kënaq ekuacionin

2

2

u uk

t x

së bashku me kushtet kufitare.

-5

0

5

0

1

2

3

415

20

25

xt

u

Në mënyrë të pëmbledhur themi se përpara se ti drejtohemi procesit të zgjidhjes numerike sic

e ralizuam më sipër duhet të kemi njohuri lidhur me disa teori të ekuacioneve me derivate të

pjesshme. Gjithësesi në rastin e studiuar më sipër rregulli i thjeshtë ishte që për cdo iteracion

koeficientët ti mbajmë pozitiv, duke prodhuar një rezultat të kënaqshëm. Një kontroll teorik

lidhur me qendrueshmërin e skemës së diferencave të fundme për rastin një -dimensional të

ekuacionit të përcueshmëris tregon se për cdo vler të s ndërmjet 0 dhe 0.5skema funksionon,

duke na sugjeruar se vlera më e mirë e t për një x të dhënë është ajo që jep 0.25s

.((Shikoni Partial Differential Equations: An Introduction,nga W alter A. Strauss, John W iley

and Sons,1992.)

Më parë përmëndm se problemi që zgjidhëm numerikish mund të zgjidhet dhe analitikisht.

Vlera e metodave numerike qendron pikërsisht në aplikimin e tyre për zgjidhjen e ekuacioneve

me derivate të pjesshme, zgjidhja analitikë e të cilëve është e pamundur ose e panjohur.

Shqyrtojmë rastin ekuacionit një dimensional të përcueshmëris me koeficent variabël, i cili

përfaqëson një material johomogjen me koeficentin të përcueshmërisë ( )k x të ndryshueshëm.

2

2( ) ( ) '( )

u u u uk x k x k x

t x x x x

Shkruajm ekuacionin me derivate të pjesshme me ndimën e skemës së diferencave të fundme,

ku për termin e parë të anës së djathtë përdorim një skemë diferencash simetrike.

1

1 1 1 1 1 1

2

2

2 2

n n n n n n n n n

j j j j j j j j j

j

u u u u u k k u uk

t x x x

ku ( )jk k a j x . Pas disa trasformimeve skema e mësipërme merr pamjen

1

1 1 1 1 1 11 2 0.25n n n n n n

j j j j j j j j j ju s u u s u s s u u

ku 2

j

j

k ts

x

M-file në vijim të cilit i kemi vendosur emrin percueshmeriavariabel.m,realizon

implemetimin e iteracionit të më sipërm.

function u = percueshmeriavariabel(k, x, t, kf, kk) % Zgjidhja e ekuacionit te percushmerise 1D me koeficent percueshmerie % variabel me kushte fillestare u(x, t(1)) dhe %kushte kufitare % u(x(1), t) = kk(1), u(x(end), t) = kk(2). J = length(x); N = length(t); dx = mean(diff(x)); dt = mean(diff(t));

s = k*dt/dx^2; u = zeros(N,J); u(1, :) = kf; for n = 1:N-1 u(n+1, 2:J-1) = s(2:J-1).*(u(n, 3:J) + u(n, 1:J-2)) + ... (1 - 2*s(2:J-1)).*u(n,2:J-1) + ... 0.25*(s(3:J) - s(1:J-2)).*(u(n, 3:J) - u(n, 1:J-2)); u(n+1, 1) = kk(1); u(n+1, J) = kk(2); end

Shënojmë se k është menduar si një vektorë me të njëjtën gjatësi sa vektori x . Përdorim

programin e mësipërm për të zgjidhur ekuacionin një dimensional të përcueshmëris me

koeficient variabël me të njëjtat kushte fillestare dhe kufitare si më parë, dhe

2

( ) 15

xk x

,

meqenëse vlera maksimale e k është 2 atëherë mund të përdorim të njëjtat vlera të t dhe

x si më sipër . vlert = linspace(0, 4, 81);

vlerx = linspace(-5, 5, 21);

kf = 20 + 5*sign(vlerx);

vlerk=1+(vlerx/5).^2;

u = percueshmeriavariabel(vlerk, vlerx, vlert, kf, [15 25]);

surf(vlerx, vlert, u)

xlabel x; ylabel t; zlabel u

Në këtë rast limiti i shpërndarjes së temperaturës nuk është lineare, ajo ka një rrënie të

shpejtë të gradientit të temperaturës në mes ku koeficienti i përcueshmërisë është i vogël.

Ju mund ta përdorni metodën e diferencave të fundme për të zgjidhur ekuacionin e

përcueshmërisë në rastin dy dimensional dhe tre dimensional. Për ekuacione të tillë dhe për

-5

0

5

0

1

2

3

415

20

25

xt

u

ekuacione të tjerë me derivate të pjesshme në lidhje me kohën dhe dy dimensional, ju

gjithashtu mund të përdorni "PDE Toolbox" i cili realizon zgjidhjen e ekuacioneve duke

implementuar metodën komplekse të elementeve të fundme.

6.7.2 Zgjidhja e Simuluar

Ekuacionin e përcueshmërisë të cilin e kemi studiuar më sipër, marrim shkas ta analizojmë

vecanarisht dhe me ndimën e paketës SIMULINK . Për të realizuar këtë , përafrojmë derivatet

në lidhje me x me diferencat e fundme, duke e menduar ekuacionin si një vektor vlerash të

ekuacionit diferencial me t variabël të pavarur. SIMULINK realizon zgjidhjen e modelit të më

sipërm me ndimën e një prej funksioneve që përdoren në zgjidhjen e ekuacioneve

diferencial,ode45. Për ta ilustruar këtë marrim të njëjtin shembull, fillojmë me rastin kur

2k në intervalin 5 5x për [0,4]t , me kushte kufitare 15 dhe 25 , dhe shpërndarje

fillestare të temperaturës15 për 0x dhe 25 për 0x .Zëvendësojmë ( , )u x t për t të fiksuar,

me vektorin u të vlerave të ( , )u x t , kur 5:5x . Kemi 11 vlera të x në të cilat duhet të

përcaktojmë u , po meqenëse ( , )u x t është e përcaktuar në skajet e shufrës, atëherë u mund ta

marrim një vektor 9 dimensional, dhe në fund kur kemi përfunduar shtojmë vlerat e sakjeve të

shufrës .Meqënse shprehjen 2

2

u

x

e përafrojmë me diferencat e fundme dhe për thjeshtësi marrim

1x , atëherë ekuacioni jonë kthehet një një sistem ekuacionesh diferencial

( )u

k Au ct

Ana e djathtë e ekuacionit të mësipërm përfaqëson përafrimin e 2

2

uk

x.

Matrica A ka pamjen

2 1 0

1 2

1

0 1 2

A

sepse shprehjen 2

2

u

x

në pikën ( , )n t e zvëndësojmë me ( 1, ) 2 ( , ) ( 1, ) u n t u n t u n t .

Matrica A në Matlab mund të paraqitet në formën

-2*eye(9) + [zeros(8,1),eye(8);zeros(1,9)] +...

[zeros(8,1),eye(8);zeros(1,9)]’

Vektori c në ekuacioni e mësipërm imponohet nga kushtet kufitare, elementi i parë i këtij

vektori ka vlerën 15 ndërsa, elementi i fundit 25, dhe zero të gjithë elementët e tjerë. Ky vektor

në Matlab shprehet me ndimën e simbolikës [15;zeros(7,1);25]. Kuptim për vektorin c

vjen nga fakti se 1u( ) përfaqëson 4u( ,t ) dhe 2

2

u

x

në këtë pikë përafrohet me anë të

shprehjes

5 4 3 15 2 1 2u( ,t ) u( ,t ) u( ,t ) u( ) u( )

Arsyetimi është i ngjashëm dhe për skajin tjetër të shufrës.

Më poshtë jepet modeli i simulimit i cili i korrespondon llogaritjeve të bëra më sipër.

Le të shpjegojmë se si funksionë skema e mësipërme, si fillim është e nevojshe të përcaktojmë

kushtet fillestare për u në parametrat e bllokut (Kushte fillestare) i cili është një bllok

integrator,.Meqenëse 1u( ) … 4u( ) përfaqëson ( , )u x t në pikat 4x … 1x dhe 6u( ) …

9u( )përfaqëson ( , )u x t në pikat 1x … 4x , atëherë vleren fillestare të u e marrim

[15*ones(4,1);20;25*ones(4,1)] (Me marveshje 20 është marrë vlera në pikën 0x

,meqenëse është në mesin e zonës kur u është e barabrtë me 20 dhe 25 )

Më pas për të kaluar në bllokun (A*u), ku duhet vendosur shumëzimi i tipit matricor.

Rezultatet e modelit të mësipërm shfaqen në bllokun "Scope", grafike i cil na jep varësin e u

nga t , por më e dobishëme do të jetë që rezultatet e modelit të mësipërm të ruhen në

"Workspace" dhe më pas me ndimën e komandës surf ndërtojmë grafikisht zgjidhjen e plote

( , )u x t . Në fillim duhen përcaktuar parametrat e simulimit, shkojm te menu, dhe zgjedhim

Configuration Parameters në menun Simulation të modelit . Në pjesën Solver, vendosnim

kohën e ndalimit (stop time) 4,

Pas ekzekutimit të modelit në "Workspace" vektori tout do të ketë përmasat 51 1x ,ndërsa

vektori xout ka përmasat 51 9x . Secila rresht në vektorët e mësipërm i korrespondon një hapi të

vetme kohe, ndërsa secila shtyllë e vektorit xout i korrespondon një vlere të vetëme të x .

Por vektorit u duhet ti shtojmë dhe vlerat e ( , )u x t në skajet e shufrës. Më poshtë me ndimën

e komandës surf ndërtohet grafikisht zgjidhjen e plote .

u = [15*ones(length(tout),1), xout, 25*ones(length(tout),1)];

x = -5:5;

surf(x, tout, u)

xlabel('x'), ylabel('t'), zlabel('u')

title('Zgjidhja e ekuacionit tepercueshmeise në nje shufer')

Figura është e njëjtë me figurën e përftuar nga zgjidhjë direkte me metodën e diferencave të

fundme. I lihet lexuesit të modifikoj modelin në rastin e ekuacionit një dimensional të

përcueshmëris me koeficient variabël.

-5

0

5

0

1

2

3

415

20

25

x

Zgjidhja e ekuacionit te percueshmeise ne nje shufer

t

u

Ushtrime

1. Në një betej ushtarake kapiten Pikardi fshihet në një arenë me një sipërfaqe 50 50x m , e

cila mbrohet nga një "fushë" me një forcë të nivleit 5 . Fatkeqësisht, Aleksandri , i cili

është duke qelluar drejt arenës ku fshihet kapiten Pikardi ka një rreze vdekjeprurëse e

cila mund ta përshkoj forcën e fushës mbrojtëse . Efekti i rrezeve vdekjeprurëse është

10,000 illumatone rezatuese vdekjeprurës. Për vrasjen e kapitenit nevojiten vetëm 50

illumatone, cdo gjë tjetër nuk ka efekt. Sasia e illumatoneve të cilat arrijn në pikën ( , )x y

kur rrezja vdekjeprurëse qellon një metër mbi sipërfaqen e tokës në pikën 0 0( , )x y jepet

nga ekuacioni i mëposhtëm

2 2

0 0

10,000

4 (( ) ( ) 1) x x y y

Sensorët lokalizues të Aleksandrit nuk mund ta përcaktojn ekzaktësisht vendodhjen e

Pikardit, kështu që ata qellojn me hamendje në pika të caktuar të arenës.

(a) Përdorni contour për të treguar arenën pas 5 gjujatieve të para me rreze

vdekjeprurëse. Koha gjatë së cilës sasia rrezatimit përgjyshmohet është shumë e

shkurtër, pra mund të supozohet se rrezatimi zhduket menjëherë, vetëm gjuajtia e

parë mund të ketë rezultat.Të 5 gjuajtiet të vendosen në një grafike njëra pas tjetrës.

Në cilin pozicion të arenës duhet të fshihet Pikardi?

(b) Supozojmë se Pikardi ndodhet në qëndër të arenës .Gjithashtu supozojmë se

Aleksandri qellon me rreze vdekjeprurëse 100 herë, ku secila e shtënë godet një

pikë të cfarë doshme të arenës. A është vrarë Pikardi ?

(c) Për të njëjtat kushte si në kërkesën (b) , përcaktoni me përafërsi probabilitetin që

kapiten Pikardi ti mbijetoj një sulmi prej 100 të shtënash.

(d) I kthemi kërkesës (c) por duke e zhvendosur kapitenin në gjysëm disatancën e

njërës faqe (pra 37.5, 25 x y nëse kordinatat e arenës janë 0 50 x dhe

0 50 y ).

(e) Ribëni simulimin duke e zhvendosur kapitenin plotësisht në njërën faqe, dhe më pas

plotësish në njërën qoshe të arenës. Cfarë përfundimesh nxirni?

2. Për një numër n pozitivë le të jetë ( )A n një matricë me përmasa nxn me elemntë të

formës 1

( 1)

ija

i j. Për shembull

1 11

2 3

1 1 1

2 3 4

1 1 1

3 4 5

A

Vlerat e veta të matricës ( )A n janë të gjitha reale . Shkruani një skript m-file i cili printon si

rezultat vleren e vetë më të madhe të (500)A .(Udhëzim:M-file i më sipërm mund tju marrë

kohë gjatë ekzekutimit nëse për të përcaktuar matricën A përdorni një cikle brënda ciklit.

Përpiquni ta shmangni këtë veprim)

3. Matlab ka një funksion të quajtur lcm i cili gjen shumëfishin më të vogël të përbashkët

të dy numrave .Shkruani një funksion m-file mylcm.m, që gjen shumëfishin më të vogël

të përbashkët për një numër të cfarë doshëm numrash pozitiv, të cilajt mund të jepen si

argumenta të ndarë ose si vektore. Për shembull

mylcm(3,4,5) ose mylcm([3 4 5]) të dy duhte të kthejnë si rezultat 60 .

Programi duhet të kthej një mesazhë ndimës nëse numrat nuk janë pozitivë.(Udhëzim:Për

tre numra ju mund të përdorni funksioni lcm duke gjetur shumëfishin m më të vogël të

përbashkët të dy numrave, më pas përdorni përsëri funksioni lcm për të gjetur

shumfishin më të vogël të përbashkët të m dhe numrit të tretë ).

4. Shqyrtojmë problemin e mëposhtëm të programimit linear. Jane Doe kandidon për

komisionere qarku. Ajo personalisht do të anketoj katër qytete kryesore; Gotham,

Metropolis, Oz, dhe River City. Ajo dëshiron të dij se sa Banesa duht të vizitoj në cdo

qytet . Detyrimet janë si më poshtë

I. Ajo ka si qellim që në secilën banesë të jap një fletë palosej, duke ditur që ka

vetëm 50,000 të disponueshme .

II. Kostoja e udhëtimit për secilën banesë në qytetet Metropolis, Gotham është

0.5$ ,1$ në Oz dhe 2$ në River City. Ajo ka në dispozicion vetëm 40,000$ .

III. Numri i minutave (mesatarisht) që kërkohen në secilën banesë janë 2 minuta në

Gotham, 3 minuta në Metropolis,1 minutë në Oz, dhe 4 minuta në River City .

IV. Jane për shkak të profilit të saj politik e di shumë mirë se duhet të vizitoj më

shumë banesa në Metropolis se sa në Gotham, dhe se numri i vizitave të bëra në

qytetet Metropolis dhe Oz në total nuk duhet ta kaloj numrin e vizitave të bëra në

River City.

V. Jane shpreson që gjatë vizitave të saj, kontributi në fushat mesatarisht të jetë; 1$

nga secila banesë në Gotham, 1 $4

nga banuesit në Metropolis, 1 $2

nga banuesit

në Oz dhe 3$ nga të afërmit në River City. Ajo duhet të arrij të paktën 10,000$

nga i gjithë anketimi.

Qellimi i Jane është të maksimizoj numrin e mbështetësve. Ajo mati që për

secilën banes të vizituar në qytetin Gotham probabiliteti që të fitonte një

mbështetës ishte 0.6 , Oz 0.5 , Metropolis 0.6 dhe River City 0.3 .

(a) Sa banesa duhet të vizitoj Jane në secilin nga katër qytetet?

(b) Supozojmë se ajo mund të dyfishoj kohë që mund të shpenëzoj në cdo vizitë. Si

është profili i vizitave ?

(c) Por supozojmë se vec dyfishimt të kohës (si në kërkesën (b)) ajo gjithashtu dyfishon

dhe kontributet që merr. Si është profili në një situatë të tillë?

5. Shqyrtojmë qarkun e mëposhtëm ku një nga elementët e së cilit ka sjellie jolineare

Ndryshe nga rezistenca, dioda është një element jolinear, pra qe do të thotë nuk i bindet

ligjit të Ohmit. Sjellia e diodës jepet nëpërmjet ekuacionit

0D

T

V

Vi I e (1)

Ku i është rryma në diodë, DV është tensioni në dodidë, T

kTV

e ku k përfaqëson

konstanten e Bolzmanit, T temperaturë në diodë, dhe e ngarkesën elektrike .

Duke zbatuar ligjin e Ohmit për rezistencen R dimë se RV iR ku RV është tensioni në

rezistencë R . Në bazë të ligjit të Kirkofit për tensionin shkruajmë 0 R DV V V , duke e

zëvendësuar në relacionin e mësipërm marrim

0 DV Vi

R (2)

Ekuacioni (2) tregon se i është një funksion linear zbritës i DV me vlerë 0V

Rkur DV është

zero, ndërsa ekuacioni (1) tregon se i është një funksion eksponencial rritës i DV .

Meqenëse 0 0RI V atëherë të dyja vijat e mësipërme duhet të priten në një pikë. Duke

zëvendësuar ekuacionin (2) te (1), shohim se tensioni në diodë duhet të kënaq ekuacionin

0 0 D

T

V

VDV V RI e

(a) Vlerat e arsyeshme të konstanteve elektrike jane 0 1.5V V , 1000 R ,

5

0 10I Adhe 0.0025TV V . Përdorni komandën fzero për të gjetur DV dhe

rrymën i në qarkë.

(b) Në kushtet e problemit të mësipërm supozojmë se tensioni në bateri 0V dhe

rezistenca R janë të pa ndryshushme. Por le të supozojmë se kemi disa lir për të

ndikuar në karakteristikën elektrike të diodës. Për shembull përgjysmojmë 0I

.Cfarë do të ndodhë me tensionin?

(c) Cfarë do të ndodhë me tensionin në qoftë se përgjysmojmë TV

(d) Cfarë do të ndodhë me tensionin në qoftë se përgjysmojmë TV dhe 0I

(e) Së fundmi, duam të shqyrtojmë ndryshimin e tensionit kur TV dhe 0I zvogëlohen

dretj zeros. Përcaktojmë 0.0025TV u dhe 5

0 10I uA ku 0u . Në mënyrë të

vecant gjeni zgjidhjen kur 10 ju kur 0,..,5j . Në fund shfaqin në loglog

vlerat e tensionit të gjetur në funksion të 0I . Cfarë përfundimesh nxirrni?

6. Ndërtoni një model simulimi për ekuacionin e lavjersit të dhënë si më poshtë

( ) 0.5 ( ) 9.81sin( ( ))

x t x t x t

Për të realizuar një model të tillë do tju nevojitet blloku i funksionve trigonometrike, të cilin

mund ta gjeni në "Math library". Përdoreni modelin e realizuar për të vizatuar disa portrete

fazore .

7. **Sic e dini Galileo dhe Newton zbuluan se të gjithë trupat afër sipërfaqes së tokës bien

me të njëjtin nxitim g për shkakë të forcës gravitacionale të tokës 232 /g ft s .

Megjithatë trupat u nënshtrohen dhe forës së rezistencës së ajrit. Nëse marrim parasysh

forcën gravitacionale dhe forcën e rezistencës së ajrit lëvizja e një topi mund të

modelohet nëpërmjet ekuacionit diferncial

[0, ]

x x xg c (3)

Ku x në funksion të kohës është vektori që jep kordinatat e pozicionimit të topit

(kordinata e parë matet horizontalisht, ndërsa kordinata e dytë matet vertikalisht)

x është

vektori i shpejtësive,

x përfaqëson nxitimin e topit , ndërsa

x është moduli i shpejtësisë

dhe c është një konstante që varet nga forma dhe masa e topit si dhe densiteti i ajrit .

Për një top bejsbolli konstantia c është afërsisht 0.0017 , ku distanca matet në "feet" dhe

koha në "sekonda"(Shikoni , për shembull, Kapitulii 18, “Balls and Strikes and Home

Runs,” inToëing Icebergs, Falling Dominoes, and Other Adventures in Applied

Mathematics,by Robert Banks, Princeton University Press, 1998).

Ndërtoni një model simulimi për ekuacionin (3) dhe me ndimën e tij studjoni trajektoren

e topit.

Për të realizuar këtë model,

x ,

x dhe x paraqitini me ndimën e një blloku integrator.

Ku madhësia do të llogaritet më ndimën e një blloku shume ( ) e cila do të ketë si

hyrje dy vektor, një nga të cilët duhet të jetë bllok konstant dhe do të përmbaj vektorin

[0, 32] , ndërsa vektroi tjetër do të përfaqësoj termin "pengues" të anës së djathtë të ekuacionit

(3) i llogaritur nga vlerat e

x . Ju duhet të ndryshoni njërin nga prametrat për të parë se

cfarë ndodh me dhe pa rezistencen e ajrti .Rezultatet lidhini më një bllok grafik me

parametra min 0, mi 0, max 500, max 150 x y x y për të parë se cfarë

ndodh me trajektoren e topit në një distance prej 500 ft dhe lartësi 150 ft

(a) Nëse (0) [0,4], (0) [80,80]

x x . Përcaktoni sa largë do të shkoj topi përpara se të godas

tokën (për të dy rastet me dhe pa rezistencen e ajri ) . Sa kohë do ti duhet topit për të

goditur tokën (kaha gjatë së cilës topi qendron në ajër), dhe sa është shpejtësia e topit

gjatë kësaj kohe (për të dy rastet; me dhe pa rezistencen e ajrti ) .

(b) Supozojmë se loja do të luhet në Denver dhe Colorado, ku për shkakë të atmosferës së

rradhe kostantja c është afërsisht 0.0014 . Sa largë do të shkoj topi përpara se të godas

tokën (për të dy rastet; me dhe pa rezistencen e ajri) duke i komunikuar të njëjtën

shpejtësi fillestare si në rastin (a)

8. Zgjidhni problemin e ditëlindjes me ndimën e simulimit Monte Karlo. Pyetja së cilës

kërkohet ti jepet përgjigje është: në një gupë me PN individë, përcaktoni probabilitetin

që të paktën dy prej tyre ta kenë ditëlindjen në të njëjtën ditë. Qellimi i këtij programi

është të llogaris probabilitetin PN në zonën [2, ]nmaksIndivide .