Cím: Számítástechnika 14. rész
Szerző(k):  Ada-Winter Péter 
Füzet: 1978/április, 167 - 171. oldal  PDF  |  MathML 
Témakör(ök): Szakmai cikkek, Egyéb írások, Számítástechnika, informatika

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:
 

SUBROTINE VISSZ(A, X, NYOM)DIMENSION A(10,11), X(10), Y(10), NYOM(10)L=10C=0.DO 7 l=1,10Y(L)=(A(L,11) ‐ C)/A(L,L)IF(L ‐ 1)7,7,0C=0.DO 8 K=L,10  8C=C+A(L ‐ 1, K)*  Y(K)L=L ‐ 1  7CONTINUEDO 9 I=1,10L=NYOM(I)X(L)=Y(I)  9CONTINUERETURNEND
 

 

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
sgf(p0)sgf(g0).

 

 

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.