panakart Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Καλησπέρα παιδιά,έχω το εξής πρόβλημα:Να λύσετε την y''+2y'+y=e^(-x),y(0)=1,y'(0)=2 με μετατροπή της 2ης τάξης σε 1η και να βρεθεί η y(0,75) με μέθοδο Euler(h=0,25). Αυτός είναι ο κώδικας που έχω γράψει: function[z,y]=Euler(f,a,b,ya,n) h=(b-a)/n; z=zeros(1,n+1); y=zeros(1,n+1); x=a:h:b; y(0)=ya; z(0)=2; for i=0:n y(i+1)=y(i)+h*feval(f(x(i),y(i),z(i))); for i=0:n z(i+1)=z(i)+h*feval(f(x(i),y(i),z(i))); end end το 1ο m-file: function f1=f1(x,y,z) f1=z; και το 2ο m-file που χρησιμοποιώ: function f2=f2(x,y,z) f2=exp(-x)-2*z(i)-y(i); Το πρόβλημα είναι ότι δεν μπορώ να εισάγω και τις δύο συναρτήσεις όταν καλώ την Euler.Όποιος μπορεί ας με βοηθήσει γιατί πρέπει να την παραδώσω σε 3 μέρες.Ευχαριστώ προκαταβολικά για τον χρόνο σας.
V.I.Smirnov Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Δεν βλέπω καμία επισύναψη. Προφανώς εννοείς την μέθοδο Euler για επίλυση διαφορικής εξίσωσης. Η μέθοδος Euler είναι απλούστατη και πανεύκολη (και η πιο ανακριβής βέβαια). Και μάλλον ο κώδικας αφορά Matlab. Κάποιος που ξέρει matlab (εγώ δεν ξέρω) ας σου πει πώς να καλείς μια συνάρτηση με όρισμα μια άλλη. Αν επρόκειτο για C++ ή fortran είναι εύκολο... Υ.Γ. Mε την Schrodinger τα κατάφερες ; -
panakart Δημοσ. 19 Ιανουαρίου 2011 Μέλος Δημοσ. 19 Ιανουαρίου 2011 Μήπως ξέρεις κάποιον που να μπορεί να με βοηθήσει; Υ.Γ.Ναι,κανένα πρόβλημα.
V.I.Smirnov Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Εδώ μέσα αρκετοί ξέρουν matlab. Έλπιζε κάποιος να φιλοτιμηθεί... Bλέποντας την εκφώνηση που μόλις έβαλες, έχω να σου πω ότι ο κώδικάς σου είναι καταρχήν λανθασμένος και δείχνει ότι δεν έχεις καταλάβει τι κάνει η μέθοδος. Για την επίλυση μιας συνήθους διαφορικής β' τάξης, πρέπει να μετατραπεί σε σύστημα δύο διαφορικών α' τάξης οι οποίες λύνονται ταυτόχρονα. Όπερ σημαίνει ότι η αναβάθμισή τους πρέπει να γίνεται στην ίδια επανάληψη του βρόγχου. Διάβασε προσεκτικά την θεωρία... -
ggeo1 Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Δεν ξέρω αν σε βοηθήσουν τα παρακάτω. Δυστυχώς δεν μπορώ να σε βοηθήσω (ακόμη!) εδώ είναι σε mathematica σε matlab matlab
V.I.Smirnov Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Αυτά που δείχνει ο ggeo αφορούν επίλυση μιας α' βάθμιας κι'όχι συστήματος δυο α' βαθμιων. Μην μπερδεύεσαι, είναι πανεύκολο. Έστω το διαφορικό σύστημα x'=f1(t,x,y) y'=f2(t,x,y) με αρχικές συνθήκες x(to)=xo y(to)=yo όπου t είναι η ανεξάρτητη μεταβλητή και τα x,y, εξαρτώνται από το t, δηλ. είναι x(t), y(t). Για την επίλυσή του με την απλή μ. Euler o ψευδοκώδικας είναι περίπου : > x(to)=xo y(to)=yo for i=0, num_steps x(i+1)=x(i)+h*f1(t(i),x(i),y(i)) y(i+1)=y(i)+h*f2(t(i),x(i),y(i)) end for Eσύ έχεις to=0. Θέσε σωστά τα υπόλοιπα αντίστοιxα στοιχεία και λύθηκε... -
panakart Δημοσ. 24 Ιανουαρίου 2011 Μέλος Δημοσ. 24 Ιανουαρίου 2011 Ότι και να κάνω,μου βγάζει συνέχεια αυτό το σφάλμα: Attempted to access y(0); index must be a positive integer or logical. Τι να κάνω;
V.I.Smirnov Δημοσ. 24 Ιανουαρίου 2011 Δημοσ. 24 Ιανουαρίου 2011 Πιθανολογώ ότι ακόμα δεν κατάλαβες τι πρέπει να κάνεις παρόλο που είναι πανεύκολο. Το μήνυμα λάθους που πήρες πιθανόν σημαίνει ότι κάπου δίνεις έναν πίνακα με απαράδεκτο δείκτη (αρνητικό ή μηδέν) ενώ o δείκτης πρέπει να είναι θετικός ακέραιος. Δοκίμασε να ξεκινάς το i από το 1, δηλ. τα xo,yo να είναι τα στοιχεία x(1),y(1) κι'όχι τα x(0),y(0). -
panakart Δημοσ. 24 Ιανουαρίου 2011 Μέλος Δημοσ. 24 Ιανουαρίου 2011 Δεν δουλεύει-Subscript indices must either be real positive integers or logicals.
V.I.Smirnov Δημοσ. 24 Ιανουαρίου 2011 Δημοσ. 24 Ιανουαρίου 2011 Επιμένω : "κάπου δίνεις έναν πίνακα με δείκτη αρνητικό, μηδέν ή πραγματικό ενώ o δείκτης πρέπει να είναι θετικός ακέραιος" Αυτό σημαίνει το μήνυμα σφάλματος. Υποπτεύομαι ότι έχεις παρανοήσει τι είναι τα x(i),y(i) : είναι στοιχεία πινάκων, όπερ σημαίνει ότι για δείκτη έχουν θετικό ακέραιο. x(to) σημαίνει η τιμή του x στην (αρχική) χρονική στιγμή to. Αυτό αντιστοιχεί στο πρώτο στοιχείο του πίνακα x. Δηλ. το x(0). Αν το matlab δεν μπορεί να μετρήσει από το 0, θα θέσεις ως πρώτο το x(1). Δηλ. x(to) --> x(0) ή x(1). Όμοια και για τα υπόλοιπα... -
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.