Transcript Solver

BME VEGYÉSZMÉRNÖKI ÉS BIOMÉRNÖKI KAR
MESTERSZINTŰ MŰSZERES ANALITIKA KÉMIA
SZAKIRÁNYÚ TOVÁBBKÉPZÉSI SZAK
INFORMATIKA (SZÁMÍTÁSTECHNIKA)
2012/2013. őszi félév
Tanár:
Kollárné Dr. Hunek Klára, ([email protected])
Szervetlen és Analitikai Kémia Tanszék, Ch. I/9
tárgy honlapja: http://knight.kit.bme.hu/szakmern
másolat : http://goliat.eik.bme.hu/~kollarne/szakmern
1
Előadás: 2012. nov. 12. és 19. 1115-13h (CH. 305)
Gyakorlatok a CH. gépteremben 2013. jan. (14.) 900-1830
Követelmények
Az előadásokon kijelölt HF-k határidőre történő beadása
A géptermi gyakorlatok gyakorló feladatainak megoldása
Az utolsó komplex labor-feladat legalább 40%-os szinten (min. 32p, max 80p.)
történő megoldásával megajánlott vizsgajegy szerezhető.
A komplex labor-feladattal (KLF80p) ill. a kijelölt HF* beadásokkal szerzett
félévközi pontok alapján a megajánlott vizsgajegyek ponthatárai:
40 – 59 pont: 2 ; 60 – 74 pont: 3 ; 75 – 89 pont: 4 ; 90 ponttól: 5
HF*: (HF1+HF2)*S ahol 0HFk6 ; 1S2 ; (S=1+[(KLF-32)/48]2 ha KLF32)
2
MS Office részei
Ezekkel
foglalkozunk
3
Előadások
Nov. 12. Az Ms Office részei, az Ms Excel részei
Excel alapok:
Cellahivatkozások, munkalap-függvények, Solver
A Visual Basic for Excel alapjai
<Sub, End Sub>, <InputBox>, <cells(sor, oszlop)> értékadás,
<If Then Else End If>, <GoTo>, típusok
HF1
Nov. 19.
Ciklusok: <Do Loop, Until és While >, <For Next>
Tömbök, olvasás fájlból
HF2
Januári labor a Ch gépteremben
Access alapok. (Excel munkalapból indulva)
VB for Excel:
Alprogramok: Function és paraméteres Sub
Makrók rögzítése
UserForm megtervezése, létrehozása, alkalmazása
Komplex feladat megoldása
4
Az Ms Excel részei:
Worksheet (Munkalap)
Diagram (Ábra-lap)
Modul (Modul-lap)
UserForm (Űrlap)
5
Egy kis Excel emlékeztető
• Cellák típusa, szegély, háttérszín
• Munkalap létrehozása, átnevezése
• Adatfájl betöltése, tizedesvessző!
• Grafikon készítése Pont XY ( Grafikon !)
1. Excel alapjai:
2. Írjuk be egy Excel munkalapba az itt látható táblázat oszlop-címeit, valamint a B2, E1, E2,
F1, F2 cellák tartalmát. Ezután töltsük ki az A oszlopot, majd a B és C oszlopokat a következő
formulák „lehúzásával”:b3= b2+(a3-a2)*4*cos(5*a3)
c2= $f$1*sin($f$2*a2)/5
Változtassuk a ill. b értékét 2,3 ill. 5,8-ra
“
6
Solver
Mivel a C oszlop a c2= $f$1*sin($f$2*a2)/5 formula „lehúzásával” készült, minden cellája, s
ezeken keresztül a D oszlop celláinak értékei is függenek az F1 és F2 cellák értékeitől.
-
Minimalizáljuk Soverrel a D17 cella értékét,
az F1 és F2 cellák értékét változtatva.
Kérjünk Eredmény jelentést!
7
A Solver funkciói:
• Szélsőérték keresés
• Nemlineáris egyenletek, egyenletrendszerek megoldása
• Lineáris programozási feladatok megoldása
A korlátozó feltételek lehetnek egyenletek, vagy egyenlőtlenségek
A Solver elérése:
Excel 2003
Eszközök  Solver [ Tools  Solver]
Ha a Solver-t nem látja az Eszközök között,
kapcsolja be a Bővítménykezelő-ben!
Excel 2007, 2010
Adatok  Elemzés  Solver
Ha a Solver-t nem látja itt, kapcsolja be a Bővítménykezelő-ben, melynek elérése:
Excel beállításai  Bővítmények  (Kezelés: Excel bővítmények) Ugrás
8
A Solver
fő paramétereinek
beállítása
2003
2010
9
2003
A Solver
eredménykérő űrlap
beállítása
2010
10
2003
A Solver eredményjelentés
különböző Excel verziókban
2010
11
Egyenletrendszer megoldása Solverrel
2
 10000
   xe  20  y e 
