Πληροφορική/ Τεχνολογιών Απορία με fortran

χημεια4λαιφ

Νεοφερμένος

Ο χημεια4λαιφ αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Μεταπτυχιακός φοιτητής στο τμήμα Χημικών Μηχανικών ΕΜΠ. Έχει γράψει 96 μηνύματα.
Απορία στη πληροφορική fortranf90


Πως λύνεται αυτό?
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Johnny15

Επιφανές μέλος

Ο Γιάννης? αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Πτυχιούχος και μας γράφει απο Γερμανία (Ευρώπη). Έχει γράψει 12,749 μηνύματα.
Δεν ξέρω fortran αλλά το ερώτημα εξηγεί καλά τι θα κάνεις. Θα έχεις μια επανάληψη η οποία θα υπολογίζει το άθροισμα και μόλις δυο διαδοχικά αθροίσματα έχουν διαφορά μικρότερη από το h το σταματάς.
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Guest 336742

Επισκέπτης

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

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

akikos

Επιφανές μέλος

Ο Ανδρέας αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Πτυχιούχος του τμήματος Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών ΕΜΠ και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 12,896 μηνύματα.
Εμένα με μπερδεύει η απάντηση του @johnny

Η υπόδειξη λέει ότι η άθροιση σταματά όταν η απόλυτη τιμή του όρου που προστίθεται στο άθροισμα είναι μικρότερη από h, δηλαδή όταν

το abs(3/ι*(x^ι)) < h

Αυτό που λέει ο @johnny (μόλις δυο διαδοχικά αθροίσματα έχουν διαφορά μικρότερη από το h το σταματάς) από που βγαίνει;


Άρα η λύση ειναι:
1) Mια συνάρτηση που παίρνει ως είσοδο την τιμή του x και την ακρίβεια h.
2) Μέσα στη συνάρτηση ορίζουμε και αρχικοποιουμε την τιμή του i = 1, καθώς και το άθροισμα (sum = 0)
3) Μετά βάζουμε μια while που ελέγχει ότι για όσο abs(3/ι*(x^ι)) >= h κάνουμε τον υπολογισμο sum = sum + 3/i*(x^i) και αυξάνουμε την τιμή του i κατά 1
4) Έπειτα επιστρέφουμε ως έξοδο το i και το sum μέσα σε ένα πίνακα ή άλλη δομή δεδομένων.
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Τελευταία επεξεργασία:

Johnny15

Επιφανές μέλος

Ο Γιάννης? αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Πτυχιούχος και μας γράφει απο Γερμανία (Ευρώπη). Έχει γράψει 12,749 μηνύματα.
Ο Άκικος έχει δίκιο, η άσκηση είναι πιο εύκολη από αυτό που φαντάστηκα. Δεν είχα διαβάσει πως χρησιμοποιείς την "ακρίβεια".

Ο Άκικος έχει τελειώσει ΕΜΠ είναι καλύτερος σε αυτά.
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Τελευταία επεξεργασία:

akikos

Επιφανές μέλος

Ο Ανδρέας αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Πτυχιούχος του τμήματος Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών ΕΜΠ και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 12,896 μηνύματα.
Ο Άκικος έχει τελειώσει ΕΜΠ είναι καλύτερος σε αυτά.
Ούτε εμας μας έμαθαν Fortran :mpliaks:... αλλά μας έμαθαν να επιβιώνουμε στις δύσκολες καταστάσεις.
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

χημεια4λαιφ

Νεοφερμένος

Ο χημεια4λαιφ αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Μεταπτυχιακός φοιτητής στο τμήμα Χημικών Μηχανικών ΕΜΠ. Έχει γράψει 96 μηνύματα.
Εμένα με μπερδεύει η απάντηση του @johnny

Η υπόδειξη λέει ότι η άθροιση σταματά όταν η απόλυτη τιμή του όρου που προστίθεται στο άθροισμα είναι μικρότερη από h, δηλαδή όταν

το abs(3/ι*(x^ι)) < h

Αυτό που λέει ο @johnny (μόλις δυο διαδοχικά αθροίσματα έχουν διαφορά μικρότερη από το h το σταματάς) από που βγαίνει;


