Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα παιδια οπως βλέπετε στην φωτογραφίες απο κατω προσπαθώ να κανω αυτην την εργασια εδω και 4 μερες αλλα παντα βγαίνει λαθος το αποτελεσμα... Θελω πραγραματικά βοήθεια το εχω κανει "ολο" αλλα βγαίνει λαθος το αποτέλεσμα οποτε μαλλον καπου υπαρχει ενα μεγαλο λαθος... 

Ευχαριστω 

post-419483-0-49409200-1478893518_thumb.png

post-419483-0-18802100-1478893530_thumb.png

Δημοσ.

Αρκετα πολυπλοκο το εκανες. Κανε μια αναλυση πρωτα. Πχ

Στη σειρα επαναλαμβανεται το

 

x^y/y! + x^y1/y1! ...

 

Επισεις ξερεις πως το y1 = y+2

 

 

Αλλο που παιζει και να μην ξερεις, το πρωτο πατερν θα ειναι παντα μεγαλυτρρο απο το δευτερο. Δηλαδη παιζει το ρολο του βαθους.

 

 

Αρα τωρα που το αναλυσαμε.

 

Φτιαχνουμε μια συναρτηαη f(x,y) => x^y/y!+x^(y+2)/(y+2)!

Οπου x-foo(x,3) θα ειναι κοντα στο sin(x) και x-f(x,3)-f(x,7) πιο κοντα στο sin(x) κλπ

 

 

Αρα τωρα που θελουμε καλυτερο βαθος, θα βαλουμε την f σε ενα for με y=3; y<21;y+=4 και θα αφαιροθμε το αποτελεσμα της f απο το χ.

 

Αν το φτασεις εδω, λογικα θα κανεις το λαθος να μην κανεις κοπια του χ και να βαζεις στην f το χ που εχει αλλαχτει. Κανε κοπια :P

Δημοσ.

Ευχαριστω για τον χρονο σου,

 

Να σου πω την αληθεια δεν καταλαβα σχεδον τιποτα μαλλον δεν τα εχουμε κανει ακομα στην σχολή ετσι αν μπορουσες να με βοηθήσεις λιγο περισσοτερο θα το εκτιμούσα παρα πολυ... Ειμαι ακομα στο πρωτο ετος και ειναι λιγο πιο απλα εκει περα. Σε ευχαριστω πάντως.

 

Επίσης αν μπορεις να μου γράψεις ενα παραδειγμα απο το κώδικα οπως τον σκέφτεσαι εσυ να δω αν δουλεύει η κατι τετοιο. Ευχαριστω πολυ

Δημοσ.

Δεν ειπα κατι που να εχει να κανει με c. Αναλυση του προβληματος εκανα, και σπασιμο σε υποπροβληματα aka abstraction.

 

Φτιαξε μια συναρτηση που υπολογιζει το f που λεω παραπανω.

Δημοσ.

Αρκετα πολυπλοκο το εκανες. Κανε μια αναλυση πρωτα. Πχ

Στη σειρα επαναλαμβανεται το

 

x^y/y! + x^y1/y1! ...

 

Επισεις ξερεις πως το y1 = y+2

 

 

Αρα τωρα που το αναλυσαμε.

 

Φτιαχνουμε μια συναρτηαη f(x,y) => x^y/y!+x^(y+2)/(y+2)!

Οπου x-foo(x,3) θα ειναι κοντα στο sin(x) και x-f(x,3)-f(x,7) πιο κοντα στο sin(x) κλπ

 

 

Αρα τωρα που θελουμε καλυτερο βαθος, θα βαλουμε την f σε ενα for με y=3; y<21;y+=4 και θα αφαιροθμε το αποτελεσμα της f απο το χ.

 

Αν το φτασεις εδω, λογικα θα κανεις το λαθος να μην κανεις κοπια του χ και να βαζεις στην f το χ που εχει αλλαχτει. Κανε κοπια :P

 

 

Ευχαριστω για τον χρονο σου,

 

Να σου πω την αληθεια δεν καταλαβα σχεδον τιποτα μαλλον δεν τα εχουμε κανει ακομα στην σχολή ετσι αν μπορουσες να με βοηθήσεις λιγο περισσοτερο θα το εκτιμούσα παρα πολυ... Ειμαι ακομα στο πρωτο ετος και ειναι λιγο πιο απλα εκει περα. Σε ευχαριστω πάντως.

 

