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

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

Δημοσ.

Σχετική με τη μέθοδο πολυγώνων του Αρχιμήδη είναι η αυτή άσκηση .

εχω το δεδομένο οτι

Ησχέση που μας δίνει το μήκος πλευράς λ(2ν) του εγγεγραμένου πολυγώνου

με 2ν πλευρές, σε σχέση με το αντίστοιχο μήκος πλευράς λν εγγεγραμένου

πολυγώνου με ν πλευρές για κύκλο ακτίνας R είναι η

 

λ(2ν)=sqr(2*R^2-R*sqr(4*R^2-λν^2))

 

Για R=1 γνωρίζουμε λ6=1, οπότε μπορούν να υπολογιστούν

λ12,λ24,λ48,κλπ.Ετσι προκύπτει λ96=0,065438 και η αντίστοιχη

περίμετρος του εγγεγραμένου πολυγώνου 96 πλευρών ε'ιναι

Π96=96*λ96=6,282048. Θεωρωντας οτι η τιμή της περιμέτρου του πολυγόνου

προσεγγίζειτην περίμετρο του κύκλου, η ποσότητα (Π96)/2 δίνει μια

προσεγγιστική τιμή του π(εδω 3.141024), λαμβάνοντας υποψην οτι η

περίμετρος είναι 2*π*R

 

Να υλοποιηθεί πρόγραμμα C που θα κάνει χρήση της παραπάνω εξίσωσης

προκειμένου να υπολογίζει το μήκος της πλευράς του εγγεγραμένου

πολυγόνου σε κύκλο ακτίνας R = 1 και στη συνέχεια την αντίστοιχη

προσεγγιστική τιμή του π.Σε κάθε βήμα υπολογισμού το πρόγραμμα να

τυπώνει τις πληροφορίες

 

Αριθμός πλευρών Μήκος πλευρας Περίμετρος(Π) Τιμή του π

6 1 6 3

 

 

οι ζητούμενοι υπολογισμοί να γίνουν για 10 διαδοχικούς πολ/σμούς του

αριθμού των πλευρών του εγγεγραμένου πολυγόνου.

Δημοσ.

ωραία και τι θες τώρα?

να την λύσουμε να μας εξετάσεις?

 

Γιατί τέτοια επιθετικότητα?

Πόσταρε μια άσκηση το παιδί και όποιος θέλει ασχολείται...

Δημοσ.

Γιατί τέτοια επιθετικότητα?

Πόσταρε μια άσκηση το παιδί και όποιος θέλει ασχολείται...

Εχει ποσταρει κι αλλες φορες ζητιανευοντας λυση...

Δημοσ.

Γιατί τέτοια επιθετικότητα?

Πόσταρε μια άσκηση το παιδί και όποιος θέλει ασχολείται...

 

Τι γιατι??? Παμε καλα?? Επρεπε να τον καψουμε, ακους εκει δεν ηξερε οτι για να παρει βοηθεια επρεπε πρωτα να ποσταρει κωδικα.

 

ΥΓ Ειναι κανας μοντ εδω μεσα;

Δημοσ.

Τι γιατι??? Παμε καλα?? Επρεπε να τον καψουμε, ακους εκει δεν ηξερε οτι για να παρει βοηθεια επρεπε πρωτα να ποσταρει κωδικα.

 

ΥΓ Ειναι κανας μοντ εδω μεσα;

 

 

Παπί...

 

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

 

 

Πόσο μάλλον δε, όταν υπάρχει και ιστορικό.

 

 

Και ο virxen, και ο V.I. και ο nilos και εν γένει όλοι μας εδώ βοηθάμε, όπου και όσο μπορεί ο καθένας, και το ξέρεις αυτό (ειδικά αφού είσαι και εσύ ένας από αυτούς που βοηθάνε και άλλους).

 

 

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

Δημοσ.

 

Και εσεις δε πατε πισω ρε παιδια. Βλεπεις ενα ποστ "Να η εκφωνηση μπλα μπλα, ευχαριστω εκ των προτερων" ωραια δε σ'αρεσει, ε μην απαντας, πας στο επομενο. Δεν γραφει πουθενα οτι απογορευεται να ποσταρεις ασκηση.

 

Ειδικα μερικοι που παλια απαντουσαν σε απλες αποριες, τωρα πλεον απαντανε με ενα "google δεν ξερεις τι ειναι;" λες και ολοι περιμενουμε μια απαντηση απο συγκεκριμενα ατομα.

Δημοσ. (επεξεργασμένο)

Το πρόβλημα δεν έχει καμιά δυσκολία.

Απλώς εφαρμόζεις τον τύπο σε ένα βρόγχο...

 

-

ναι αλλα πως παω απο το βροχο στο πι?. επισης δεν καταλαβαίνω πως υπολογίζεται το λ(96)=0,065438 στην εκφώνηση.

