Title: Λύση εξισώσεων στο Matlab Post by: jeen on October 29, 2008, 21:10:28 pm Δίνω την παρακάτω εντολή στο Matlab
[w1,w2]=solve('(abs(L*w1-w2+(y1-L*x1)))/(sqrt(L*L+1))=3.4641','((w1-x1)^2)+((w2-y1)^2)=3.4641'); και μου βγάζει συνέχεια ένα warning Warning: Explicit solution could not be found. Δε βγάζει σφάλμα αλλά δε μου λύνει και το σύστημα. Τα L, x1, y1, x2, y2 γνωστές μεταβλητές.... Καμμιά ιδέα; Title: Re: Λύση εξισώσεων στο Matlab Post by: Γιώργος on October 29, 2008, 21:20:48 pm Είναι αρκετά ξεκάθαρο, δεν μπορεί να το λύσει. :)
Title: Re: Λύση εξισώσεων στο Matlab Post by: jeffaldo on October 29, 2008, 22:16:44 pm παλαιοτερα ειχα παρομοιο προβλημα...με αντικατασταση των μεταβλητων με τις τιμες τους λυνετε σιγουρα...τωρα ετσι...ας φωτισει καποιος...
Title: Re: Λύση εξισώσεων στο Matlab Post by: Emfanever on October 29, 2008, 23:04:37 pm Δοκίμασε στο mathematica
Title: Re: Λύση εξισώσεων στο Matlab Post by: sm on October 29, 2008, 23:30:01 pm Η συνάρτηση solve προσπαθεί να βρει μια αναλυτική λύση του συστήματος και αυτό το μήνυμα το βγάζει επειδή το Matlab αποτυγχάνει στο να προσδιορίσει κάποια. Είσαι σίγουρος πως το σύστημα επιλύεται αναλυτικά; (η συνάρτηση abs φαίνεται να μπλέκει λίγο τα πράγματα...) Εν πάσει περιπτώσει, μιας και χρησιμοποιείς που χρησιμοποιείς αριθμούς στο σύστημα (π.χ.: 3.4641) γιατί δεν προσπαθείς να το λύσεις αριθμητικά;
Ένα παρόμοιο πρόβλημα φαίνεται να αντιμετωπίζει και αυτός: http://www.mathworks.co.uk/matlabcentral/newsreader/view_thread/164008 οπότε τσέκαρε αν θες τις απαντήσεις που του δίνουν και ίσως βρεις κάτι χρήσιμο. Title: Re: Λύση εξισώσεων στο Matlab Post by: Verminoz on October 29, 2008, 23:30:42 pm Δοκίμασε στο mathematica λ0λ! Κάτι σαν το "πέτα το και βάλε linux" ;D :D Title: Re: Λύση εξισώσεων στο Matlab Post by: jeen on October 30, 2008, 15:29:48 pm Αν αντικαταταστήσω τα L, x1, y1, x2, y2 με τιμές, όπως είπε ο jeffaldo, δεν έχω κανένα πρόβλημα. Μου βγάζει λύση...Το θέμα είναι ότι πρέπει να φτιάξω ένα πρόγραμμα και τα L, x1, y1, x2, y2 μπορούν να πάρουν διαφορετικές τιμές κάθε φορά...Οπότε πιστεύω κάπου εκεί είναι το πρόβλημα....
Title: Re: Λύση εξισώσεων στο Matlab Post by: mendelita on October 30, 2008, 15:52:25 pm Ε εντάξει, θα βάζεις κάθε φορά τις αντίστοιχες τιμές, ή χειροκίνητα ή με πρόγραμμα. Το matlab δεν μπορεί να κάνει συμβολικές πράξεις. (Αυτό το κάνει το mathematica που είπε και ο emfanever). Πρέπει να έχεις συγκεκριμένες τιμές στις μεταβλητές σου. Title: Re: Λύση εξισώσεων στο Matlab Post by: fugiFOX on November 12, 2008, 17:54:14 pm Ε εντάξει, θα βάζεις κάθε φορά τις αντίστοιχες τιμές, ή χειροκίνητα ή με πρόγραμμα. Το matlab δεν μπορεί να κάνει συμβολικές πράξεις. (Αυτό το κάνει το mathematica που είπε και ο emfanever). Πρέπει να έχεις συγκεκριμένες τιμές στις μεταβλητές σου. Says who? Μια χαρά μπορεί να λύσει, αρκεί να είναι σχετικά εύκολες οι εξισώσεις Title: Re: Λύση εξισώσεων στο Matlab Post by: Megawatt on November 13, 2008, 01:58:42 am ρε παιξε με c++ να τελειωνεις!
Δίνω την παρακάτω εντολή στο Matlab Παντως σε αντιθεση με σενα, καποιοι αλλοι θα διναν θηλυκο αρθρο στΟ ΠΡΟΓΡΑΜΜΑ Matlab, επειδη το αντιμετωπιζουν σαν "Η γλώσσα Matlab" .....κρινε! :)Title: Απ: Λύση εξισώσεων στο Matlab Post by: Tonia on November 22, 2008, 14:48:54 pm εχει δουλέχει κανείς με τις ode? και συγκεκριμένα.. με δικιά σας output function στην odeset?
δε μπορώ με τίποτα να αποθηκεύσω τα δεδομένα κάθε βήματος της επίλυσης με την output function που εχω φτιάξει και δε ξέρω τι φταίει τι σας λεω τωρα.. απορω αν καταλαβατε τιποτα.. είναι η απόγνωση που μιλάει Title: Re: Λύση εξισώσεων στο Matlab Post by: Aurelius on November 24, 2008, 12:25:35 pm ode = open dynamics engine ?
Φανταζομαι παντως, οτι δεν ειναι θεμα του πακετου αλλα της συναρτησης που εγραψες. Διαφορετικα υπαρχουν αρκετα φορουμ για Ματλαμπ, οπου μπορεις να ρωτησεις. http://www.mathworks.com/matlabcentral/ http://mathforum.org/kb/forum.jspa?forumID=80 Title: Re: Λύση εξισώσεων στο Matlab Post by: fugiFOX on November 24, 2008, 13:55:32 pm ode = open dynamics engine ? Ordinary differential equationTitle: Re: Λύση εξισώσεων στο Matlab Post by: Aurelius on November 24, 2008, 14:30:13 pm ode = open dynamics engine ? Ordinary differential equationhttp://www.ode.org/ για matlab :P Title: Απ: Λύση εξισώσεων στο Matlab Post by: Tonia on November 24, 2008, 14:45:49 pm τελικά.... απλά είχα ξεχάσει να συμπεριλάβω στα ορίσματα της ode την παράμετρο που έστελνε τα αποτελέσματα στην output function...
για γερά νεύρα είναι το ματλαμπ πάντως... θα μπορούσε να μου πει οτι αυτό το options που εχω ορίσει εκει δεν χρησιμοποιείται πουθενα... options = odeset('OutputFcn',@fun_out4,'AbsTol',10^(-7),'RelTol',10^(-4)) ; tspan = [0,8] ; x_initial = [ q01,q02,q03,q04,0,0,0,0,0 ] ; tic [t,x]=ode15s(@system_file4,tspan,x_initial,options); toc Title: Re: Λύση εξισώσεων στο Matlab Post by: theoxan on January 02, 2009, 16:47:40 pm Λοιπόν θέλω να δημιούργήσω μια γραφική παράσταση ισοσταθμικών μιας εξίσωσης χ1 * χ2 (χ2 + χ1 - 4) = 2c για διάφορες τιμές του c. Κάθετος άξονας χ2 οριζόντιος χ1. Ποιά είναι η εντολή και πώς συντάσσεται?
Title: Re: Λύση εξισώσεων στο Matlab Post by: AgentCain on January 02, 2009, 17:30:21 pm Αναζήτηση στο Google->"ισοσταθμικές γραμμές"="contour lines"
Περαιτέρω αναζήτηση για το MATLAB: http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/contour.html&http://www.google.gr/search?hl=el&client=firefox-a&rls=org.mozilla%3Ael%3Aofficial&hs=KYQ&q=matlab+contour&btnG=%CE%91%CE%BD%CE%B1%CE%B6%CE%AE%CF%84%CE%B7%CF%83%CE%B7&meta= Προσωπικά δεν την έχω χρησιμοποιήσει σαν συνάρτηση, αλλά νομίζω θα είναι εύκολο να καταλάβεις από τη βιβλιοθήκη της Mathworks :) Title: Re: Λύση εξισώσεων στο Matlab Post by: sm on January 02, 2009, 17:57:14 pm Όπως πρότεινε και ο AgentCain, είναι η συνάρτηση που χρειάζεσαι είναι η contour. Το help του Matlab έχει λίγο καλύτερη περιγραφή. Κάτι το οποίο δεν αναφέρετε στις επεξηγήσεις (ή εν πάσι περιπτώσει μπορεί να μου ξέφυγε) είναι το πώς πυκνώνεις τις ισοσταθμικές. Αυτό γίνεται αλλάζοντας την ιδιότητα LevelStep της γραφικής παράστασης. Για την εξίσωση που έχεις, μπορείς να ξεκινήσεις με τον παρακάτω κώδικα και να κάνεις κατάλληλες αλλαγές ώστε να εστιάσεις εκεί που επιθυμείς:
[X,Y]=meshgrid(-3:0.1:3,-3:0.1:3); Z=X.*Y.*(Y+X-4)./2; [C,h]=contour(X,Y,Z); set(h,'LevelStep',1); set(h,'ShowText','on','TextStep',get(h,'LevelStep')*3); title('Ισοσταθμικές της Χ*Υ*(Χ+Υ-4)=2*C') xlabel('X'); ylabel('Y'); colormap cool; Για δεις π.χ. τι έχει μέσα στο τρίγωνο μηδενισμού, πρέπει να αλλάξεις τα όρια του αρχικού πλέγματος, το LevelStep και το TextStep για να μην έχεις συνωστισμό στις τιμές που αναγράφονται. Πρόσεχε μόνο μην αυξήσεις πολύ την λεπτομέρεια χωρίς να εστιαστείς ταυτόχρονα στην περιοχή όπου η τάξη μεγέθους απαιτεί αυτή την αύξηση γιατί διαφορετικά η γραφική παράσταση θα αργήσει πολύ να σχεδιαστεί και δεν θα σου είναι πολύ χρήσιμη (εκτός ίσως του να σου δείξη τις μεγάλες μεταβολες που συμβαίνουν στην ευαισθησία των ισοσταθμικών ως προς τη σταθερά C!) |