doc.tex (27609B)
1 \documentclass{article} 2 \usepackage[utf8]{inputenc} 3 \usepackage[greek,english]{babel} 4 \usepackage{alphabeta} 5 \usepackage{fancyhdr} 6 \usepackage{listings} 7 \usepackage{mathtools} 8 \usepackage{graphicx} 9 \usepackage{blindtext} 10 \usepackage{xcolor} 11 \usepackage{float} 12 \usepackage[backend=biber]{biblatex} 13 14 \title{Σήματα και Συστήματα - Εργασία 1} 15 \author{Χρήστος Μαργιώλης - 19390133} 16 \date{Μάρτιος 2021} 17 18 % uniwa logo 19 20 \begin{document} 21 22 \begin{titlepage} 23 \maketitle 24 \end{titlepage} 25 26 \renewcommand{\contentsname}{Περιεχόμενα} 27 \tableofcontents 28 29 \section{'Ασκηση 1} 30 31 \begin{itemize} 32 \item Δημιουργήστε ένα διάνυσμα $a = [0,0.1,0.2,...,10]$ και ένα διάνυσμα 33 $b = [\cos(0),\cos(0.2),\cos(0.4),...,\cos(20)]$ 34 \item Να βρεθούν τα: 35 \begin{itemize} 36 \item $c = a / b$ 37 \item $d = a^4$ 38 \item το εσωτερικό γινόμενο των $a$ και $b$. 39 \end{itemize} 40 \end{itemize} 41 42 Για να δημιουργήσουμε ένα διάνυσμα, τού δίνουμε ένα όνομα και στην συνέχεια μέσα 43 σε [] ορίζουμε τα στοιχεία χωρισμένα είτε με κόμμα είτε με κενά. Το διάνυσμα 44 που ζητείται από την εκφώνηση έχει την μορφή $0,0.1,0.2...,10$ το οποίο σημαίνει 45 ότι είναι ένα διάνυσμα με αριθμούς από το 1 έως το 10 με διάστηματα 0.1. Για να 46 αναπαραστήσουμε κάτι τέτοιο αυτόματα χωρίς να γράψουμε όλους τους αριθμούς μηχανικά, 47 δηλώνουμε το διάνυσμα ως εξής: αρχή:διάστημα:τέλος. Οπότε: 48 49 \begin{lstlisting}[language=octave] 50 octave:1> a = 0:0.1:10 51 \end{lstlisting} 52 53 Αντίστοιχα για το διάνυσμα $b$, βλέπουμε ότι τα διαστήματα είναι $0.2$ 54 και σε κάθε αριθμό του διανύσματος υπολογίζεται το συνημίτονο. Θα ορίσουμε 55 ένα διάνυσμα από το 0 έως το 20 με διαστήματα $0.2$ και θα υπολογίσουμε 56 τα συνημίτονα όλων των στοιχείων χρησιμοποιώντας την συνάρτηση \lstinline{cos()}: 57 58 \begin{lstlisting}[language=octave] 59 octave:2> b = cos(0:0.2:20) 60 \end{lstlisting} 61 62 Για την διαίρεση διανυσμάτων χρησιμοποιούμε το σύμβολο / που χρησιμοποιείται 63 γενικότερα για διαίρεση, οπότε το $c = a / b$ θα γίνει: 64 65 \begin{lstlisting}[language=octave] 66 octave:3> c = a / b 67 c = 0.89415 68 \end{lstlisting} 69 70 Προκειμένου να υψώσουμε σε δύναμη όλα τα στοιχεία ενός διανύσματος πρέπει να 71 χρησιμοποιήσουμε τον τελεστή \lstinline{.^}, οπότε η πράξη $d = a^4$ θα γραφτεί 72 ως \lstinline{d = a.^4}. Αυτό το statement θα υπολογίσει ουσιαστικά την σειρά 73 \[d = [a_1^4, a_2^4, a_3^4, ..., a_n^4]\] 74 Η στοίχηση της εξόδου από το Octave έχει τροποποιηθεί 75 επειδή είναι πολύ μεγάλη και δεν χωράει σωστά στην σελίδα: 76 77 \begin{lstlisting}[language=octave] 78 octave:4> d = a.^4 79 \end{lstlisting} 80 \begin{lstlisting}[language=octave,basicstyle=\tiny] 81 d = 82 83 Columns 1 through 17: 84 85 0.00000 0.00010 0.00160 0.00810 0.02560 0.06250 0.12960 0.24010 86 0.40960 0.65610 1.00000 1.46410 2.07360 2.85610 3.84160 5.06250 6.55360 87 88 Columns 18 through 34: 89 90 8.35210 10.49760 13.03210 16.00000 19.44810 23.42560 27.98410 33.17760 91 39.06250 45.69760 53.14410 61.46560 70.72810 81.00000 92.35210 104.85760 118.59210 92 93 Columns 35 through 51: 94 95 133.63360 150.06250 167.96160 187.41610 208.51360 231.34410 256.00000 96 282.57610 311.16960 341.88010 374.80960 410.06250 447.74560 487.96810 97 530.84160 576.48010 625.00000 98 99 Columns 52 through 68: 100 101 676.52010 731.16160 789.04810 850.30560 915.06250 983.44960 1055.60010 102 1131.64960 1211.73610 1296.00000 1384.58410 1477.63360 1575.29610 1677.72160 103 1785.06250 1897.47360 2015.11210 104 105 Columns 69 through 85: 106 107 2138.13760 2266.71210 2401.00000 2541.16810 2687.38560 2839.82410 108 2998.65760 3164.06250 3336.21760 3515.30410 3701.50560 3895.00810 109 4096.00000 4304.67210 4521.21760 4745.83210 4978.71360 110 111 Columns 86 through 101: 112 113 5220.06250 5470.08160 5728.97610 5996.95360 6274.22410 6561.00000 114 6857.49610 7163.92960 7480.52010 7807.48960 8145.06250 8493.46560 115 8852.92810 9223.68160 9605.96010 10000.00000 116 \end{lstlisting} 117 118 Για να υπολογίσουμε το εσωτερικό γινόμενο του $a$ και $b$, θα χρησιμοποιήσουμε 119 την συνάρτηση \lstinline{dot()} (Dot Product). Η συνάρτηση αυτή όταν εφαρμοστεί 120 στα διανύσματα $a$ και $b$, θα υπολογίσει την παρακάτω παράσταση: 121 122 \[x = a_1 \cdot b_1 + a_2 \cdot b_2 + a_3 \cdot b_3 + ... + a_n \cdot b_n\] 123 124 Οπότε: 125 126 \begin{lstlisting}[language=octave] 127 octave:5> dot(a, b) 128 ans = 46.051 129 \end{lstlisting} 130 131 \section{'Ασκηση 2} 132 133 \begin{itemize} 134 \item Να γραφεί συνάρτηση (function) η οποία θα παίρνει ως όρισμα 135 έναν αριθμό σε ακτίνια (rad) και θα επιστρέφει την τιμή του 136 σε μοίρες. 137 \item Βρείτε πόσες μοίρες είναι τα $\pi/4$ rad. 138 \end{itemize} 139 140 Για να δηλώσουμε μία συνάρτηση χρησιμοποιούμε την εντολή \lstinline{function} 141 ακολουθώμενη από από το όνομα της συνάρτησης. Εάν θέλουμε η συνάρτηση να δέχεται 142 ορίσματα, τα δηλώνουμε σε παρένθεση μετά το όνομα της συνάρτησης. Στην περίπτωση 143 που θέλουμε να επιστρέφεται και κάποια τιμή, δηλώνουμε το όνομά της μεταβλητής 144 που επιστρέφεται πριν το όνομα της συνάρτησης. Τέλος, για να σημάνουμε το τέλος 145 της συνάρτησης, γράφουμε την εντολή \lstinline{endfunction} 146 147 Για την συνάρτηση μετατροπής ακτινίων σε μοίρες θα χρειαστεί να υλοποιήσουμε 148 τον τύπο: 149 \[deg = rad \cdot 180 / \pi\] 150 Οπότε βάσει τα παραπάνω, η συνάρτηση θα υλοποιηθεί ως εξής: 151 152 \begin{lstlisting}[language=octave] 153 function ret = deg(rad) 154 ret = rad * 180 / pi 155 endfunction 156 \end{lstlisting} 157 158 Τώρα μπορούμε να καλέσουμε την συνάρτηση δίνοντας της μία τιμή σε ακτίνια. 159 Τα $\pi / 4$ ακτίνια σε μοίρες είναι: 160 161 \begin{lstlisting}[language=octave] 162 octave:6> x = deg(pi / 4) 163 x = 45 164 \end{lstlisting} 165 166 \section{'Ασκηση 3} 167 168 \begin{itemize} 169 \item Να γραφεί συνάρτηση (function) που να σχεδιάζει τη 170 συνάρτηση: \[\sin c(x) = \frac{\sin(\pi x)}{\pi x}\] 171 \item Σχεδιάστε τη για το διάστημα $[-2\pi,2\pi]$. 172 \end{itemize} 173 174 Για να σχεδιάσουμε την συνάρτηση 175 \[\sin c(x) = \frac{\sin(\pi x)}{\pi x}, -2\pi < x < 2\pi\] 176 πρέπει να ακολουθήσουμε τα εξής βήματα στο Octave: 177 178 \begin{itemize} 179 \item Να ορίσουμε το διάστημα $[-2\pi, 2\pi]$ 180 \item Να υπολογίσουμε το $c(x)$ για κάθε $x$ 181 \item Να υπολογίσουμε το $\sin c(x)$ 182 \end{itemize} 183 184 Αρχικά, θα δηλώσουμε το διάστημα $[-2\pi,2\pi]$ με αποστάσεις 0.1 185 από τον κάθε αριθμό ώστε να έχουμε μία πιο ακριβή γραφική παράσταση. 186 Το διάνυσμα που θα προκύψει το αποθηκεύουμε στην μεταβλητή $x$: 187 188 \begin{lstlisting}[language=octave] 189 octave:7> x = -2*pi:0.1:2*pi 190 \end{lstlisting} 191 192 'Επειτα υπολογίζουμε την συνάρτηση 193 \[c(x) = \frac{\sin(\pi x)}{\pi x}\] 194 Είναι σημαντικό να σημειωθεί ότι 195 πρέπει να χρησιμοποιηθεί ο τελεστής ./ ώστε να επιστραφεί διάνυσμα 196 και όχι ένας αριθμός: 197 198 \begin{lstlisting}[language=octave] 199 octave:8> c = sin(x * pi) ./ (pi * x) 200 \end{lstlisting} 201 202 Θα υπολογίσουμε το ημίτονο της συνάρτησης $c(x)$ κατευθείαν στην κλήση 203 της συνάρτησης σχεδίασης - η συναρτήση αυτή είναι η \lstinline{plot()} και παίρνει 204 ως ορίσματα τις τιμές του άξονα $x$ και $y$ (\lstinline{plot(x, y)}). Στην 205 προκειμένη περίπτωση θα της δώσουμε ως $x$ το $x$ που υπολογίσαμε στην αρχή, 206 και ως $y$ το συνημίτονο της συνάρτησης $c(x)$: 207 208 \begin{lstlisting}[language=octave] 209 octave:9> plot(x, sin(c)) 210 \end{lstlisting} 211 212 Παρατηρούμε ότι η γραφική παράσταση που προκύπτει έχει ένα \textit{ενδιαφέρον} 213 σχήμα: 214 215 \begin{figure}[H] 216 \centering 217 \includegraphics[width=\linewidth]{res/fig1.jpg} 218 \caption{$\sin c(x) = \frac{\sin(\pi x)}{\pi x}, -2\pi < x < 2\pi$} 219 \end{figure} 220 221 \section{'Ασκηση 4} 222 223 \begin{itemize} 224 \item Να γραφεί συνάρτηση (function) η οποία θα παίρνει ως όρισμα 225 έναν μιγαδικό αριθμό και θα επιστρέφει: 226 \begin{itemize} 227 \item Την φάση. 228 \item Το μέτρο. 229 \item Το πραγματικό μέρος. 230 \item Το φανταστικό μέρος του μιγαδικού. 231 \end{itemize} 232 \item Υπολογίστε τα παραπάνω μεγέθη για τους εξής μιγαδικούς: 233 \begin{itemize} 234 \item $i$ 235 \item $-i$ 236 \item $1$ 237 \item $e^{3+4i}$ 238 \end{itemize} 239 \end{itemize} 240 241 Το Octave (και το Matlab) διαθέτουν συναρτήσεις χειρισμού μιγαδικών αριθμών. 242 243 Για τον υπολογισμό της φάσης ενός μιγαδικού αριθμού χρησιμοποιούμε την συνάρτηση 244 \lstinline{angle()}. Η συνάρτηση αυτή όταν της δωθεί μιγαδικός αριθμός θα 245 υπολογίσει τον παρακάτω τύπο: 246 \[\theta = atan(y, x)\] 247 248 Ο υπολογισμός του μέτρου ενός μιγαδικού αριθμό γίνεται μέσω της συνάρτησης 249 \lstinline{abs()} η οποία εφαρμόζει τον παρακάτω τύπο: 250 \[|z| = \sqrt{x^2 + y^2}\] 251 252 Οι συναρτήσεις \lstinline{real()} και \lstinline{imag()} επιστρέφουν το πραγματικό 253 και φανταστικό αντίστοιχα μέρος ενός μιγαδικού αριθμού. 254 255 Οπότε με την χρήση όλων των παραπάνω συναρτήσεων μπορούμε να υλοποιήσουμε μία 256 συνάρτηση η οποία υπολογίζει και επιστρέφει κατευθείαν τις τέσσερεις αυτές 257 τιμές (φάση, μέτρο, πραγματικό μέρος, φανταστικό μέρος): 258 259 \begin{lstlisting}[language=octave] 260 function imaginary(num) 261 phase = angle(num) 262 magnitude = abs(num) 263 realpart = real(num) 264 imagpart = imag(num) 265 endfunction 266 \end{lstlisting} 267 268 Τώρα μπορούμε να δώσουμε στην συνάρτηση οποιοδήποτε μιγαδικό αριθμό για 269 επαληθεύσουμε ότι λειτουργεί σωστά. 270 271 Για $i$: 272 \begin{lstlisting}[language=octave] 273 octave:10> imaginary(i) 274 phase = 1.5708 275 magnitude = 1 276 realpart = 0 277 imagpart = 1 278 \end{lstlisting} 279 280 Για $-i$: 281 \begin{lstlisting}[language=octave] 282 octave:11> imaginary(-i) 283 phase = -1.5708 284 magnitude = 1 285 realpart = -0 286 imagpart = -1 287 \end{lstlisting} 288 289 Για $1$: 290 \begin{lstlisting}[language=octave] 291 octave:12> imaginary(1) 292 phase = 0 293 magnitude = 1 294 realpart = 1 295 imagpart = 0 296 \end{lstlisting} 297 298 Για $e^{3 + 4i}$: 299 \begin{lstlisting}[language=octave] 300 octave:13> imaginary(e^(3 + 4*i)) 301 phase = -2.2832 302 magnitude = 20.086 303 realpart = -13.129 304 imagpart = -15.201 305 \end{lstlisting} 306 307 \section{'Ασκηση 5} 308 309 \begin{itemize} 310 \item Διαχωρίστε το διάστημα $[0, 2\pi]$ σε 500 σημεία. 311 \item Να σχεδιάσετε σε αυτό το διάστημα (στο ίδιο figure) 312 τα παρακάτω σήματα: 313 \begin{itemize} 314 \item $f(x) = xe^{-x}, 0 < x < 2\pi$ 315 \item $y(x) = 2^{cos(x)}, 0 < x < 2\pi$ 316 \end{itemize} 317 \item Βάλτε τίτλο στην γραφική παράσταση (ό,τι θέλετε). 318 \item Βάλτε ταμπέλες στον $x$ και $y$ άξονα (ό,τι θέλετε). 319 \item Βάλτε μία επιγραφή για όλες τις καμπύλες με την εντολή 320 \lstinline{legend}. 321 \item Να σχεδιάσετε τα δύο παραπάνω σήματα σε ένα δεύτερο figure 322 αλλά σε \textbf{2 διαφορετικά} παράθυρα. 323 \end{itemize} 324 325 Για να χωρίσουμε το διάστημα $[0,2\pi]$, απλώς θα διαιρέσουμε το $2\pi$ με 326 500 ώστε να μας δώσει τις αποστάσεις ανάμεσα στους αριθμούς του διαστήματος. 327 Το διάνυσμα που θα φτιάξουμε εννοείται ότι θα το χρησιμοποιήσουμε ως $x$. 328 329 \begin{lstlisting}[language=octave] 330 octave:14> 2 * pi / 500 331 ans = 0.012566 332 \end{lstlisting} 333 334 Με αυτό το 0.012566 θα φτιάξουμε το διάνυσμα $x$: 335 336 \begin{lstlisting}[language=octave] 337 octave:15> 0:0.012566:2*pi 338 \end{lstlisting} 339 340 Τώρα μπορούμε να υπολογίσουμε τα $f(x)$ και $y(x)$. Με παρόμοια λογική όπως 341 και στην προηγούμενη άσκηση, πρέπει να χρησιμοποιηθεί ο τελεστής \lstinline{.^} 342 και \lstinline{.*} ώστε να πάρουμε διάνυσμα και όχι αριθμό: 343 344 \begin{lstlisting}[language=octave] 345 octave:16> f = x.*e.^-x 346 octave:17> y = 2.^cos(x) 347 \end{lstlisting} 348 349 Σχεδιάζουμε την γραφική παράσταση της $f(x)$: 350 351 \begin{lstlisting}[language=octave] 352 octave:18> plot(x, f) 353 \end{lstlisting} 354 355 Τώρα προκειμένου να σχεδιάσουμε και την γραφική παράσταση της $y(x)$ στο ίδιο 356 figure πρέπει να δώσουμε στο Octave την εντολή \lstinline{hold on} ώστε να μην 357 δημιουργήσει νέο παράθυρο για την $y(x)$. Στην συνέχεια σχεδιάζουμε και την $y(x)$: 358 359 \begin{lstlisting}[language=octave] 360 octave:19> hold on 361 octave:20> plot(x, y) 362 \end{lstlisting} 363 364 Σε αυτό το σημείο έχουνε σχεδιαστεί και οι δύο γραφικές παραστάσεις στο ίδιο figure. 365 366 \begin{figure}[H] 367 \centering 368 \includegraphics[width=\linewidth]{res/fig2.jpg} 369 \caption{Μμπλε: $f(x) = xe^{-x}$, Πορτοκαλί: $y(x) = xe^{-x}$} 370 \end{figure} 371 372 Για να δώσουμε τίτλο στην γραφική παράσταση, χρησιμοποιούμε την συνάρτηση 373 \lstinline{title()} και σαν όρισμα της δίνουμε ένα string με τον τίτλο που θέλουμε. 374 375 \begin{lstlisting}[language=octave] 376 octave:21> title("f(x) and y(x)") 377 \end{lstlisting} 378 379 Για τις ταμπέλες (labels) χρησιμοποιούμε τις συναρτήσεις \lstinline{xlabel()} 380 και \lstinline{ylabel()} για τους άξονες $x$ και $y$ αντίστοιχα. Σαν όρισμα δέχονται 381 ένα string με τις ταμπέλες που θέλουμε: 382 383 \begin{lstlisting}[language=octave] 384 octave:22> xlabel("x") 385 octave:23> ylabel("y") 386 \end{lstlisting} 387 388 Για να δώσουμε μία επιγραφή καλούμε την συνάρτηση \lstinline{legend()}. 389 Εφόσον θέλουμε το legend να περιέχει επιγραφή και για τις δύο συνάρτησεις 390 που σχεδιάσαμε, θα δώσουμε ως όρισμα στην \lstinline{legend()} τις επιγραφές 391 κλεισμένες σε αγκύλες και χωρισμένες με κόμμα: 392 393 \begin{lstlisting}[language=octave] 394 octave:24> legend({"f(x)", "y(x)"}) 395 \end{lstlisting} 396 397 \begin{figure}[H] 398 \centering 399 \includegraphics[width=\linewidth]{res/fig3.jpg} 400 \caption{$f(x)$ και $y(x)$ με επιγραφές και τίτλο} 401 \end{figure} 402 403 Για να σχεδιάσουμε σε ξεχωριστά παράθυρα τις συναρτήσεις $f(x)$ και $y(x)$ 404 θα ακολουθήσουμε την ίδια διακασία με πριν, αλλά χωρίς την εντολή 405 \lstinline{hold on}. Δηλαδή απλώς θα καλέσουμε δύο φορές την 406 \lstinline{plot()} - μία με όρισμα την $f(x)$ και μία με την $y(x)$. 407 408 \begin{lstlisting}[language=octave] 409 octave:25> plot(x, f) 410 \end{lstlisting} 411 412 \begin{figure}[H] 413 \centering 414 \includegraphics[width=\linewidth]{res/fig4.jpg} 415 \caption{$f(x)$} 416 \end{figure} 417 418 \begin{lstlisting}[language=octave] 419 octave:26> plot(x, y) 420 \end{lstlisting} 421 422 \begin{figure}[H] 423 \centering 424 \includegraphics[width=\linewidth]{res/fig5.jpg} 425 \caption{$f(x)$} 426 \end{figure} 427 428 \section{'Ασκηση 6} 429 430 \begin{itemize} 431 \item Υπολογίστε τις μερικές παραγώγους της συνάρτησης: 432 \[f(x, t) = \cos x + \sin t + e^t\] 433 \item Υπολογίστε το ολοκλήρωμα: 434 \[\int_{0}^{\infty} te^tdt\] 435 \item Υπολογίστε το διπλό αόριστο ολοκλήρωμα: 436 \[\iint x^3e^tdxdt\] 437 \item Υπολογίστε το άθροισμα: 438 \[\sum_{k = 0}^{\infty} \frac{x^k}{k!}\] 439 \item Μετατρέψτε σε ρητή την παράσταση: 440 \[f(x) = \frac{3}{x+2} + \frac{x}{x^2+1}\] 441 \item Να λυθεί η εξίσωση δευτέρου βαθμού: 442 \[f(x) = x^3 + 2x^2 - x - 2\] 443 \end{itemize} 444 445 Πρώτα από όλα, για την χρήση συναρτήσεων υπολογισμού παραγώγων και ολοκληρωμάτων, 446 χρειαζόμαστε το \lstinline{symbolic} πακέτο του Octave - κάτι αντίστοιχο υπάρχει 447 και στο Matlab. Αφού το εγκατασήσουμε, το φορτώνουμε στο Octave ως εξής: 448 449 \begin{lstlisting}[language=octave] 450 octave:27> pkg load symbolic 451 \end{lstlisting} 452 453 \begin{itemize} 454 \item 455 Προκειμένου να υπολογίσουμε την μερική παράγωγο της συνάρτησης 456 \[f(x, t) = \cos x + \sin t + e^t\] 457 πρέπει να ορίσουμε της συμβολικές μεταβλητές $x$ και $t$: 458 \begin{lstlisting}[language=octave] 459 octave:28> syms x t 460 \end{lstlisting} 461 462 Στην συνέχεια ορίζουμε την συνάρτηση $f(x, t)$: 463 \begin{lstlisting}[language=octave] 464 octave:29> y = cos(x) + sin(t) + e^t 465 y = (sym) 466 \end{lstlisting} 467 468 Τέλος, υπολογίζουμε την μερική παράγωγο: 469 470 \[\frac{\partial}{\partial x}f(x, t) \Rightarrow 471 \frac{\partial}{\partial x}(\cos x + \sin t + e^t) \] 472 473 Για τον υπολογισμό της παραγώγου χρησιμοποιούμε την συνάρτηση 474 \lstinline{diff()}: 475 \begin{lstlisting}[language=octave] 476 octave:30> diff(y, x) 477 ans = (sym) -sin(x) 478 \end{lstlisting} 479 480 Μπορούμε να επαληθεύσουμε ότι το αποτέλεσμα είναι σωστό εφόσον: 481 \[\frac{\partial}{\partial x}(\cos x + \sin t + e^t) \Rightarrow 482 \frac{\partial}{\partial x} \cos x + 483 \frac{\partial}{\partial x} \sin t + 484 \frac{\partial}{\partial x} e^t \Rightarrow 485 -\sin x + 0 + 0 \Rightarrow -\sin x\] 486 487 \item 488 Για να υπολογίσουμε το ολοκλήρωμα 489 \[\int_{0}^{\infty} te^{-t}dt\] 490 αρχικά ορίζουμε την συνάρτηση που θέλουμε να ολοκληρώσουμε. Στο πρώτο 491 μέρος (\lstinline{@(t)}) ορίζουμε την μεταβλητή ως προς την οποία 492 θέλουμε να ολοκληρώσουμε: 493 \begin{lstlisting}[language=octave] 494 octave:31> f = @(t) t *. e .^(-t) 495 \end{lstlisting} 496 Μετά με την χρήση της συνάρτησης \lstinline{integral()} υπολογίζουμε το 497 ολοκλήρωμα. Η συνάρτηση αυτή παίρνει τρία ορίσματα: την συνάρτηση, το πάνω 498 και το κάτω όριο. Οπότε: 499 \begin{lstlisting}[language=octave] 500 octave:32> integral(f, 0, Inf) 501 ans = 1 502 \end{lstlisting} 503 504 \item 505 Δεν υλοποιήθηκε λόγο απώλειας χρόνου. 506 507 \item 508 Δεν υλοποιήθηκε λόγο απώλειας χρόνου. 509 510 \item 511 Δεν υλοποιήθηκε λόγο απώλειας χρόνου. 512 513 \item 514 Για να λύσουμε την τριτοβάθμια εξίσωση: 515 \[f(x) = x^3 + 2x^2 - x - 2\] 516 oρίζουμε αρχικά την συμβολική μεταβλητή $x$ και την συνάρτηση $f(x)$: 517 \begin{lstlisting}[language=octave] 518 octave:33> syms x 519 octave:34> f = x^3 + 2*x^2 - x - 2 520 \end{lstlisting} 521 Βρίσκουμε τις ρίζες της παραπάνω τριτοβάθμιας εξίσωσης με την χρήση της 522 συνάρτησης \lstinline{solve()}: 523 \begin{lstlisting}[language=octave] 524 octave:35> solve(f) 525 ans = [-2 -1 1] 526 \end{lstlisting} 527 528 \end{itemize} 529 530 \section{'Ασκηση 7} 531 532 \begin{itemize} 533 \item Να γραφεί function για τον υπολογισμό των ριζών ενός τριωνύμου. 534 \end{itemize} 535 536 Προκειμένου να υπολογίσουμε τις ρίζες ενός τριωνύμου χρειάζεται να χρησιμοποιήσουμε 537 λογικούς τελεστές και \lstinline{if} statements. Ο λόγος που χρειάζονται είναι 538 διότι υπάρχουνε ορισμένες περιπτώσεις που οι ρίζες του τριωνύμου δεν μπορούνε να 539 υπολογιστούν, και όταν μπορούν, μπορεί να έχουμε είτε μία είτε δύο ρίζες, οπότε 540 πρέπει να καλύψουμε όλες τις περιπτώσεις αυτές. 541 542 Ο τρόπος που δουλεύουνε τα \lstinline{if} statements στο Octave είναι ο ίδιος με 543 τις περισσότερες γλώσσες προγραμματισμού, δηλαδή: 544 \begin{lstlisting}[language=octave] 545 if (condition) 546 code 547 elseif (condition) 548 code 549 else 550 code 551 endif 552 \end{lstlisting} 553 554 Αρχικά η συνάρτηση δέχεται τρία ορίσματα, τα $a$, $b$, και $c$ εφόσον το τριώνυμο 555 έχει την μορφή: 556 \[ax^2 + bx + c = 0\] 557 558 'Επειτα πρέπει να σιγουρέψουμε ότι το $a$ \textit{δεν} είναι 0, διότι σε αυτή την 559 περίπτωση δεν έχουμε δευτεροβάθμια εξίσωση. 560 561 Στην συνέχεια υπολογίζουμε την διακρίνουσα χρησιμοποιώντας τον κλασσικό τύπο: 562 \[d = b^2 - 4ac\] 563 και ελέγχουμε τις τιμές της. 564 565 Αν η διακρίνουσα είναι μεγαλύτερη του 0, τότε οι ρίζες είναι: 566 \[x_1, x_2 = \frac{-b \pm \sqrt d}{2a}\] 567 568 Αν η διακρίνουσα είναι ίση με 0, τότε έχουμε μία ρίζα: 569 \[x = \frac{-b}{2a}\] 570 571 Αν η διακρίνουσα είναι μικρότερη του 0 δεν έχουμε ρίζες. 572 573 Οπότε ο τελικός κώδικας που θα προκύψει είναι ο παρακάτω: 574 575 \begin{lstlisting}[language=octave] 576 function quadratic(a, b, c) 577 if (a != 0) 578 d = b^2 - 4*a*c 579 if (d > 0) 580 x1 = (-b + sqrt(d)) / (2 * a) 581 x2 = (-b - sqrt(d)) / (2 * a) 582 elseif (d == 0) 583 x = -b / (2 * a) 584 else 585 printf("no solutions\n") 586 endif 587 else 588 printf("a cannot be 0\n") 589 endif 590 endfunction 591 \end{lstlisting} 592 593 Είναι καλύτερο να γράψουμε ένα αρχείο \lstinline{.m} που να 594 περιέχει τον παραπάνω κώδικα και να το τρέξουμε μέσα από 595 το Octave με την εντολή \lstinline{run()}. Αφού διαβαστεί το 596 αρχείο μπορούμε να καλέσουμε την συνάρτηση κανονικά, για 597 παράδειγμα: 598 599 \begin{lstlisting}[language=octave] 600 octave:28> quadratic(2, 2, -4) 601 d = 36 602 x1 = 1 603 x2 = -2 604 \end{lstlisting} 605 606 \pagebreak 607 \section{Εργαλεία} 608 Τα εργαλεία που χρησιμοποιήθηκαν για την υλοποίηση αυτής της εργασίας ήτανε 609 τα εξής: 610 611 \begin{itemize} 612 \item Περιβάλλον: GNU Octave 5.2.0 613 \item Επιπλέον πακέτα: \lstinline{octave-forge-symbolic} 614 \item Λειτουργικό σύστημα: FreeBSD 12.2 615 \item Κειμενογράφος: Vim 616 \item Μορφοποίηση κειμένου: \LaTeX 617 \end{itemize} 618 \end{document}