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

Απορία για το matlab


dudukas

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

Δημοσ.

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

Δημοσ.

Το MATLAB υποστηρίζει φυσικά αναδρομή (και αναδρομικές συναρτήσεις). Κάποιο λάθος έχεις κάνει, οπότε κάνε post τον κώδικα σου να σου πω.:-)

Δημοσ.

Ο κώδικάς μου είναι ο ακόλουθος. Τον χρειάζομαι για τον υπολογισμό ενός ολοκληρώματος. Για κ=1 τρέχει, αλλά για μεγαλύτερες τιμές όπου χειάζομαι και την αναδρομή, μου εμφανίζει σφάλμα και μάλιστα στη γραμμή που για πρώτη φορά εμαφανίζεται η κλήση του αυτού του υποπρογράμματος.

function integrate(k,a,B)

if k==1

n=100

h=(b-a)/n;

result1=(f(a)+f(B))*h/2

result=h*f(a)/2+h*f(b)/2

for i=2:n

xk=a+(i-1)*h

result=result+f(xk)

end

while abs(result-result1)>=10^-7

result1=result

h=(b-a)/n

result=h*f(a)/2+h*f(b)/2

for i=2:n

xk=a+(i-1)*h

result=result+h*f(xk)

end

n=3*n

end

else

n=100

h=(b-a)/n

integral=integrate(k-1,a,B) %στη γραμμή αυτή εμφανίζεται το πρόβλημα

result1=integral*h/2

result=h*integral/2

for i=2:n

xk=a+(i-1)*h

result=result+integrate(k-1,a,xk)

end

while abs(result-result1)>=10^-7

result1=result

h=(b-a)/n

result=h*integrate(k-1,a,b)/2

for i=2:n

xk=a+(i-1)*h

result=result+h*integrate(k-1,a,xk)

end

n=3*n

end

end

end

Μακάρι να είναι λάθος δικό μου...

Δημοσ.

Φίλε μου αυτό δεν είναι κώδικας MATLAB...Τι είναι όλα αυτά τα for-loops, while; Που είναι η χρήση των arrays; O κώδικας σου θα μπορούσε αν εκμεταλλευθείς την φιλοσοφία του MATLAB να είναι 5-7 γραμμές και να δουλεύει! Σου θυμίζω ότι δεν γράφεις MATLAB όπως γράφεις C. Δες κανένα tutorial να πάρεις μια ιδέα και βάλε τον κώδικα σου σε Tags. :-)

Δημοσ.

Το θέμα είναι ότι δεν μπορώ να χρησιμοποιήσω το mathlab εξ ολοκλήρου, αλλά συγκεκριμένες εντολές. Δεν είμαι επαγγελματίας, φοιτητής είμαι και πρέπει να κινηθώ στα πλαίσια της ύλης μου. Το ξέρω για παράδειγμα ότι υπάρχει έτοιμη συνάρτηση για το ολοκλήρωμα που το βρίσκει, αλλά το θέμα δεν είναι να χρησιμοποιήσω τα έτοιμα, το θέμα είναι να τα φτιάξω μονος μου. Όσο για τον κώδικα, ναι matlab είναι και αν θα μπορούσε να με βοηθήσει κάποιος είναι στο κομμάτι που καλώ για πρώτη φορά τη συνάρτηση integrate από τον εαυτό της. Σημειώνω επάνω του στο προηγούμενο πού είναι το πρόβλημα. Επιπλέον δεν μπορώ να σρησιμοποιήσω απ' ευθείας arrays, γιατί ορισμένες πράξεις στη συνέχεια περιλαμβάνουν πράξεις με στοιχεία πινάκων που βρίσκονται στον παρονομαστή, κάτι που με τα arrays γίνεται σαν διαίρεση πινάκων που δεν είναι αυτό που θέλω.

Δημοσ.
Το θέμα είναι ότι δεν μπορώ να χρησιμοποιήσω το mathlab εξ ολοκλήρου, αλλά συγκεκριμένες εντολές. Δεν είμαι επαγγελματίας, φοιτητής είμαι και πρέπει να κινηθώ στα πλαίσια της ύλης μου. Το ξέρω για παράδειγμα ότι υπάρχει έτοιμη συνάρτηση για το ολοκλήρωμα που το βρίσκει, αλλά το θέμα δεν είναι να χρησιμοποιήσω τα έτοιμα, το θέμα είναι να τα φτιάξω μονος μου. Όσο για τον κώδικα, ναι matlab είναι και αν θα μπορούσε να με βοηθήσει κάποιος είναι στο κομμάτι που καλώ για πρώτη φορά τη συνάρτηση integrate από τον εαυτό της. Σημειώνω επάνω του στο προηγούμενο πού είναι το πρόβλημα. Επιπλέον δεν μπορώ να σρησιμοποιήσω απ' ευθείας arrays, γιατί ορισμένες πράξεις στη συνέχεια περιλαμβάνουν πράξεις με στοιχεία πινάκων που βρίσκονται στον παρονομαστή, κάτι που με τα arrays γίνεται σαν διαίρεση πινάκων που δεν είναι αυτό που θέλω.

 

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

Δημοσ.
Το θέμα είναι ότι δεν μπορώ να χρησιμοποιήσω το mathlab εξ ολοκλήρου, αλλά συγκεκριμένες εντολές. Δεν είμαι επαγγελματίας, φοιτητής είμαι και πρέπει να κινηθώ στα πλαίσια της ύλης μου. Το ξέρω για παράδειγμα ότι υπάρχει έτοιμη συνάρτηση για το ολοκλήρωμα που το βρίσκει, αλλά το θέμα δεν είναι να χρησιμοποιήσω τα έτοιμα, το θέμα είναι να τα φτιάξω μονος μου. Όσο για τον κώδικα, ναι matlab είναι και αν θα μπορούσε να με βοηθήσει κάποιος είναι στο κομμάτι που καλώ για πρώτη φορά τη συνάρτηση integrate από τον εαυτό της. Σημειώνω επάνω του στο προηγούμενο πού είναι το πρόβλημα. Επιπλέον δεν μπορώ να σρησιμοποιήσω απ' ευθείας arrays, γιατί ορισμένες πράξεις στη συνέχεια περιλαμβάνουν πράξεις με στοιχεία πινάκων που βρίσκονται στον παρονομαστή, κάτι που με τα arrays γίνεται σαν διαίρεση πινάκων που δεν είναι αυτό που θέλω.

 

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

 

Ρίξε μια ματιά επίσης εδώ http://www.math.ufl.edu/help/matlab-tutorial/matlab-tutorial.html#SEC18 να δεις πώς δουλεύουν τα recursive functions. :-)

Δημοσ.

Ο σύνδεσμος ήταν όλα τα λεφτά! Αντέγραψα το πρόγραμμα και είδα ότι δουλεύει. Θα ψάξω να βρω το λάθος... Ευχαριστώ πολύ!

Αρχειοθετημένο

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

  • Δημιουργία νέου...