Επίσης αν μπορεις να μου γράψεις ενα παραδειγμα απο το κώδικα οπως τον σκέφτεσαι εσυ να δω αν δουλεύει η κατι τετοιο. Ευχαριστω πολυ

Αυτό που λέει ο παπί είναι να υλοποιήσεις μία συνάρτηση που να υπολογίζει τους δύο όρους της σειράς. Έτσι το x-f(x,3) που σου έγραψε είναι το ημίτονο με ακρίβεια μέχρι το 5!. Αν υπολογίσεις το x-f(x,3)-f(x-7) έχεις ακρίβεια μέχρι και το 7! δηλαδή 4 όρους και πάει λέγοντας οπότε μετά σου λέει βάζεις ένα for και έχεις όση ακρίβεια θέλεις.

 

Αν σε μπερδεύει έτσι που σου το έδωσε επειδή έχει δύο όρους, μπορείς να υλοποιήσεις την συνάρτηση έτσι που να υπολογίζει μόνο τον νιοστό όρο και μετά να το προσθέτεις. Η γενική μορφή της σειράς αυτής, όπως μπορείς να υπολογίσεις από την εκφώνηση, είναι (-1)^n / (2n+1)! * x^(2n+1).

Αν θέσουμε n=0, τότε -1 υψωμένο στην μηδενική μας κάνει 1 διαιρούμενο με το παραγοντικό του 1 (2*0+1) που είναι ένα οπότε μας μένει σκέτο x. Για n=1 έχουμε - x^3 / 3! και πάει λέγοντας.

 

Αν παρόλα αυτά θέλεις να παρουσιάσεις τον παραπάνω κώδικα που έχεις και δεν καταλαβαίνει κανείς πώς δουλεύει :), τότε έχεις τα παρακάτω δύο λάθη:

 

α) Λες sin(x)

 

NAME

sin, sinf, sinl - sine function

 

SYNOPSIS

#include <math.h>

 

double sin(double x);

float sinf(float x);

long double sinl(long double x);

 

Link with -lm.

 

DESCRIPTION

These functions return the sine of x, where x is given in radians.

Οπότε έπρεπε να πεις sin(rad) αντί για sin(x) πράγμα που το καταλαβαίνεις και από το γεγονός ότι τα ημίτονα βγαίνουν λάθος (Έδωσες 90 μοίρες και πήρες ημίτονο 1 έτσι που το είχες ?)

 

β) Λες frac = frac * rad * rad / i * (i-1)

 

Υποθέτω πως θέλεις να διαιρέσεις με το γινόμενο των i και i-1 οπότε πρέπει να γράψεις ή /(i*(i-1)) ή να γράψεις / i / (i-1) για να προκύψει αυτό που θέλεις.

 

Με αυτές τις δύο αλλαγές τα ημίτονα υπολογίζονται σωστά.

  • Moderators
Δημοσ.

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

Δημοσ.

περισσοτερο μου φαινεται για ασκηση της οποιας απαντηση βρηκες καπου στο ιντερνετ προχειρα..τετοια ορολογια δεν χρησιμοποιουν στο α εξαμηνο εκτος και αν κανεις στο harvard

Δημοσ.

Δυστυχως τετοιες πιπες βαζουν, με αποτελεσμα να μην μαθαινουν τιποτα. Για καποιο λογω πολλοι πιστευουν πως ο προγραμματισμος ειναι μαθηματικα, εξου και πολλες ασκησεις εχουν να κανουν με μεταφραση μιας μαθηματικης εξισωσης σε καποια γλωσσα. Ο προγραμματισμος ωμος δεν ειναι αυτο, ο προγραμμαφισμος ειναι η λυση προβληματων.

Δημοσ.

Ένα loop χρειάζεσαι.

Κάπως έτσι 

power = x;
sum = x;
fact = 1;
for(int i = 3; i < 100; i+=2)
{
   power *= x * x;
   fact *= i;
   if(i % 4 == 1) //i=1,5,9...
      sum += power / fact;
   else //i=3,7,13...
      sum -= power / fact;
} 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...