Άρα η λύση ειναι:
1) Mια συνάρτηση που παίρνει ως είσοδο την τιμή του x και την ακρίβεια h.
2) Μέσα στη συνάρτηση ορίζουμε και μηδενίζουμε την τιμή του Ν, καθώς και το άθροισμα (sum)
3) Μετά βάζουμε μια while που ελέγχει ότι για όσο abs(3/ι*(x^ι)) >= h κάνουμε τον υπολογισμο sum = sum + 3/i*(x^i) και αυξάνουμε την τιμή του Ν κατά 1
4) Έπειτα επιστρέφουμε ως έξοδο το Ν και το sum μέσα σε ένα πίνακα ή άλλη δομή δεδομένων.

Το N δεν κατάλαβα τι ρόλο παίζει.... Δλδ θα κάνω do i=1,1000000
If abs(3/i*x^i) then sum=sum+(3/i*x^i)
Else exit και μετά τι;
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

akikos

Επιφανές μέλος

Ο Ανδρέας αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Πτυχιούχος του τμήματος Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών ΕΜΠ και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 12,896 μηνύματα.
Το N δεν κατάλαβα τι ρόλο παίζει.... Δλδ θα κάνω do i=1,1000000
If abs(3/i*x^i) then sum=sum+(3/i*x^i)
Else exit και μετά τι;


Έκανα edit την παραπανω απάντηση.

Το Ν είναι μια από τις εξοδους της συναρτησης. Είναι ο αριθμός i ώστε abs(3/i*x^i)<h


Δεν θα βάλεις do αλλά while loop με συνθήκη abs(3/i*x^i)>=h

 

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Τελευταία επεξεργασία:

χημεια4λαιφ

Νεοφερμένος

Ο χημεια4λαιφ αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Μεταπτυχιακός φοιτητής στο τμήμα Χημικών Μηχανικών ΕΜΠ. Έχει γράψει 96 μηνύματα.
do while ABS((3/i)*x**i)>=h
s=s+(3/i)*x**i)


i=i+1 αυτο;;;; ειμαι αχτηστος στην πληροφορικη δεν εχω το σκεπτικο για να γινω καλος

do while ABS((3/i)*x**i)>=h
s=s+(3/i)*x**i)


i=i+1 αυτο;;;; ειμαι αχτηστος στην πληροφορικη δεν εχω το σκεπτικο για να γινω καλος


με enddo sto telos
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

akikos

Επιφανές μέλος

Ο Ανδρέας αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Πτυχιούχος του τμήματος Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών ΕΜΠ και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 12,896 μηνύματα.
do while ABS((3/i)*x**i)>=h
s=s+(3/i)*x**i)


i=i+1 αυτο;;;; ειμαι αχτηστος στην πληροφορικη δεν εχω το σκεπτικο για να γινω καλος




με enddo sto telos


δεν ξέρω τη σύνταξη της fortran αλλά η λογική αυτή ειναι.

Δεν είναι αρχαία, έκθεση, ιστορία και άλλες θεωρητικές μπούδρες. 2, 3 εντολές είναι που αν καταλάβεις τη λογική τους μπορεί να λύσεις οποιοδήποτε αλγόριθμο. Η άσκηση αυτή προσπαθεί να σε ψαρώψει από την εκφώνηση αλλά αν καταλάβεις τι ζητά ο αλγόριθμος η λύση είναι εύκολη.

Μην προσπαθείς να λύσεις την άσκηση στο χαρτί αλλά σε υπολογιστή κατευθείαν.

Ένας online compiler είναι εδώ
https://www.tutorialspoint.com/compile_fortran_online.php
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

χημεια4λαιφ

Νεοφερμένος

Ο χημεια4λαιφ αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Μεταπτυχιακός φοιτητής στο τμήμα Χημικών Μηχανικών ΕΜΠ. Έχει γράψει 96 μηνύματα.
εχω το προγραμμα στον υπολογιστη μου.....θα προσπαθησω να τη λυσω
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 5 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Χρήστες Βρείτε παρόμοια

  • Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:
    Tα παρακάτω 3 μέλη διάβασαν αυτό το θέμα:
  • Φορτώνει...
Top