freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

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


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [14 Μηνύματα]      Bookmarks Tags: άσκηση Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 25 Νοε 2008 14:15    Θέμα: Άσκηση υπολογισμού ημιτόνου Απάντηση με παράθεση  Mark this post and the followings unread

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


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


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

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

Last edited by Erevis on 01 Δεκ 2008 00:01, edited 1 time in total
soteres2002
S. & H. Moderator

Μέλος από: 05 Μαρ 2004
Βοηθήματα: 1
Νέα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Ιωάννινα
View users profile
ΜήνυμαΣτις: 25 Νοε 2008 17:59    Θέμα: Re: Άσκηση υπολογισμού ημιτόνου Απάντηση με παράθεση  Mark this post and the followings unread

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

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

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

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

sinπχ = πχ * Πi(1 -χ^2/i^2) i=1,...,άπειρο. (πάλι δυνάμεις!)

Last edited by soteres2002 on 25 Νοε 2008 18:41, edited 1 time in total
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 25 Νοε 2008 18:37    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

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

Μέλος από: 05 Μαρ 2004
Βοηθήματα: 1
Νέα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Ιωάννινα
View users profile
ΜήνυμαΣτις: 25 Νοε 2008 18:43    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Erevis ανέφερε:
αλλά είναι αρκετά προσεγγιστικό το αποτέλεσμα γιατί το πρόγραμμα δουλεύει μέχρι τον τέταρτο ορο...


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

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

Εγώ με ότι έχω καταλάβει (αν είναι αυτό το ζητούμενο και όχι κάτι τελείως απλό) μπορώ να σου "αποδείξω" ότι μια προσέγγιση του 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 δηλ τον τύπο που έγραψες για το ημίτονο αρχικά, αλλά να τσακιστείς εσύ να βρεις νέο τύπο (σε άλλο μάθημα ίσως) ὠστε όταν τον χρησιμοποιήσεις να δουλεύει με πράξεις που θέλει αυτός/ή... ακου να δεις δηλ... ), γιατί γενικά (προσεγγιστικά)...



25112008287.jpg
 Description:
 Filesize:  477.02 KB
 Viewed:  357 Time(s)

25112008287.jpg


dva_dev
Script Master

Μέλος από: 16 Σεπ 2005
Μηνύματα: 256+

View users profile Visit posters website
blog deviantART facebook linkedin 
ΜήνυμαΣτις: 25 Νοε 2008 20:43    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

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

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

Μέλος από: 05 Μαρ 2004
Βοηθήματα: 1
Νέα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Ιωάννινα
View users profile
ΜήνυμαΣτις: 25 Νοε 2008 20:53    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

Last edited by soteres2002 on 25 Νοε 2008 21:13, edited 1 time in total
dva_dev
Script Master

Μέλος από: 16 Σεπ 2005
Μηνύματα: 256+

View users profile Visit posters website
blog deviantART facebook linkedin 
ΜήνυμαΣτις: 25 Νοε 2008 21:11    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

παράθεση:
αλλά ο τρόπος υπολογισμού της σειράς χωρίς loops φαίνεται από τον τύπο στην φωτό

Ωπα! και ο τύπος στη φωτό ξεκινάει με ένα μεγάλο, τεράστιο Σ (ν=1 → ∞), οπότε πάλι loop θέλει.

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

[edit]
soteres2002
S. & H. Moderator

Μέλος από: 05 Μαρ 2004
Βοηθήματα: 1
Νέα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Ιωάννινα
View users profile
ΜήνυμαΣτις: 25 Νοε 2008 21:16    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

dva_dev ανέφερε:
παράθεση:
αλλά ο τρόπος υπολογισμού της σειράς χωρίς loops φαίνεται από τον τύπο στην φωτό

Ωπα! και ο τύπος στη φωτό ξεκινάει με ένα μεγάλο, τεράστιο Σ (ν=1 → ∞), οπότε πάλι loop θέλει.


Ναι, ο φίλος λέει ότι δεν θέλει loops όταν υπολογίζει κάθε όρο της σειράς, όχι συνολικά όλους τους όρους της σειράς. Τα γινόμενα μέσα στο Σ υποτίθεται ότι υπολογίζονται με μια έτοιμη συνάρτηση δύναμης οπότε υποθέτουμε ότι δεν χρειάζονται λούπες για να υπολογιστούν (στην πράξη όμως λούπα γίνεται αν και δεν φαίνεται). Ο τύπος στην φωτό είναι ισοδύναμος με αυτόν της άσκησης (με τα κατάλληλα n), απλά χρησιμοποιεί τύπο του stirling για απαλοιφή των παραγοντικών.

Last edited by soteres2002 on 25 Νοε 2008 21:23, edited 1 time in total
dva_dev
Script Master

Μέλος από: 16 Σεπ 2005
Μηνύματα: 256+

View users profile Visit posters website
blog deviantART facebook linkedin 
ΜήνυμαΣτις: 25 Νοε 2008 21:22    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

Μέλος από: 05 Μαρ 2004
Βοηθήματα: 1
Νέα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Ιωάννινα
View users profile
ΜήνυμαΣτις: 25 Νοε 2008 21:24    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 25 Νοε 2008 23:01    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 25 Νοε 2008 23:15    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Όριστε η εκφώνηση, 6ο ερώτημα...



Ex.jpg
 Description:
 Filesize:  550.01 KB
 Viewed:  597 Time(s)

Ex.jpg


dva_dev
Script Master

Μέλος από: 16 Σεπ 2005
Μηνύματα: 256+

View users profile Visit posters website
blog deviantART facebook linkedin 
ΜήνυμαΣτις: 26 Νοε 2008 01:06    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Αν το γράψεις έτσι, πρέπει να είναι πιο ξεκάθαρο το τι ζητάει να κάνεις.
κώδικας:
           X      X*(X*X)     (X*(X*X))*(X*X)     ((X*(X*X))*(X*X))*(X*X)
Sin(x) = ----- - --------- + ----------------- - ------------------------- + ...
           1      1*(2*3)     (1*(2*3))*(4*5)     ((1*(2*3))*(4*5))*(6*7)

Ο κάθε όρος μπορεί να προκύψει από τον προηγούμενο με απλές πράξεις χωρίς υπολογισμό δυνάμεων και παραγοντικών.
Τώρα ως προς την ακρίβεια των δεκαδικών είναι ένα ερώτημα μέχρι ποιόν όρο θέλεις να φτάσεις.
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 26 Νοε 2008 02:30    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Χαχα man με αυτή τη φόρμουλα την έλυσα αμέσως! Να 'σαι καλά!!
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [14 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 03 Δεκ 2016 23:46 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos