Nje Hyrje Ne Matlab
description
Transcript of Nje Hyrje Ne Matlab
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
të
Zgjidhë një ekuacion diferencial duke përdorur
algoritmin Runge-Kutta e rendit të 4të/ 5
të
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.
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
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 .