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

matlab απορία ευκολο ,


Locke_John

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

Δημοσ.

καλημερα παιδια.

 

θελω να υλοποιησω την αναδρομη In = n*I(n-1) - exp(-1) σε matlab, για n=12 και αρχικη τιμη I(0)= 1- exp(-1)

 

καποιος βοηθεια?

 

εχω δοκιμασει ανεπιτυχως το εξης

 

>
clc;
i;
n=[1:1:12];
In=[1:1:12];

%I();
I0=1-exp(-1);
%I=randn(12,1);

for i=1:1:n
   I(n)=(n*I(n-1) - exp(-1))
end

Δημοσ.

Ασχέτως ότι δεν χρειάζεσαι for loop (Δεν γράφουμε C, γράφουμε MATLAB!), το i που το χρησιμοποιείς αλήθεια;

 

Κοίτα να δεις, πολύ ευχαρίστως να βοηθήσω όμως αυτό που έχεις κάνει post δείχνει ότι δεν έχεις ασχοληθεί ούτε 10 λεπτά! Αν θες λοιπόν πραγματικά βοήθεια, κάτσε διόρθωσε τον κώδικά σου ώστε να να δουλεύει το λιγότερο έστω και με λάθος αποτέλεσμα και μετά το βλέπουμε! Παρεμπιπτόντως ο κώδικας που θες είναι 2 γραμμές! :shifty:

Δημοσ.
Ασχέτως ότι δεν χρειάζεσαι for loop (Δεν γράφουμε C, γράφουμε MATLAB!), το i που το χρησιμοποιείς αλήθεια;

 

Κοίτα να δεις, πολύ ευχαρίστως να βοηθήσω όμως αυτό που έχεις κάνει post δείχνει ότι δεν έχεις ασχοληθεί ούτε 10 λεπτά! Αν θες λοιπόν πραγματικά βοήθεια, κάτσε διόρθωσε τον κώδικά σου ώστε να να δουλεύει το λιγότερο έστω και με λάθος αποτέλεσμα και μετά το βλέπουμε! Παρεμπιπτόντως ο κώδικας που θες είναι 2 γραμμές! :shifty:

 

η αληθεια ειναι οτι στον κωδικα που παρεθεσα, δεν χρησιμοποιω το i. ομως αυτο δεν το εκανα απο παντελη αμαθεια, απλά προεκυψε απο συνεχεις διορθωσεις μου/προσπαθειες, εξ' ου και τα συμβολα με τα σχόλια.

 

επίσης, νομιζα πως θα χρειαστει for loop για να παρω 12 τιμες. τελος, παραδεχομαι ότι η matlab δεν ειναι το φορτε μου ουτε και η αγαπημενη/πλέον χρησιμη γλωσσα.(μαλλον προτιμω την C).

απλά δοκιμαζω να διεκπαεραιωσω μια ασκηση υποχρεωτικού μαθηματος.

 

τελος παντων, ευχαριστω για την απαντηση, και την καλοβουλη πιστευω κριτικη .

εχω φτασει σε κατι τετοιο τωρα,: (ξεχασα να αναφερω οτι ζηταω μονη ακριβεια στον υπολογισμό, γι αυτο και η single εντολη).

>
clc;

n=[1:1:12];
In=zeros(12,1);
I0=1-exp(-1);

for n=1:1:12
In=single(n*In-1 - exp(-1))
end

 

παιρνω 12 τιμες Ιn, αλλα όχι ως Ι1, Ι2 κτλ αλλά όλες Ιn. Επίσης δεν ξερω αν ειναι αναμενομενες οι τιμες.

Δημοσ.

πλέον χρησιμη γλωσσα

 

κάνεις πολύ μεγάλο λάθος, φυσικά πάντα σε σχέση με τι τομέα θες να ασχοληθείς αργότερα. Σε καθαρά υπολογιστικά προβλήματα ένας σωστά γραμμένος κώδικας MATLAB είναι αρκετά πιο γρήγορος από τον αντίστοιχο κώδικα σε C, συν ότι είναι πολύ πιο εύκολος.

 

H γλώσσα MATLAB υποστηρίζει αναδρομικές σχέσεις με χρήση functions (η ίδια η συνάρτηση να καλεί το εαυτό της) και δεν χρειάζεται να χρησιμοποιήσεις for-loops. Επειδή όμως αυτό είναι κάπως προχωρημένο και δεν θέλω να σε μπλέκω, πάρε τον κώδικα με for-loop.

 

>
clear all; clc;
I=zeros(12,1,'single'); % allocate size
I(1)=1-exp(-1);
for n=1:11
   I(n+1)=n*I(n)-exp(-1);
end

 

:-)

Δημοσ.
Ασχέτως ότι δεν χρειάζεσαι for loop (Δεν γράφουμε C, γράφουμε MATLAB!), το i που το χρησιμοποιείς αλήθεια;

 

Κοίτα να δεις, πολύ ευχαρίστως να βοηθήσω όμως αυτό που έχεις κάνει post δείχνει ότι δεν έχεις ασχοληθεί ούτε 10 λεπτά! Αν θες λοιπόν πραγματικά βοήθεια, κάτσε διόρθωσε τον κώδικά σου ώστε να να δουλεύει το λιγότερο έστω και με λάθος αποτέλεσμα και μετά το βλέπουμε! Παρεμπιπτόντως ο κώδικας που θες είναι 2 γραμμές! :shifty:

 

Ποιες αναδρομικες συναρτησεις υποστηριζει η matlab?

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

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

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