>
#include<stdio.h>
#include<math.h>
#define R 1
int v;
double lv=1,l2v;
main(){
      for(v=1;v<=10;v++)
      {
                        l2v=sqrt(2*pow(R,2)-R*sqrt(4*pow(R,2)-pow(lv,2)));
                                            
                        lv=l2v;
                          
                        }
                        getchar();
}

Επεξ/σία από alan2
Δημοσ.

Καταρχήν πρέπει να κατανοήσεις τον τύπο που δόθηκε.

Είναι μια απλή αναδρομική σχέση :

δίνεται το μήκος λν της πλευράς ενός κανονικού πολυγώνου ·

από αυτό, μπορεί να βρεθεί το μήκος λ της πλευράς ενός άλλου κανονικού πολυγώνου

με διπλάσιο πλήθος πλευρών (εγεγραμμένο στον ίδιο κύκλο).

Η περίμετρος του κανονικού ν-γώνου, έστω Lν, προφανώς ισούται με

το πλήθος των πλευρών επί το μήκος της πλευράς λν, ήτοι Lν=νλν.

Για μεγάλο πλήθος πλευρών το Lν προσεγγίζει την περιφέρεια του κύκλου 2πR (ή 2π για R=1),

συνεπώς 2πR = Lν = νλν <=> 2π (αφού δίνεται R=1) = νλν <=> π=νλν/2.

Το π θεωρείται εδώ άγνωστος και το βρίσκεις από τα v και λν. Το λν το υπολογίζεις

κάθε φορά από την σχέση του Αρχιμήδη χρησιμοποιώντας την προηγούμενη γνωστή τιμή του.

Αυτό ζητείται να γίνει 10 φορές.

 

Ποιά θα είναι η πρώτη τιμή του λν που θα πάρεις για να ξεκινήσει ο βρόγχος ;

ως γνωστόν, το κανονικό εξάγωνο έχει μήκος πλευράς ίσο με την ακτίνα του κύκλου όπου είναι εγεγραμμένο,

άρα μπορεί άμεσα να ληφθεί ως αρχική τιμή αυτή του εξαγώνου : λ6=R=1.

Το λ96 προκύπτει εφαρμόζοντας την δοθείσα σχέση 5 φορές

(βρίσκεις το μήκος πλευράς που έχει το 96γωνο :

λ6 =1 => λ12=... => λ24=... => λ48=... => λ96=...)

Ως αρχική τιμή μπορεί να ληφθεί το μήκος πλευράς και άλλων κανονικών πολυγώνων

(π.χ. τετράγωνο) ή η σχέση του Αρχιμήδη να γραφεί μη αναδρομικά με χρήση και

του αποστήματος του πολυγώνου εκτός από την ακτίνα του (εγώ έτσι την ήξερα).

 

 

Ο τύπος αυτός (του Αρχιμήδη) δινόταν στο παλαιό βιβλίο γεωμετρίας της Β' λυκείου.

Στο τωρινό βιβλίο νομίζω ότι δεν αναγράφεται αυτούσιος αλλά υπάρχουν πολλές λεπτομέρειες για

τα πολύγωνα, εγώ τα θυμάμαι αν και πέρασαν χρόνια. Άνοιξε το βιβλίο να τα δεις.

Δεν θα αναφέρω περισσότερα διότι θα υποτιμήσω την νοημοσύνη σου...

 

-

Δημοσ. (επεξεργασμένο)

οκ τοτε.... :mrgreen: μην το υποτιμησεις

fyi διορθωσα το βρογχο μου και μου εβγαλε σωστο λ96 στη 4η επαναληψη

>#include<stdio.h>
#include<math.h>
#define R 1
int v;
double lv=1,l2v;
main(){
      for(v=1;v<=10;v++)
      {
                        l2v=sqrt(2*pow(R,2)-R*sqrt(4*pow(R,2)-pow(lv,2)));
                                            
                        lv=l2v;
                          
                        }
                        getchar();
}

Επεξ/σία από alan2
Δημοσ.

μήπως μπορεί να γίνει το ιδιο και με κλήση αναδρομικής συνάρτησης?

 

ναι μπορεί

 

 

 

#include <stdio.h>

#include <math.h>

 

#define R 1.00

 

double l(int n){

if (n==6)//1η τιμή της συναρτησης-->l(6)=1

return 1.0;

if (n<6 || n%6!=0)//για τιμή μικρότερη από 6 και όχι πολλαπλάσιο του 6

return -1;//δεν ορίζεται και επιστρέφω -1

double value=sqrt(2.0*pow(R,2)-R*sqrt(4.0*pow(R,2)-pow(l(n/2),2)));

return value;

}

 

int main(){

int i,n;

for (i=0,n=6;i<5;i++,n*=2){

printf("l(%d)=%f\n",n,l(n));

}

getchar();

return 0;

}

 

 

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

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

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

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

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

Σύνδεση

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

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