x  
 xe 
y
xe
 2 ln ye
ye
12
Programozás
• a program az utasításokat sorban hajtja
végre, kivéve….(ld. később)
• pontosan olyan, mintha egy könyvet
olvasnánk, amiben le van írva, hogy
sorjában mit kell tennünk éppen most,
beleértve, hogy hova lapozzunk a következő
teendő elolvasásához
• kicsit „kínai”, de meg lehet szokni
• sokféle kínai van, de ha egyet ismer az
ember, az nagyon segít a többi
felismerésében
• a
programozás
megtanulni
filozófiáját
érdemes
13
Egy „programocska”
A blokkdiagram:
A VBA program:
Start
Kiír: „x” „x köbe”
x=2
kiír: x, x3
x=x+1
igen
x<=8
?
nem
Stop
Amit a program kiír
14
VBA program felépítése:
Sub <neve> ( )
<esetleg deklarációk>
<utasítások>
End Sub
A deklaráció (ami ebben a példában nincs)
megadja a változók típusát:
Ha pl. a és b számok, és értékük 1 ill. 2,
akkor a+b kifejezés értéke 3 lesz.
De ha a és b típusa string, és értékük
„1” ill. „2”, akkor a+b értéke „12” lesz.
Amit a program kiír
15
Változók
•
A program az adatokat változókban tárolja
(nevükkel egy „rekeszt” jelölünk, amibe
számokat/betűket írunk)
•
pl. ha a=2, akkor x=a^3-15 = -7
•
vagy, pl. ha b=8, akkor y=3*b/2 = 12
•
a számítógép az a, b, vagy bármely más változót
mindig az értékével helyettesíti
•
akkor is, ha nem adtunk neki értéket, csak akkor
nem tudjuk, milyen értékkel…
A számítógép szempontjából fontos a változó típusa a műveletek miatt
egész : Integer
tört: Single, Double
szöveg: String
pl. ha x egész és x=5/2, akkor 2 lesz x értéke
pl. ha y tört és y=5/2, akkor 2.5 lesz y értéke
de pl. „nótás”/2 nem lesz „félnótás”…
16
•
Műveletek
•
Adatforgalom
Matematikai alapműveletek
 x=1+2
 y=18-2*x
 x=y/24
String műveletek
 ha s=„osztogat”, akkor
 s=„f”+s
 után s=„fosztogat”
• Kiiratás (munkalapra)
 cells(1,1)=„Sziasztok!!”
• Adatbeolvasás cellából
 a=cells(1,1)
• Adatbeolvasás billentyűzetről
 x=InputBox(”x?”)
