Άσκηση υπολογισμού ημιτόνου

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Erevis
Δημοσιεύσεις: 56
Εγγραφή: 12 Ιουν 2008 16:31
Τοποθεσία: Χαλάνδρι

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από Erevis » 25 Νοέμ 2008 14:15

Η άσκηση έχει ως εκφώνηση να δίνεται σε μοίρες μια γωνία x και να βρίσκει το ημίτονο της γωνίας χρησιμοποιώντας την εξής απειροσειρά:


sin(x) = x - x^3/3! + x^5/5! - x^7/7! + x^9/9!...


To πρόβλημα είναι πως στην εκφώνηση συμπεριλαμβάνεται και το εξής: 'Η υλοποίηση δεν θα περιλαμβάνει υπολογισμούς δυνάμεων και παραγοντικών',κάτι που μου δένει τα χέρια καθώς σε διαφορετική περίπτωση δε θα είχα δυσκολίες

ΠΡΟΣΟΧΗ, δε περαθέτω κώδικα επειδή δε ξέρω πως ν'αρχίσω ΚΑΙ δε θέλω σε καμία περίπτωση έτοιμη λύση, ίσα-ίσα..παραθέτω την άσκηση για την περίπτωση που κάποιος μπορεί να μου δώσει κάποιο hint ως προς τον υπολογισμό των όρων...
Τελευταία επεξεργασία από το μέλος Erevis την 01 Δεκ 2008 00:01, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από soteres2002 » 25 Νοέμ 2008 17:59

Είναι σπαζοκεφαλιά ή προσπαθείς να βρείς 1 νέο τύπο;; Τι σκοπό έχει;; Μήπως να κάνεις απλά λιγότερο υπολογιστικά πολύπλοκη την παράσταση;; Αυτό με τις δυνάμεις τι ακριβώς εννοεί; Δηλαδή μπορώ να χρησιμοποιήσω ρίζες (που είναι πάλι δύναμη);;

Χρησιμοποίησε splines για να το υπολογίσεις κατά προσέγγιση με curve fitting για να αποφύγεις τον υπολογισμό της MacLaurin. Έτσι κι αλλιώς ούτε με την σειρά θα πάρεις πρακτικά ακριβώς το αποτελεσμα. Κάτι άλλο που μου έρχεται στο μυαλό είναι να χρησιμοποιήσεις προσέγγιση με Stirling approximation για το παραγοντικό, αλλά δεν είδα ακόμα πως θα αποφύγεις τις δυνάμεις... Κάτι άλλο που μπορείς είναι το γνωστό αλλά πάλι με δυνάμεις sine(x)=average(exp(x) - exp(-x)). Υπάρχουν και άλλες ιδέες με γνωστά πράγματα αλλα δεν ξέρω αν παίζουν όπως τα θες (πχ με ζεύγος Fourier για την sin). Ή πάρε ολοκλήρωμα μιας συνάρτησης (δηλαδή ουσιαστικά να υπολογίσεις 1 άθροισμα με τους περιορισμούς που λες) αλλά ποιας;; Λογικά αυτό θα λύνεται με ηδη γνωστά πράγματα/συμπεράσματα, αλλιώς δεν νομίζω να το κάνατε σε μάθημα προγραμματισμού... Αν πάντως θες προσεγγιστική λύση χωρίς υπολογισμούς π λες, δες splines εύκολα και απλά (και είναι σίγουρη λύση στο πρόβλημά σου)...

Επίσης μήπως όλο αυτό είναι ασάφεια στην άσκηση και άλλα εννοεί...?? Γιατι άμα δεν λύνεται ως επέκταση από κάτι ηδη γνωστό (πέρα απο τις ιδέες που είπα πριν) και είναι απολύτως πρωτότυπο τότε μπορεί να μην το ξέρει και ο καθηγητής σου αυτό, είδικά ο καθηγητής που σ κάνει προγραμματισμό! :lol:

Δες και αυτό αλλά δεν βλέπω να σε βοηθάει, γιατί πάλι έχεις δυνάμεις... http://ocw.mit.edu/NR/rdonlyres/728D634 ... 0/chan.pdf (εναλλακτικός τρόπος παράστασης ημιτόνου με την συνάρτηση Γάμμα) ουσιαστικά καταλήγει ότι

