A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
Előző változat mindkét oldalon Előző változat Következő változat | Előző változat Utolsó változat Következő változat mindkét oldalon | ||
st-linux_alapok:fejezetek:bc-gyak [2016/05/01 01:03] pferi [Feladat 2. Fokérték szinusza] |
st-linux_alapok:fejezetek:bc-gyak [2022/08/25 14:08] pferi [Feladat 2. Fokérték szinusza] |
||
---|---|---|---|
Sor 1: | Sor 1: | ||
+ | =====A bc program===== | ||
+ | A **bc** egy lebegőpontos számológép: | ||
+ | <code bash> | ||
+ | palferi@lizi: | ||
+ | bc 1.06.95 | ||
+ | Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. | ||
+ | This is free software with ABSOLUTELY NO WARRANTY. | ||
+ | For details type `warranty' | ||
+ | scale=12 | ||
+ | 1/27+(3^5) | ||
+ | 243.037037037037 | ||
+ | last-32 | ||
+ | 211.037037037037 | ||
+ | sqrt(134) | ||
+ | 11.575836902790 | ||
+ | quit | ||
+ | </ | ||
+ | Láthatjuk, hogy a '' | ||
+ | ====Matematikai függvények a bc programban==== | ||
+ | Ha a '' | ||
+ | | s(x) |Az x (radián) szinusza | | ||
+ | | c(x) |Az x (radián) koszínusza| | ||
+ | | a(x) |Az x arkusz tangense| | ||
+ | | l(x) |Az x természetes logaritmusa| | ||
+ | | e(x) |Az e x-edik hatványa| | ||
+ | | j(n, | ||
+ | ====A π kiszámítása a bc programmal==== | ||
+ | Számítsuk ki a π szám értékét 20, majd 1000 számjegy pontossággal: | ||
+ | <code bash> | ||
+ | palferi@lizi: | ||
+ | bc 1.06.95 | ||
+ | Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. | ||
+ | This is free software with ABSOLUTELY NO WARRANTY. | ||
+ | For details type `warranty' | ||
+ | 4*a(1) | ||
+ | 3.14159265358979323844 | ||
+ | scale=1000 | ||
+ | 4*a(1) | ||
+ | 3.141592653589793238462643383279502884197169399375105820974944592307\ | ||
+ | 81640628620899862803482534211706798214808651328230664709384460955058\ | ||
+ | 22317253594081284811174502841027019385211055596446229489549303819644\ | ||
+ | 28810975665933446128475648233786783165271201909145648566923460348610\ | ||
+ | 45432664821339360726024914127372458700660631558817488152092096282925\ | ||
+ | 40917153643678925903600113305305488204665213841469519415116094330572\ | ||
+ | 70365759591953092186117381932611793105118548074462379962749567351885\ | ||
+ | 75272489122793818301194912983367336244065664308602139494639522473719\ | ||
+ | 07021798609437027705392171762931767523846748184676694051320005681271\ | ||
+ | 45263560827785771342757789609173637178721468440901224953430146549585\ | ||
+ | 37105079227968925892354201995611212902196086403441815981362977477130\ | ||
+ | 99605187072113499999983729780499510597317328160963185950244594553469\ | ||
+ | 08302642522308253344685035261931188171010003137838752886587533208381\ | ||
+ | 42061717766914730359825349042875546873115956286388235378759375195778\ | ||
+ | 18577805321712268066130019278766111959092164201988 | ||
+ | quit | ||
+ | </ | ||
+ | ====A bc használata szkriptben==== | ||
+ | Shell szkriptben vagy parancssorból közvetlenül is meghívhatjuk a '' | ||
+ | <code bash> | ||
+ | palferi@lizi: | ||
+ | 3.141592653589793238462643383276 | ||
+ | palferi@lizi: | ||
+ | 33.480740698407860230965967436087 | ||
+ | </ | ||
+ | A '' | ||
+ | <code bash> | ||
+ | palferi@lizi: | ||
+ | 3.141592653589793238462643383279502884197169399375105820974944592307\ | ||
+ | 81640628620899862803482534211706798214808651328230664709384460955058\ | ||
+ | ... | ||
+ | 74351362222477158915049530984448933309634087807693259939780541934144\ | ||
+ | 73774418426312986080998886874132604720 | ||
+ | real 0m20.903s | ||
+ | user 0m20.885s | ||
+ | sys 0m0.004s | ||
+ | model name : Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz | ||
+ | cpu MHz : 3001.000 | ||
+ | bogomips : 5986.03 | ||
+ | model name : Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz | ||
+ | cpu MHz : 1600.000 | ||
+ | bogomips : 5986.03 | ||
+ | model name : Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz | ||
+ | cpu MHz : 1600.000 | ||
+ | bogomips : 5986.03 | ||
+ | model name : Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz | ||
+ | cpu MHz : 1600.000 | ||
+ | bogomips : 5986.03 | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====Feladat 1. A másodfokú egyenlet megoldása===== | ||
+ | //Írjon szkriptet '' | ||
+ | A másodfokú egyenlet megoldóképlete: | ||
+ | $$x_{1,2} = \frac{ -b \pm \sqrt{b^2 - 4ac} }{ 2a}$$ | ||
+ | A $b^2 - 4ac$ kifejezést diszkriminánsnak nevezzük. Határozzuk meg a diszkriminánst: | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | echo "Az ax^2+bc+c=0 egyenlet megoldása" | ||
+ | A=$1; B=$2; C=$3 | ||
+ | DR=`echo " | ||
+ | echo " | ||
+ | </ | ||
+ | Amennyiben a diszkrimináns nulla, kiszámítjuk a gyököt (kettős gyök) és kilépünk az '' | ||
+ | <code bash> | ||
+ | if test $DR -eq 0 | ||
+ | then | ||
+ | echo "A másodfokú egyenletnek egy valós (kettős) gyöke van:" | ||
+ | X12=`echo " | ||
+ | echo $X12 | ||
+ | exit 0 | ||
+ | fi | ||
+ | </ | ||
+ | A programot olyan paraméterekkel indítva, amelyekkel a diszkrimináns nulla: | ||
+ | < | ||
+ | palferi@lizi: | ||
+ | Az ax^2+bc+c=0 egyenlet megoldása | ||
+ | Diszkrimináns: | ||
+ | A másodfokú egyenletnek egy valós (kettős) gyöke van: | ||
+ | -1.0000 | ||
+ | </ | ||
+ | Amennyiben a diszkrimináns negatív, az egyenletnek nincsenek valós gyökei: | ||
+ | <code bash> | ||
+ | if test $DR -lt 0 | ||
+ | then | ||
+ | echo "A másodfokú egyenletnek nincsenek valós gyökei" | ||
+ | exit 0 | ||
+ | fi | ||
+ | </ | ||
+ | Minden más esetben: | ||
+ | <code bash> | ||
+ | echo "A másodfokú egyenlet gyökei:" | ||
+ | X1=`echo " | ||
+ | X2=`echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | </ | ||
+ | Ne feledjük, hogy a szkript csak egész számokkal működik helyesen és az **a** együttható nem lehet nulla. | ||
+ | |||
+ | =====Feladat 2. Fokérték szinusza===== | ||
+ | //Írjon szkriptet '' | ||
+ | -360 és nem nagyobb 360.//\\ | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | if [ $# -eq 1 ] | ||
+ | then | ||
+ | P1=`echo $1 | grep -E ' | ||
+ | if [ -n " | ||
+ | then | ||
+ | if [ $1 -gt -360 ] && [ $1 -lt 360 ] | ||
+ | then | ||
+ | SIN=`echo " | ||
+ | echo " | ||
+ | else | ||
+ | echo "A paraméter étréke nem -360 és 360 között van." | ||
+ | fi | ||
+ | else | ||
+ | echo "A paraméter nem egész szám" | ||
+ | fi | ||
+ | else | ||
+ | echo "Egy paramétert kell megadni!" | ||
+ | fi | ||
+ | </ | ||
+ | A programban először azt ellenőrizzük, | ||
+ | Tehát a '' | ||
+ | Próbáljuk ez ki terminálban a $1 helyett különböző karaktereket írva:\\ | ||
+ | < | ||
+ | palferi@lizi: | ||
+ | 42 | ||
+ | palferi@lizi: | ||
+ | -23242 | ||
+ | palferi@lizi: | ||
+ | palferi@lizi: | ||
+ | palferi@lizi: | ||
+ | palferi@lizi: | ||
+ | </ | ||
+ | |||
+ | A '' | ||
+ | < | ||
+ | palferi@lizi: | ||
+ | sin(87)=.998629534754573873784487 | ||
+ | palferi@lizi: | ||
+ | A paraméter nem egész szám | ||
+ | palferi@lizi: | ||
+ | A paraméter étréke nem -360 és 360 között van. | ||
+ | </ | ||
+ | |||
+ | [[st-linux_alapok: |