17
feltételesen végrehajtandó utasítás
és feltételes utasítás
Az X értékek (mindkét esetben): 2 , -4 , 3 , -1
megad: X , kiír: X
megad: X , kiír: X
igen
Y = X*X
X páros ?
X páros ?
igen
Y = X*X
nem
nem
Y=X+8
kiír: Y
IF <log.kif.> THEN <utasítás>
kiír: Y
Kiírás: (2,4) ; (-4,16 ) ; (3,16 ) ; (–1,16 )
IF <log.kif.> THEN <ut.1> ELSE <ut.2>
Kiírás: (2,4 ) ; (-4,16 ) ; (3,11 ) ; (-1,7 )
18
18
A korábbi Excel feladat
VBA programmal
1. Korábban beírtuk egy Excel munkalapba az itt látható táblázat oszlop-címeit, valamint a
B2, E1, E2, F1, F2 cellák tartalmát. Ezután kitölttöttük az A oszlopot, majd a B és C oszlopokat
a következő formulák „lehúzásával”:
b3= b2+(a3-a2)*4*cos(5*a3)
c2= $f$1*sin($f$2*a2)/5
2. Új feladat: Az Excel munkalap A oszlopát átmásoltuk
egy másik munkalapra. Ezután megnyitottuk a Visual
Basic Editort (Eszközök  Makrók  VB Editor), és
beszúrtunk egy modul-lapot, ahová beírtuk a
programot: Sub elso()
Dim x As Double, k As Integer
Dim a#, b#
Cells(1, 2) = "f": Cells(1, 3) = "fc"
k = 2: Cells(k, 2) = 0
x = Cells(k, 1)
a = InputBox("a?", "itt vagyok", 2)
b = InputBox("Add meg b értékét", , 6)
Cells(k, 3) = a * Sin(b * x) / 5
vissza:
k=k+1
x = Cells(k, 1)
Cells(k, 2) = Cells(k
- 1, 2) + (x - Cells(k - 1, 1)) * 4 * Cos(5 * x)
“
Cells(k, 3) = a * Sin(b * x) / 5
If k < 16 Then GoTo vissza
Cells(17, 1) = "itt a vége"
End Sub
-
19
Figyelem!
1.) Excel 2007 ill. 2010-ben a makrót tartalmazó fájlokat xlsm
kiterjesztésű (makróbarát) fájlba kell menteni!
2.) Ha az Excel-2003 verziót használ, és az Excel biztonsági szintje a
makróvédelem szempontjából megfelelően van beállítva, makrót
tartalmazó fájl megnyitásakor a következő figyelmeztetés jelenik meg:
Amennyiben Excel-2003-ban nem ez figyelmeztetés jelenik meg, vagy
egyáltalán nem jelenik meg figyelmeztetés, állítsa be a megfelelő biztonsági
szintet:
Eszközök  Beállítások  Biztonság  Makróvédelem  Közepes
20
1.HF
Tárgy honlapja: http:// knight.kit.bme.hu/szakmern
másolat: http://goliat.eik.bme.hu/~kollarne/szakmern
Elküldendő nov. 17-ig: <Sajatnev>.xlsm (vagy xls)
fájl a [email protected] címre
1. Készítse el az itt megadott táblázat “A” oszlopát
„lehúzással”, valamint töltse ki a táblázat fejlécét, a
B2 cellát és az “E” és “F” oszlopok első két sorát.
2. Töltse ki a táblázat második és harmadik oszlopát az
alábbi formulák “lehúzásával”:
b3=b2+(a3-a2)*5*sin(4*a3)
c2= $f$2*(1-cos($f$1*a2))/2
3. Készítse el a táblázat első 3 oszlopából az itt látható
diagramot.
4. A „D” oszlopot töltse ki a d2=(c2-b2)^2 formula
„lehúzásával”, a D16 cellába kerüljön a fölötte
levő számok összege. Minimalizálja a D16 cella
értékét Solver használatával! Kérjen Eredmény
jelentést!
5. Az „A” oszlopot másolja át egy másik Excel
munkalapra. Írjon VBA programot a munkalap „B”
és „C” oszlopának kitöltésére úgy, hogy az 1. és 2. feladat szerinti értékek kerüljenek a
megfelelő cellákba! F1 és F2 cellákba ne írjon számot, helyettük c és k változókat használjon,
melyek értékét InputBox-szal adja meg! A 16. sor 1. cellájába a program írja ki az ön nevét!
21