sinπχ = πχ * Πi(1 -χ^2/i^2) i=1,...,άπειρο. (πάλι δυνάμεις!)
Τελευταία επεξεργασία από το μέλος soteres2002 την 25 Νοέμ 2008 18:41, έχει επεξεργασθεί 1 φορά συνολικά.

Erevis
Δημοσιεύσεις: 56
Εγγραφή: 12 Ιουν 2008 16:31
Τοποθεσία: Χαλάνδρι

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από Erevis » 25 Νοέμ 2008 18:37

Καραχάς ευχαριστώ για την απάντηση...

Φίλε μου σε μάθημα προγραμματισμού είναι, προγραμματισμός πρώτου εξαμήνου σε Pascal(Άσχετο που πρώτα τα γράφω σε C από δικό μου κόλλημα και μετά τα γράφω στην Pascal). Η εκφώνηση λέει ακριβώς αυτό που έγραψα στα εισαγωγικά...εγώ αυτο καταλαβαίνω τι να σου πω.. :-?

Ο καθηγητής μας είπε πως κάθε όρος είναι τόσο απλό να υπολογιστεί που δε θέλει καν loop (για τον υπολογισμό του όρου όχι όλης της παράστασης)..εγώ έχω φάει 2 μέρες να ψάχνω στο νετ αλλά τίποτα. Όσο περίμενα για απάντηση έγραψα γρήγορα το πρόγραμμα με υπολογισμό δύναμης/παραγωντικού και δουλεύει ρολόι, αλλά είναι αρκετά προσεγγιστικό το αποτέλεσμα γιατί το πρόγραμμα δουλεύει μέχρι τον τέταρτο ορο...

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από soteres2002 » 25 Νοέμ 2008 18:43

Erevis έγραψε:αλλά είναι αρκετά προσεγγιστικό το αποτέλεσμα γιατί το πρόγραμμα δουλεύει μέχρι τον τέταρτο ορο...
(Θεωρώ πως αυτά που έγραψες από την εκφώνηση είναι αρκετά για να καταλάβω τι ζητάει (εκτός αν έχει κι άλλα που απλοποιούν τα πράγματα και δεν τα γράφεις)).

Ε ναι, γιατί με τον αναδρομικό ορισμό του παραγοντικού θα έπρεπε να είχες άπειρη μνήμη για να υπολογίσεις με άπειρη ακρίβεια τα παραγοντικά ακόμα και για σχετικά μικρά n. Για αυτό σου κότσαρα κι εγώ την προσέγγιση του Stirling με δυνάμεις μόνο που παίρνεις αποτέλεσμα σε σταθερό χρόνο με κάποια ορισμένη ακρίβεια... Μάλλον ούτε εγώ κατάλαβα τι ακριβώς ζητάει ο professor, αλλά κάτι μ κάνει να πιστεύω πως πρόκειται για κάτι φοβερά γελοίο. Πείτε και τπτ οι υπόλοιποι μη γίνουμε ρόμπες... χαχαχ :lol:

Εγώ με ότι έχω καταλάβει (αν είναι αυτό το ζητούμενο και όχι κάτι τελείως απλό) μπορώ να σου "αποδείξω" ότι μια προσέγγιση του sinx είναι η Σn(x^n * e ^ -n) / ((ρίζα του 2πν) * n^n) για 0 < n < άπειρο, που πραγματικά απαλοίφει τα παραγοντικά αλλά περιλαμβάνει δυνάμεις.

Πάντως φίλε ουσιαστικά σου λέει υπολόγισέ μου το x^n/n! για αρκετά n > 0 ώστε να έχεις μια normal ακρίβεια, δηλ. μετασχημάτισε αυτόν τον τύπο ώστε να μην απαιτεί τέτοιες πράξεις (σου είπα 1 τρόπο αλλα θέλει μόνο δυνάμεις, οι οποίες είναι ουσιαστικά άθροισμα). Μήπως δεν θέλει και αθροίσματα:?!?! εδώ πιστεύω είναι η παρεξήγηση! Επίσης μήπως εννοεί ότι καλώντας κάποια έτοιμη συνάρτηση ουσιαστικά αποφεύγεις κάποιο loop? Γιατί όπως και δήποτε πρέπει να υπολογιστεί άθροισμα...

