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

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

Δημοσ.

Δυο πραγματακια που για καποιον που το δουλευει καιρο το προγραμματακι θα τα ξερει λογικα. Θα με χαρακτηριζα αρχαριο οποτε καθε βοηθεια ευπροσδεκτη. Το πρωτο ειναι ευκολακι νομιζω για οποιον το δουλευει καιρο. Το 2. ειναι λιγο πιο ψαγμενο.

 

1. α)Οταν του ζηταω να μου κανει plot και να μου δωσει τη γραφικη παρασταση μιας σειρας απο ζευγη (Χ,Υ) εχω το εξης θεμα. Η διαβαθμιση του αξονα Χ ειναι αλλη σε σχεση με του Υ.

 

Π.χ. στην εικονα που παραθετω φαινεται και με το ματι. Πιο συγκεκριμενα, αν παρω χαρακα και μετρησω την αποσταση στον αξονα των Χ μεταξυ δυο διαβαθμισεων, εστω απο το -0.1 ως το -0.005, βρισκω οτι ειναι μεγαλυτερη απο την αποσταση των διαβαθμισεων στον αξονα των Υ, π.χ. του -12 ως -10. Αυτο εχει ως αποτελεσμα να μου παραμορφωνει τις γραφικες. Πώς το διορθωνω αυτο; Υπαρχει εντολη που να λεει οτι θελω και στους δυο αξονες να ειναι η διαβαθμιση ιδια; Οσο απεχει η μια γραμμουλα απο την αλλη στον Χ, να απεχει το ιδιο και στον Υ.

 

β)Επισης τι πρεπει να του γραψω για να μου εμφανιζει τους αξονες Χ=0 και Υ=0; Θελω να φαινονται.

 

2. Εχω φτιαξει μια ρουτινα κι ενα μερος της οποιας ειναι το παρακατω:

 

tmp=0;
for th=-pi:0.01:pi
    tmp=tmp+1;
    p=[1 0 0 -(A3.^2) 0 (2.*A.*A3.*sin(th+(pi./4))-(A.^2))];
    r = roots(p);

    j=0;
    for iter=1:1:5
        if isreal(r(iter))&& r(iter)>0
            j=j+1;
            r_new(j)=r(iter); %dhmiourgw mia nea metablhth pou apothkeuei mono pragmatikous
        end

Αυτο που κανει αυτος ο βρογχος λοιπον ειναι να παιρνει μια πεμπτοβαθμια εξισωση με αγνωστο το r, η οποια εχει μια παραμετρο th (γωνια), και κανει αριθμητικη επιλυση για ευρεση των ριζων για καθε th που παιρνει συνολικα τιμες μεσα στο ευρος απο -π ως +π και με βημα 0.01.

 

Αναλυτικα, ξεκιναει απο το -π, βαζει την τιμη στην παραμετρο θ και λυνει την πεμπτοβαθμια δινοντας μου 5 ριζες μιγαδικες και πραγματικες. Στο παραπανω οπως βλεπετε εχω θεσει περιορισμο στη συνεχεια να κραταει μονο τις πραγματικες θετικες ριζες και μαλιστα εφτιαξα και μια αλλη μεταβλητη για να μου συγκεντρωνει εκει αυτες τις τιμες. Στη συνεχεια παει στην επομενη τιμη του th με το βημα που του εχω δωσει και συνεχιζει ωσπου να εξαντλησει το ευρος. Εδω θα ηθελα να ρωτησω τωρα:

 

Πώς μπορω αν θελω να κρατησω ΤΗ ΜΙΚΡΟΤΕΡΗ απο τις θετικες πραγματικες τιμες του r; Υπαρχει εντολη δηλαδη (και ποια ειναι αυτη) για να του δωσω αυτον τον εξτρα περιορισμο;

 

