A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre. SZÁMÍTÁSTECHNIKAI ROVAT
(Rovatvezető: Ada‐Winter Péter) 14. Az előző részben kitűzött feladatok megoldása
1. Feladat: Írjuk meg a PR13 hiányzó szubrutinjait. (Ezek: VISSZ, CONTR, SCR3)
Megoldás: A visszahelyettesítő szubrutin egy lehetséges blokkdiagramja az 1. ábrán látható. Itt C a soronkénti visszahelyettesítés segédváltozója, amely minden új sorra való áttérés előtt zérussá teendő. Az Y vektor visszahelyettesítés után a cserélt oszlopok sorrendjében tartalmazza a gyököket.
1. ábra
A blokkdiagrammon alapuló programrészlet az alábbi:
2. ábra Az ellenőrző rész blokkdiagramját a 2. ábra mutatja. NX jelző paraméter a SCR3 azonosítójú szubrutin részére. Az XX vektor először az eredeti egyenletrendszer bal oldalainak számértékét tartalmazza a visszahelyettesítés előtt, majd a szubrutin második részében a helyettesítési értékek és a velük egy sorban álló jobb oldali értékek különbségeit tartalmazza. Az ehhez tartozó programrész: SUBROTINE CONTR(B, XY)DIMENSION B(10,11), XY(10), Y(10), XX(10)NX=0DO 1 L=1,10XX(L)=0DO 2 K=1,10 2XXL=XX(L)+ B(L,K)* XY(K) 1CONTINUE CALL SCR3(XX,NX)NX=1DO 3 I=1,10 3(XX(I)=XX(I) ‐ B(I,11)CALL SCR3(XX,NX)RETURNEND
3. ábra Az eredmények kiíratását végző szubrutin blokkdiagramja a 3. ábrán látható, a szubrutin az alábbi: ISUBROTINE SCR3(XX,NX)DIMENSION XX(10)
IF(NX)0,2,3WRITE(3,4)GO TO 10 2WRITE(3,5)GO TO 10 3WRITE(3,6) 10WRITE(3,1)(l,XX,(I)),I=1,10) 4FORMAT(1H1///30X,7HAZ EGYE,X21HNLETRENDSZER GYOEKEI:) 5FORMAT(///30X,10H A BALOLDALA,Y24HL HELYETTESÍTÉSI ÉRTÉKE:) 6FORMAT(///30X,10HELTÉRÉS A,Z24HJOBB ÉS BALOLDAL KÖZÖTT:) 1FORMAT(///10(30X,7HRESULT(,12,W4H)= ,F24.12/))RETURNEND
2. Feladat: A KÖMAL 55. kötet 2. száma 63. oldalán levő 2077-es feladatot módosítsuk az alábbi szerint: Két db egységnyi sugarú körlemez úgy fekszik egymáson, hogy együttvéve 6 egységnyi területet fednek le. Szorítsuk olyan két tört közé a középpontok távolságát, amelynek nevezője 1000, a számlálóik egészek, és a számlálóik különbsége 1. A feladat számítására készítsünk programot.
Megoldás: Egy lehetséges program az alábbi: MASTER SOMAX1=1.05 22X2=1.57079633 ‐ SIN(X1)A=4.*SQRT((1. ‐ COS(X1))/2.)B=4.*SQRT((1. ‐ COS(X2))/2.)IF(ABS(A ‐ B) ‐ 0.001)55,33,33 33X1=X2GO TO 22 55lA=INT(1000.*A)IB=INT(1000.*B)IF(IA ‐ IB)77,0,88IA=IA+1 88WRITE(3,99)IB,IASTOP 77WRITE(3,99)IA,IB 99FORMAT(1H1,//////,30X,3HA KX15HERESETT EERTEEK,15,Y9H/1000 EES,15,10H/ 1000 KOE,Y9HZEE ESIK.)STOPENDFINISH A feladatot beküldte Sali Attila, a bp.-i Fazekas Mihály Gyakorló Gimnázium tanulója. 7. A négyzetgyök közelítő számításai 7.1 A felezési eljárás Tekintsük az y=x2-a függvényt és egy olyan (p0,q0) intervallumot amelyen belül a függvénynek pontosan egy gyöke van (pl. 4. ábra). Nyilvánvaló, hogy ebben az intervallumban az egyenlet gyöke a tehát a gyök meghatározása négyzetgyök számítást jelent. Az elmondottakból az is következik, hogy
4. ábra
A felezési eljárás abból áll, hogy vesszük a (p0,q0) intervallum felezési pontját és megvizsgáljuk, hogy a gyök melyik fél intervallumba esik, azaz, hogy melyik végponthoz tartozó függvényérték előjelével ellentétes a felezőpont függvényértékének előjele. Az ellentétes előjelű függvényértékek közé fogott (p1,q1) intervallumba esik a keresett gyök. Ezt a szakaszt újra felezzük, megint meghatározzuk melyik fél intervallumra esik a gyök és eljárásunkat addig folytatjuk, amíg a keresett gyököt tetszőlegesen kis intervallumba be nem szorítottuk. Ha adott egy ε hibakorlát, akkor egy i-edik lépés után elérjük, hogy |pi-qi|≤ε, és ezzel a⋅ ε-nál nem nagyobb hibával kiszámíthatjuk. 7.2 A húr‐módszer Az előbbinél gyorsabb (kevesebb lépésből álló) közelítést ad, ha az intervallum felezési pontja helyett a függvénygörbe húrjának az x tengellyel alkotott metszéspontját vesszük osztópontul. A húrt az intervallum végpontjaihoz tartozó függvénygörbe pontok közt húzzuk meg (5. ábra). A gyököt tartalmazó intervallum részt az előbbi eljárás során ismertetett módon választhatjuk ki, előjelvizsgálattal.
5. ábra
7.3 Szelő‐módszer A módszer tovább javítható, ha az intervallum mindkét végpontjával közelítünk a gyökhöz. Ezt a 6. ábrán látható módon érhetjük el. A (p0,f(p0)) és (g0,f(g0)) pontokon áthaladó húr az x tengelyt a p1 pontban metszi. Ezután meghatározzuk a (p0,f(p0)) és (p1,f(p1)) pontokon áthaladó szelőnek az x tengellyel alkotott metszéspontját, és ezt az új intervallum másik végpontjának tekintjük, q1-gyel jelölve.
6. ábra
Feladatok: 1. Szubrutinok készítendők FEEL, HUR és SZEL azonosítóval. Mindegyikük átveszi a nem negatív, A gyökalapot, a P és Q kezdeti intervallum végpontokat, továbbá a pozitív EPS hibakorlátot. A rutinok a három módszer szerint számítják a B-vel jelölt gyök értéket és számolják a menetek számát. 2. Keret‐program készítendő, amely kártyáról olvassa be A, P, Q, EPL értékeit, mindhárom szubrutinnal számíttatja a gyököket és kinyomtatja ‐ az alkalmazott módszer feltüntetésével ‐ a gyökök értékeit és az előállításhoz szükséges menetek számát. 3. Készítsen szöveges összehasonlító elemzést a három négyzetgyök közelítő módszerről.
Felhívás a Számítástechnikai Rovat tanár és diák olvasóihoz! 1. Az 1978‐79. tanévben szeretnénk, ha többen bekapcsolódnának a rovat készítésébe. Ezért kérjük, hogy mindazok, akiknek van elképzelésük, javaslatuk munkánkkal kapcsolatban (pl. a tartalomra, versenykiírásra stb.), írják meg azt a rovat vezetőjének. 2. Kérjük olvasóinkat, hogy keressenek a KÖMAL régebbi évfolyamaiban programozásra is alkalmas feladatokat. Fogalmazzák meg a feladatot (az eredeti feladatszöveg módosítható) és készítsék el a megoldását is (blokkdiagram, program, magyarázat). Az így kidolgozott munkát "Kitűzési javaslat'' címmel küldjék el címünkre. A minden szempontból megfelelő javaslatokat a kitűző nevével együtt közölni fogjuk. Fáradozásukat, vállalkozásukat előre is köszönjük. Címünk továbbra is: Dr. Ada‐Winter Péter Munkaügyi Minisztérium Számítástechnikai Intézet 1089 Budapest, Reguly Antal u. 57-59.
|