Μάλλον πλάκα με κάνει αν εννοεί κάτι σαν αυτό:
sin(x) = Sum(pow(x, n) / (pow(2nπ, 1/2) * pow(n/e, n))) για n = 1 ώς κ (πολύ μεγάλο) και τσάμπα καθόμαστε και ασχολούμαστε με αυτό (αλλιώς δεν θα σου έλεγε για το ανάπτυγμα κατά maclaurin δηλ τον τύπο που έγραψες για το ημίτονο αρχικά, αλλά να τσακιστείς εσύ να βρεις νέο τύπο (σε άλλο μάθημα ίσως) &#8032;στε όταν τον χρησιμοποιήσεις να δουλεύει με πράξεις που θέλει αυτός/ή... ακου να δεις δηλ... ), γιατί γενικά (προσεγγιστικά)...
Συνημμένα
25112008287.jpg

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από dva_dev » 25 Νοέμ 2008 20:43

Το πιο λογικό που μου έρχεται στο μυαλό είναι:

α) να μην ζητάει να κάνεις εσύ τον υπολογισμό της δύναμης Χ^Υ αλλά να χρησιμοποιήσεις κάποια από τις έτοιμες συναρτήσεις.
β) για τον υπολογισμό του Χ! αφού η όλη ακολουθία για να υπολογιστεί πρέπει να μπεί μέσα σε κάποιο loop δεν χρειάζεται να κάνεις υπολογισμό του 3! μετά του 5! μετά του 7! και πάει λέγοντας, αλλά αρκεί να κρατάς κάπου το προηγούμενο παραγοντικό (μέσα στο loop) και να κάνεις απλώς τον πολλαπλασιασμό για να έχεις το επόμενο παραγοντικό που θα χρησιμοποιήσεις στον επόμενο όρο.

Επίσης ο δεύτερος όρος μήπως είναι "-x^3/3!" αντί για "-x^2/2!" ?
Ψάχνοτας στο internet για να δω πως μπορεί να έχει εκφραστεί από άλλους το συγκεκριμένο ερώτημα, έπεσα σε διάφορα μαθηματικά sites που ο 2ος όρος είναι αυτός που γράφω.
Αν πάντως η εκφώνηση σου έχει -x^2/2! αυτό πρέπει να υλοποιήσεις! Αν τα αποτελέσματα έχουν αποκλίσεις από αυτά που έπρεπε να είναι, φταίει η εκφώνηση.

Αν η εκφώνηση δεν βγάζει συγκεκριμένο νόημα, αλλά σε αφήνει να φαντάζεσαι τι μπορεί να εννοεί, πως μπορεί ένα πρόγραμμα να έχει συγκεκριμένη υλοποίηση και να βγάζει συγκεκριμένα αποτελέσματα, εκτός και αν εκτός από προγραμματισμο συμπεριλαμβάνει και αποκρυπτογράφηση νοήματος.

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από soteres2002 » 25 Νοέμ 2008 20:53

Ναι, διαφορετικά δεν εξηγείται αλλιώς. Μόνο με Αρριανά (από τον πλανήτη Άρη) και ανώτερη μαντική και όχι Μαθηματικό τρόπο λύνεται αυτό έτσι... :lol: Και ναι, δεν είναι Μac Laurin η σειρά (ή την έγραψε ο φίλος λάθος ή υπάρχει λάθος στην εκφώνηση, αν και όπως και να είναι είναι προσέγγιση), αλλά ο τρόπος υπολογισμού της κανονικής σειράς χωρίς loops φαίνεται από τον τύπο στην φωτό (για περιττά n > 0).
Τελευταία επεξεργασία από το μέλος soteres2002 την 25 Νοέμ 2008 21:13, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από dva_dev » 25 Νοέμ 2008 21:11