Σημειωση: Αυτο το loop τρεχει παρα πολλες φορες (οπως βλεπετε κι απο το βημα και το ευρος που εχω θεσει στη γωνια th). Αυτο εχει ως αποτελεσμα καποιες απο ολες αυτες τις φορες η πραγματικη ριζα να ειναι μοναδικη. ΟΜΩΣ μερικες αλλες φορες ειναι τρεις οι πραγματικες ριζες (δεν εχω δει ανοιγοντας τον πινακα που αποθηκευει τις τιμες ποτε να εχει βρει 5 πραγματικες, αν και θεωρητικα μπορουσε να συμβει και αυτο). Απο αυτες τις 3 λοιπον μπορει να υπαρχουν περισσοτερες απο μια θετικες. Ετσι λογω του γεγονοτος οτι δεν εχω θεσει αλλον περιορισμο το προγραμμα καταληγει ουσιαστικα απο αυτες τις 2 ή 3 πραγματικες θετικες να επιλεγει να κρατησει ΣΤΗΝ ΤΥΧΗ τη μια.

Toν μετρητης tmp που εχω θεσει, να εξηγησω οτι το εχω επειδη στο τελος του προγραμματος η εκαστοτε r που ψαχνω απο αυτον τον βρογχο χρησιμοποιειται για τη δημιουργια γραφικης παραστασης (X,Y), oπου εχω

 

Χ(tmp)=.... περιεχει  r_new(1)

Y(tmp)=... περιεχει r_new(1)

Eτσι χρησιμοποιει την r_new(1) κι εκει ειναι το προβλημα διοτι δεν ειναι παντα μοναδικη η ριζα που ικανοποιει τους περιορισμους μου, αλλα υπαρχει κι αλλη ή αλλες. Ψαχνω λοιπον τη ΜΙΑ σε καθε loop που θα ειναι Η ΜΙΚΡΟΤΕΡΗ ΘΕΤΙΚΗ ΠΡΑΓΜΑΤΙΚΗ. Πώς μπορω να το κανω αυτο;

ex.bmp

Δημοσ.

1a) help axis, μπορείς να ορισεις ποιες τιμές θα παίρνουν οι άξονες σου

 

1β) help xlabel , help ylabel, μπορείς να βάλεις ονόματα στους άξονες, xlabel('x aksonas');

 

το υπόλοιπο είναι μεγάλο αλλά με πρόχειρη ματιά... help min, help max

 

A=[4,6,4,19,20,34];

mn=min(A); % ara mn=4

mx=max(A); % ara mx=34

Δημοσ.

1a) help axis, μπορείς να ορισεις ποιες τιμές θα παίρνουν οι άξονες σου

 

1β) help xlabel , help ylabel, μπορείς να βάλεις ονόματα στους άξονες, xlabel('x aksonas');

 

το υπόλοιπο είναι μεγάλο αλλά με πρόχειρη ματιά... help min, help max

 

A=[4,6,4,19,20,34];

mn=min(A); % ara mn=4

mx=max(A); % ara mx=34

Καταρχη ευχαριστω πολυ για τον κοπο σου!

 

1α) Δεν θελω να ορισω ποιες τιμες θα παιρνουν οι αξονες μου αρκει να ειναι ισοι μεταξυ τους ως προς τη διαβαθμιση. Οχι ως προς την αρχικη και τελικη τιμη, αλλα ως προς το διαστημα μεταξυ καθε διαβαθμισης τους! 

 

1β)Επισης δεν με ενδιαφερει τοσο να τους βαλω ονοματα αλλα ευχαριστω, οπως και να εχει, για τις πληροφοριες.

 

2)Για το δευτερο τωρα. Α, μαλιστα εχει εντολη min(x) ενος διανυσματος ή πινακα απο οτι αντιλαμβανομαι;

 

Οκ, ομως μπορεις να βοηθησεις και στο πως θα αντικατασταθει το μικρο loop; 

 

j=0;

    for iter=1:1:5

        if isreal(r(iter))&& r(iter)>0

            j=j+1;

            r_new(j)=r(iter)

 

Αυτος ειναι ο μικρος βρογχος που κανει "ξεσκαρταρισμα" στις ριζες του r.  Απο οτι αντιλαμβανομαι θα πρεπει να συμπληρωσω αλλη μια γραμμη οπου θα εχω

 

r_final=min(r_new) ;;;;

 

Μου βγαζει αποτελεσματα ομως αστα να πανε αυτο...

Δημοσ.

Παιδες να επανελθω λιγο στο θεμα. Βρηκα οτι μαλλον καλιμπραρεις τους αξονες αν πας στο μενου των αξονων μεσα στη γραφικη παρασταση και τους δωσεις να εχουν ιδιο Data Aspect Ratio.

Oμως εξακολουθω να μην βρισκω πως γινεται να του δωσω να μου δειχνει και τους αξονες χ=0 και ψ=0. Να εχω δηλαδη τον οριζοντιο και καθετο αξονα μεσα στο χωρο οπου βρισκεται η γραφικη παρασταση.

Δημοσ.

Δεν κατάλαβα ακριβώς τι γίνεται αλλά σου βάζω ένα πολύ μικρό προγραμματάκι για να δεις πω κάνω ένα plot. Ελπίζω να βοηθήσει.
 

 

xstart=-1;
xmax=1;
 
x=-1:0.01:1;
y=1./(1.+x.^2);
z=trapz(x,y)
plot(x,y,'r')
axis([xstart,xmax,1.1*min(y),1.1*max(y)])
xlabel('x');
ylabel('y');
Δημοσ.

 

Δεν κατάλαβα ακριβώς τι γίνεται αλλά σου βάζω ένα πολύ μικρό προγραμματάκι για να δεις πω κάνω ένα plot. Ελπίζω να βοηθήσει.

 

 

xstart=-1;
xmax=1;
 
x=-1:0.01:1;
y=1./(1.+x.^2);
z=trapz(x,y)
plot(x,y,'r')
axis([xstart,xmax,1.1*min(y),1.1*max(y)])
xlabel('x');
ylabel('y');

Αυτο: axis([xstart,xmax,1.1*min(y),1.1*max(y)])

γιατι το χρησιμοποιεις; Τι κανεις με αυτο; Τι οριζεις στους αξονες;

 

Αυτο που ρωτησα τελευταιο στα πιο πανω μηνυματα μου ειναι οτι εχω μια γραφικη παρασταση που η συμβολη των αξονων Χ,Υ δεν ειναι το (0,0). Εχω εναν καθετο κι εναν οριζοντιο αξονα, αλλα θελω να υπαρχει και το Χ=0, δηλαδη ο κατακορυφος αξονας για Χ=0 και Υ=0, δηλαδη ο οριζοντιος αξονας για Υ=0, οι οποιοι αυτοι δυο δεν συμπεφτουν με τους αξονες της γραφικης παραστασης, οπως φαινεται και στην φωτο που εχω παραθεσει στο πρωτο μηνυμα πανω πανω.

Δημοσ.

axis([xstart,xmax,1.1*min(y),1.1*max(y)])

Αυτό τότε λύνει το πρόβλημά σου. Βασικά λες στην matlab από που θες να ξεκινούν και να τελειώνουν τα όρια του γραφήματος.
Δηλαδή με την πιο πάνω πρόταση λεω: Το γράφημα θα ξεκινάει από xstart και θα τελειώνει στο xmax (τα οποία όρισα πιο πάνω).
Μετά λεω ότι ο άξονας y θα είναι για min και max αντίστοιχα 1.1 φορές μεγαλύτερος από αυτά που θα φένονται.

 

Τώρα αν το γράφημά σου παίρνει τιμές από x=100 - 200 για παράδειγμα και θες να φαίνεται το 0 τότε όρισε το xstart σου 0 και βάλτο όπως πιο πάνω.

Ελπίζω αυτή τη φορά να βοήθησα!!

  • Like 1

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

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

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

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

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

Σύνδεση

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

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