αλλά ο τρόπος υπολογισμού της σειράς χωρίς loops φαίνεται από τον τύπο στην φωτό
Ωπα! και ο τύπος στη φωτό ξεκινάει με ένα μεγάλο, τεράστιο Σ (ν=1 &#8594; &#8734;), οπότε πάλι loop θέλει.

[edit]
εκτός και αν εννοεί τον `τύπο` σε αυτή τη φωτό :D
Εικόνα
[edit]

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από soteres2002 » 25 Νοέμ 2008 21:16

dva_dev έγραψε:
αλλά ο τρόπος υπολογισμού της σειράς χωρίς loops φαίνεται από τον τύπο στην φωτό
Ωπα! και ο τύπος στη φωτό ξεκινάει με ένα μεγάλο, τεράστιο Σ (ν=1 &#8594; &#8734;), οπότε πάλι loop θέλει.
Ναι, ο φίλος λέει ότι δεν θέλει loops όταν υπολογίζει κάθε όρο της σειράς, όχι συνολικά όλους τους όρους της σειράς. Τα γινόμενα μέσα στο Σ υποτίθεται ότι υπολογίζονται με μια έτοιμη συνάρτηση δύναμης οπότε υποθέτουμε ότι δεν χρειάζονται λούπες για να υπολογιστούν (στην πράξη όμως λούπα γίνεται αν και δεν φαίνεται). Ο τύπος στην φωτό είναι ισοδύναμος με αυτόν της άσκησης (με τα κατάλληλα n), απλά χρησιμοποιεί τύπο του stirling για απαλοιφή των παραγοντικών.
Τελευταία επεξεργασία από το μέλος soteres2002 την 25 Νοέμ 2008 21:23, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από dva_dev » 25 Νοέμ 2008 21:22

Οπως και να 'χει, νομίζω ότι θέλει ξαναγράψιμο από την αρχή η εκφώνηση γιατί έτσι όπως είναι έχει ασαφή σημεία.

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από soteres2002 » 25 Νοέμ 2008 21:24

Σιγουρα. Αν μπορεί ας μας σκανάρει την άσκηση, έτσι απο περιέργεια... Οι βελτίώσεις που παρέχει ο τύπος είναι οτι μπορείς να πάρεις "καλή" ακρίβεια για μεγάλα n δηλ να υπολογίσεις όρους πολύ μεγάλης τάξης σε σταθερό(!) χρόνο.

Erevis
Δημοσιεύσεις: 56
Εγγραφή: 12 Ιουν 2008 16:31
Τοποθεσία: Χαλάνδρι

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από Erevis » 25 Νοέμ 2008 23:01

Παιδιά δίκιο έχετε σόρρυ, X^3/3! είναι ο δεύτερος όρος, typo ήταν...Η Pascal που κάνουμεδεν έχει έτοιμες συναρτήσεις για υπολογισμό παραγοντικού κ δυναμης ;) Επίσης είμαι σίγουρος οτι δεν εννοούσε αυτό καθώς το συζητήσαμε στην τάξη για το πως θα υπολογιστούν οι όροι και μας είπε να το σκεφτούμε σπίτι...Θα προσπαθήσω να σκανάρω μια την άσκηση..

Erevis
Δημοσιεύσεις: 56
Εγγραφή: 12 Ιουν 2008 16:31
Τοποθεσία: Χαλάνδρι

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από Erevis » 25 Νοέμ 2008 23:15

Όριστε η εκφώνηση, 6ο ερώτημα...
Συνημμένα
Ex.jpg

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από dva_dev » 26 Νοέμ 2008 01:06

Αν το γράψεις έτσι, πρέπει να είναι πιο ξεκάθαρο το τι ζητάει να κάνεις.

Κώδικας: Επιλογή όλων

           X      X*&#40;X*X&#41;     &#40;X*&#40;X*X&#41;&#41;*&#40;X*X&#41;     &#40;&#40;X*&#40;X*X&#41;&#41;*&#40;X*X&#41;&#41;*&#40;X*X&#41;
Sin&#40;x&#41; = ----- - --------- + ----------------- - ------------------------- + ...
           1      1*&#40;2*3&#41;     &#40;1*&#40;2*3&#41;&#41;*&#40;4*5&#41;     &#40;&#40;1*&#40;2*3&#41;&#41;*&#40;4*5&#41;&#41;*&#40;6*7&#41;
Ο κάθε όρος μπορεί να προκύψει από τον προηγούμενο με απλές πράξεις χωρίς υπολογισμό δυνάμεων και παραγοντικών.
Τώρα ως προς την ακρίβεια των δεκαδικών είναι ένα ερώτημα μέχρι ποιόν όρο θέλεις να φτάσεις.

Erevis
Δημοσιεύσεις: 56
Εγγραφή: 12 Ιουν 2008 16:31
Τοποθεσία: Χαλάνδρι

Άσκηση υπολογισμού ημιτόνου

Δημοσίευση από Erevis » 26 Νοέμ 2008 02:30

Χαχα man με αυτή τη φόρμουλα την έλυσα αμέσως! Να 'σαι καλά!! :D

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες