Επιλογή περιβάλλοντος ανάπτυξης. όπου y είναι η επιθυμητή συνάρτηση, x η ανεξάρτητη μεταβλητή, f(x,y) είναι μια συνεχής συνάρτηση των x και y. Ωστόσο, δεν είναι δυνατό να ληφθεί μια αναλυτική λύση αυτής της εξίσωσης για μια αρκετά αυθαίρετη συνάρτηση f, και μόνο για ορισμένες ειδικές περιπτώσεις

Ας δοθεί μια διαφορική εξίσωση πρώτης τάξης με την αρχική συνθήκη y(x 0)=y 0. Ας επιλέξουμε το βήμα h και εισάγουμε τον συμβολισμό:

x i = x 0 + ih και y i = y(x i), όπου i = 0, 1, 2, ... .

Παρόμοια με τη μέθοδο που περιγράφεται παραπάνω, παρασκευάζεται το διάλυμα

διαφορική εξίσωση. Η διαφορά είναι ότι το βήμα χωρίζεται σε 4 μέρη.

Σύμφωνα με τη μέθοδο Runge-Kutta τέταρτης τάξης, οι διαδοχικές τιμές y i της επιθυμητής συνάρτησης y καθορίζονται από τον τύπο:

y i+1 = y i +?y i

όπου i = 0, 1, 2 ...

Υ=(k1+2*k2+2*k3+k4)/6

Οι αριθμοί k1, k2, k3, k4 σε κάθε βήμα υπολογίζονται χρησιμοποιώντας τους τύπους:

k1 = h*f(x i, y i)

k2 = f (x i +h/2, y i +k1 /2)*h

k3 = F(x i +h/2, y i +k2 /2)*h

k4 = F(x i +h, y i +k3)*h

Αυτή είναι μια ρητή μέθοδος τεσσάρων βημάτων με 4 τάξεις ακρίβειας.

Ένα διάγραμμα ροής της διαδικασίας για την επίλυση μιας διαφορικής εξίσωσης χρησιμοποιώντας τη μέθοδο Runge-Kutta φαίνεται στο Σχήμα 6.

Η F(x, y) - μια δεδομένη συνάρτηση - πρέπει να περιγραφεί ξεχωριστά.

Παράμετροι εισαγωγής:

X0, XK - αρχική και τελική

αξίες του ανεξάρτητου

μεταβλητός;

Y0 - τιμή y 0 από την αρχική συνθήκη

N - αριθμός τμημάτων διαμερισμάτων.

Παράμετροι εξόδου:

Y - πίνακας τιμών της απαιτούμενης λύσης

σε κόμβους πλέγματος.

Αλγόριθμος για την επίλυση του προβλήματος

Λύση στο MathCAD

Καταχώριση προγραμμάτων σε γλώσσα Visual Basic

Dim xr(), yr(), xe(), ye(), xo(), yo() Ως Single

Ιδιωτικό x0, y0, h, xk, k1, k2, c, k3, k4, yd Ως μεμονωμένο

Ιδιωτικό n, i Ως Ακέραιος

Δημόσια συνάρτηση f(ByVal a, ByVal β) Ως απλή

f = -(a - b) / a

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

x0 = Val(TextBox1.Text)

xk = Val(TextBox2.Text)

y0 = Val(TextBox4.Text)

h = Val(TextBox3.Text)

n = (xk - x0) / h

c = y0 / x0 + Math.Log(x0)

DataGridView1.ColumnCount = 4

DataGridView1.RowCount = n + 2

DataGridView1.Item(0, 0).Value = "x"!}

DataGridView1.Item(1, 0).Value = "General"!}

DataGridView1.Item(2, 0).Value = "Euler M"!}

DataGridView1.Item(3, 0).Value = "Runge Kutt"!}

Για i = 0 έως n - 1

xe(i) = Math.Round((xe(0) + i * h), 2)

ye(i + 1) = ye(i) + h * f(xe(i) + h / 2, ye(i) + h / 2 * f(xe(i), ye(i)))

DataGridView1.Item(2, 1).Τιμή = ye(0)

DataGridView1.Item(0, 1).Τιμή = xe(0)

DataGridView1.Item(0, i + 1).Τιμή = xe(i)

DataGridView1.Item(2, i + 1).Τιμή = Str(ye(i))

Για i = 0 έως n - 1

xr(i) = Math.Round((xe(0) + i * h), 2)

k1 = h * f(xr(i), yr(i))

k2 = h * f(xr(i) + h / 2, yr(i) + k1 / 2)

k3 = h * f(xr(i) + h / 2, yr(i) + k2 / 2)

k4 = h * f(xr(i) + h, yr(i) + k3)

yd = (k1 + 2 * k2 + 2 * k3 + k4) / 6

yr(i + 1) = yr(i) + yd

DataGridView1.Item(3, 1).Τιμή = έτος(0)

DataGridView1.Item(3, i + 1).Τιμή = Str(yr(i))

Για i = 0 έως n - 1

xo(i) = Math.Round((xe(0) + i * h), 2)

yo(i) = xo(i) * (c - Math.Log(xo(i)))

DataGridView1.Item(1, 1).Τιμή = yo(0)

DataGridView1.Item(1, i + 1).Τιμή = Str(yo(i))

Chart1.Series.Add("Γενική λύση")

Chart1.Series ("General Solution").ChartType = SeriesChartType.Line

Για i = 0 έως n - 1

Διάγραμμα 1. Σειρά ("Γενική λύση"). Σημεία. Προσθήκη XY(xo(i), yo(i))

Chart1.Series ("General solution").ChartArea = "ChartArea1"

Chart1.Series.Add("Euler M")

Chart1.Series ("Euler M").ChartType = SeriesChartType.Point

Για i = 0 έως n - 1

Διάγραμμα1.Σειρά("Euler M").Points.AddXY(xe(i), ye(i))

Chart1.Series ("Euler M").ChartArea = "ChartArea1"

Διάγραμμα1.Σειρά("Euler M").Χρώμα = Χρώμα.Μπλε

Chart1.Series.Add("Runge Kutt")

Chart1.Series ("Runge Kutt").ChartType = SeriesChartType.Line

Για i = 0 έως n - 1

Chart1.Series ("Runge Kutt").Points.AddXY(xr(i), yr(i))

Chart1.Series ("Runge Kutt").ChartArea = "ChartArea1"

Διάγραμμα1.Σειρά ("Runge Kutt").Χρώμα = Χρώμα.Πράσινο

Στείλτε την καλή δουλειά σας στη βάση γνώσεων είναι απλή. Χρησιμοποιήστε την παρακάτω φόρμα

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

Δημοσιεύτηκε στο http://www.allbest.ru/

Ομοσπονδιακό Κρατικό ΑΥΤΟΝΟΜΟ εκπαιδευτικό ίδρυμαΑνώτατη επαγγελματική εκπαίδευση

«ΕΘΝΙΚΟΣ ΠΟΛΙΤΕΙΑΣ ΜΠΕΛΓΚΟΡΟΔ

ΕΡΕΥΝΗΤΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ»

Ινστιτούτο Μηχανικών Τεχνολογιών και Φυσικών Επιστημών

Τμήμα Μαθηματικών και Λογισμικών Πληροφοριακών Συστημάτων

εφαρμογή λογισμικού επίλυσης συστήματος συνηθισμένων διαφορικών εξισώσεων χρησιμοποιώντας τη μέθοδο Runge-Kutta 4ης τάξης

Εργασία μαθήματος

στον κλάδο "Μέθοδοι υπολογισμών"

μαθητής πλήρης απασχόλησης

τομείς εκπαίδευσης 010500.62

«Μαθηματική υποστήριξη και διοίκηση

πληροφοριακά συστήματα"

Ομάδα 3ου έτους 07001302

Ντάνκοφ Νικολάι Αλεξέεβιτς

ΒΕΛΓΚΟΡΟΔ 2016

Εισαγωγή

1. Θεωρητικό μέρος

1.1 Συνήθης διαφορική εξίσωση πρώτης τάξης. Πρόβλημα Cauchy

1.2 Η ουσία της μεθόδου Runge-Kutta

1.3 Επιλογή περιβάλλοντος ανάπτυξης

2. Πρακτικό μέρος

2.1 Υλοποίηση λογισμικού της μεθόδου Runge-Kutta 4ης τάξης

3. Δοκιμές

3.1 Παράδειγμα

συμπέρασμα

Εφαρμογή

Εισαγωγή

Όταν μελετούν μια μεγάλη ποικιλία φαινομένων στον περιβάλλοντα κόσμο, που σχετίζονται τόσο με τις ακριβείς επιστήμες όσο και με τις ανθρωπιστικές επιστήμες, οι ερευνητές σε πολλές περιπτώσεις αντιμετωπίζουν το γεγονός ότι οι συναρτησιακές εξαρτήσεις μεταξύ των ποσοτήτων βρίσκονται από εξισώσεις στις οποίες οι παράγωγοι των επιθυμητών συναρτήσεων είναι παρόν. Τα πιο απλά από αυτά είναι αυτά που περιέχουν μόνο παράγωγα πρώτης τάξης και μπορούν να γραφτούν με τη μορφή

= f(x, y) ,

όπου y είναι η επιθυμητή συνάρτηση, x η ανεξάρτητη μεταβλητή, f(x,y) είναι μια συνεχής συνάρτηση των x και y. Ωστόσο, δεν είναι δυνατό να ληφθεί μια αναλυτική λύση αυτής της εξίσωσης για μια αρκετά αυθαίρετη συνάρτηση f, και μόνο για ορισμένες ειδικές περιπτώσεις, οι οποίες μπορούν να βρεθούν στη βιβλιογραφία αναφοράς.

Λόγω της ταχείας ανάπτυξης της τεχνολογίας ηλεκτρονικών υπολογιστών τις τελευταίες δεκαετίες, κατέστη δυνατή η χρήση κατά προσέγγιση μαθηματικών μεθόδων για την επίλυση προβλημάτων αυτού του είδους. Μία από αυτές τις προσεγγίσεις ονομάζεται μέθοδος Runge-Kutta και συνδυάζει μια ολόκληρη ομάδα τροποποιήσεων που σχετίζονται με τη μέθοδο παρασκευής τους.

Σκοπός της εργασίας του μαθήματος: η μελέτη της μεθόδου Runge-Kutta 4ης τάξης για την επίλυση συνηθισμένων διαφορικών εξισώσεων.

Δήλωση προβλήματος: είναι απαραίτητο να δημιουργηθεί ένα πρόγραμμα που επιτρέπει την επίλυση συνηθισμένων διαφορικών εξισώσεων χρησιμοποιώντας τη μέθοδο Runge-Kutta 4ης τάξης.

Η εργασία του μαθήματος αποτελείται από 3 ενότητες, περιέχει 6 σχέδια, 3 καταχωρήσεις, 1 παράρτημα και 18 σελίδες.

1. Θεωρητικό μέρος

1.1 Συνήθης διαφορική εξίσωση πρώτης τάξης. Πρόβλημα Cauchy

Για απλότητα, θεωρούμε έναν δισδιάστατο χώρο μεταβλητών x και y και κάποιο ανοιχτό σύνολο G που ανήκει σε αυτό. Έστω μια συνεχώς διαφοροποιήσιμη συνάρτηση f(x, y) να οριστεί σε αυτό το ανοιχτό σύνολο και να δοθεί η εξίσωση

= f(x, y) (1)

Σύμφωνα με το θεώρημα ύπαρξης και μοναδικότητας, για οποιοδήποτε σημείο (x 0 ,y 0) ?G υπάρχει μια λύση y = y(x), που ορίζεται σε ένα ορισμένο διάστημα (x 0 -d, x 0 +d), που ικανοποιεί την συνθήκη y(x 0) = y 0, έτσι ώστε τα σημεία (x,y(x)) ?G και y` x ? f(x, y(x)), και αυτή η λύση θα είναι μοναδική. Το πρόβλημα για την εξίσωση (1) με την αρχική συνθήκη y(x 0) = y 0 (πρόβλημα Cauchy) είναι να βρεθεί η συνάρτηση y(x) που μετατρέπει τόσο την εξίσωση (1) όσο και την αρχική συνθήκη σε ταυτότητα. Ας υποθέσουμε ότι οι τιμές που λαμβάνονται από την ανεξάρτητη μεταβλητή x ανήκουν στο διάστημα (X 0, X N) και γράψουμε το πρόβλημα Cauchy:

(2)

Ας διαιρέσουμε το τμήμα [X 0, X N] σε N μέρη έτσι ώστε x n +1 - x n = h n,

n = 0, … ,N-1. Στη συνέχεια, χωρίς απώλεια γενικότητας, θα εξετάσουμε την περίπτωση που η κατάτμηση είναι ομοιόμορφη, δηλ. όλα h n = h = = const,

n = 0 ,… ,N-1.

1.2 Η ουσία της μεθόδου Runge-Kutta

Οι μέθοδοι Runge-Kutta χρησιμοποιούνται ευρέως στην επίλυση διαφορικών εξισώσεων. Η πιο ευρέως χρησιμοποιούμενη μέθοδος είναι η μέθοδος 4ης τάξης.

(3)

(4)

(5)

- μια παράμετρος που καθορίζει την τιμή της συνάρτησης κοντά σε ένα σημείο στον τομέα ορισμού.

Κοινή μέθοδος 4ης τάξης:

(6)

(7)

(8)

(9)

(10)

Το σφάλμα του τύπου (10) είναι ανάλογο του h 5 .

Αυτή η μέθοδος είναι πολύ πιο ακριβής από τις μεθόδους του Euler, αλλά απαιτεί και περισσότερους υπολογισμούς: η θέση του σημείου (x i +1, y i +1) προσδιορίζεται με τον υπολογισμό της τιμής της συνάρτησης f (x,y) 4 φορές. Με την εμφάνιση των υπολογιστών, αυτό το μειονέκτημα έπαψε να είναι σημαντικό και η μέθοδος Runge-Kutta 4ης τάξης χρησιμοποιείται εξαιρετικά ευρέως στην πράξη.

Ο αριθμός των μικροτμημάτων στα οποία χωρίζεται το αρχικό τμήμα καθορίζεται από την απαιτούμενη ακρίβεια υπολογισμού. Για να επιτευχθεί η απαιτούμενη ακρίβεια, το πρόβλημα λύνεται πολλές φορές με τον αριθμό των μικροτμημάτων n να διπλασιάζεται διαδοχικά. Η ακρίβεια θεωρείται ότι επιτυγχάνεται εάν, με τον αρχικό και διπλασιασμένο αριθμό n, οι τιμές των y i και y 2i (σε σημεία που συμπίπτουν x) διαφέρουν όχι περισσότερο από ένα δεδομένο ποσό:

, i =0, ..,n, (11)

όπου p είναι η σειρά ακρίβειας της μεθόδου.

Η μέθοδος Rugne-Kutta έχει τις ακόλουθες ιδιότητες:

1. Η μέθοδος είναι ενός βήματος (για να βρείτε, χρειάζεστε πληροφορίες για το προηγούμενο σημείο)

2. Δεν απαιτεί τον υπολογισμό των παραγώγων της f(x,y), αλλά απαιτεί τον υπολογισμό της ίδιας της συνάρτησης

3. Έχει ένα μικρό σφάλμα

1.3 Επιλογή περιβάλλοντος ανάπτυξης

Το C++ Builder είναι ένα προϊόν λογισμικού, εργαλείο ταχείας ανάπτυξης εφαρμογών (RAD), ολοκληρωμένο περιβάλλον προγραμματισμού (IDE), ένα σύστημα που χρησιμοποιείται από προγραμματιστές για την ανάπτυξη λογισμικού στη γλώσσα προγραμματισμού C++. Αυτό το προϊόν σάς επιτρέπει να δημιουργείτε εφαρμογές κονσόλας και εφαρμογές με γραφική διεπαφή.

Το Microsoft Visual Studio είναι μια σειρά προϊόντων της Microsoft που περιλαμβάνει ένα ενσωματωμένο περιβάλλον ανάπτυξης λογισμικού και μια σειρά από άλλα εργαλεία. Χρησιμοποιώντας αυτό το προϊόν, μπορείτε να αναπτύξετε εφαρμογές κονσόλας, εφαρμογές GUI, καθώς και ιστότοπους, εφαρμογές Ιστού, υπηρεσίες Ιστού τόσο σε εγγενή όσο και σε διαχειριζόμενο κώδικα για όλες τις πλατφόρμες που υποστηρίζονται από Windows, Windows Mobile, Windows CE, Xbox, Windows Phone .NET Compact Framework και Silverlight.

Για να ολοκληρωθεί η εργασία, επιλέχθηκε το προϊόν λογισμικού C++ Builder. Επειδή είναι πιο εύκολο στη χρήση και πληροί όλες τις απαραίτητες προϋποθέσεις για τη δημιουργία μιας εφαρμογής κονσόλας.

2. Πρακτικό μέρος

2.1 Υλοποίηση λογισμικού της μεθόδου Prknge-Kutta 4ης τάξης

διαφορική εξίσωση Προγραμματισμός Cauchy

Η ανάπτυξη του προγράμματος ξεκινά με μια περιγραφή των λειτουργιών. Για να το κάνουμε αυτό χρησιμοποιούμε την εντολή switch.

Λίστα 1 «περιγραφή λειτουργιών»

διπλό s=0;

διακόπτης(συμβουλή)(

περίπτωση 1: (

Διακοπή; )

περίπτωση 2: (

Διακοπή; )

περίπτωση 3: (

Διακοπή; )

περίπτωση 4: (

s = a*(b*x+c*y)/(e*f)*d;

Διακοπή; )

Προκαθορισμένο:

( s =0; )

}

επιστροφή s;

}

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

Όταν ληφθούν όλα τα απαραίτητα δεδομένα, προχωράμε απευθείας στην επίλυση του ODE χρησιμοποιώντας τη μέθοδο Runge-Kutta 4ης τάξης.

Λίστα 2 «υλοποίηση λογισμικού επίλυσης ODEs χρησιμοποιώντας τη μέθοδο Runge-Kutta

4η παραγγελία"

για (i=0;i<=n;i++) {

x=x[i]+h;

cout<<"y"<

}

3. Δοκιμές

Έχοντας ξεκινήσει το πρόγραμμα, θα δούμε τις εξισώσεις που προσφέρονται για επιλογή.

Ρύζι. 1 "επιλογή εξίσωσης"

Εάν εισαγάγετε έναν αριθμό που δεν αντιστοιχεί στους παρουσιαζόμενους αριθμούς εξίσωσης, το πρόγραμμα θα αντιδράσει σε αυτό.

Ρύζι. 2 "εισαγωγή λανθασμένης παραμέτρου"

Έχοντας επιλέξει την απαιτούμενη εξίσωση, εισάγετε τους συντελεστές.

Ρύζι. 3 «συντελεστές εισαγωγής»

Στη συνέχεια, εισάγουμε την αρχή και το τέλος του τμήματος στο οποίο θα γίνει ο υπολογισμός, το βήμα και την αρχική συνθήκη. Η τελευταία παράμετρος πρέπει να επιλεγεί από τον χρήστη ανεξάρτητα.

Ρύζι. 4 «εισαγωγή των απαιτούμενων παραμέτρων»

Αφού ολοκληρωθεί ο υπολογισμός, το πρόγραμμα εμφανίζει τη λύση.

Ρύζι. 5 "Έξοδος αποτελέσματος"

3.1 Παράδειγμα

Λύστε το πρόβλημα Cauchy:

στο τμήμα. Βρείτε μια λύση σε ένα ομοιόμορφο πλέγμα με βήμα 0,1

Λύση. Αφού f(x,y) = x + y, παίρνουμε

= + ,

= ++ ,

= ++ ,

= +h+,

= +() ,

= +h,

για τιμές i = 1, 2, 3, 4.

Υποθέτοντας =0, = 1, βρίσκουμε διαδοχικά:

για i = 1

= 0,1(0 +1) = 0,1 ,

= 0,1(0 + 0,05 +1 + 0,05) = 0,11 ,

= 0,1(0 + 0,05 +1 + 0,055) = 0,1105 ,

= 0,1(0 + 0,1 +1 + 0,1105) = 0,121050 ,

= 1 + *(0,1 + 2*0,11+2*0,1105 + 0,12105) = 1,110342 ,

= 0+0,1=0.1 ,

στο i = 2

= 0,1*(0 + 1,110342) = 0,121034 ,

= 0,1*(0,1 + 0,05 +1,110342 + 0,0605171) = 0,1320859 ,

= 0,1*(0,1 + 0,05+1,110342 + 0,06604295) = 0,1326385 ,

= 0,1*(0,1 + 0,1 + 1,110342 + 0,11326385)= 0,1442980 ,

= 1,110342 + *(0,121034 + 2*0,1320859+2*0,1326385 + 0,1442980) = 1,242805 ,

= 0,1+0,1 ,

Στη συνέχεια παίρνουμε:

με i = 3 = 0,3, = 1,399717,

στο i = 4 = 0,4, = 1,583648.

Το σφάλμα της ληφθείσας λύσης δεν υπερβαίνει την τιμή

|y 4 - q(x 4) | ? 0,000001.

Για λόγους σαφήνειας, ο Πίνακας 1 δείχνει αριθμητικές λύσεις του ίδιου προβλήματος Cauchy χρησιμοποιώντας τις μεθόδους Euler, Euler-Cauchy και Runge-Kutta.

Πίνακας 1 Αριθμητικές λύσεις του προβλήματος Cauchy χρησιμοποιώντας διαφορετικές μεθόδους

Τιμές που βρέθηκαν με τη μέθοδο

Ακριβής λύση

c(x i)=2- x i -1

Euler - Cauchy

Runge - Kutta

Τώρα ας συγκρίνουμε τα αποτελέσματα που προέκυψαν με τους υπολογισμούς του προγράμματός μας.

Ρύζι. 6 «Αποτέλεσμα του προγράμματος»

Όπως μπορούμε να δούμε από το παράδειγμα, η ακρίβεια του υπολογισμού διατηρείται μέχρι το πέμπτο δεκαδικό ψηφίο.

συμπέρασμα

Κατά τη διάρκεια της εργασίας του μαθήματος, πραγματοποιήθηκε η ανατεθείσα εργασία, δηλαδή, καταρτίστηκε ένα πρόγραμμα που επιτρέπει την επίλυση συνηθισμένων διαφορικών εξισώσεων χρησιμοποιώντας τη μέθοδο Runge-Kutta 4ης τάξης.

Κατά τη δοκιμή του προγράμματος προέκυψαν αποτελέσματα που δείχνουν ότι τα αποτελέσματα της λύσης με τη μέθοδο Runge-Kutta 4ης τάξης συμπίπτουν, με επαρκή ακρίβεια, με την αναλυτική.

Κατάλογος πηγών που χρησιμοποιήθηκαν

1. Berezin I.S., Zhidkov N.P., Computational method: T.2 - M.: GIFML, 1960. - 620 p.

2. Bakhvalov N. S., Zhidkov N. P., Kobelkov G. M. Αριθμητικές μέθοδοι. - Μ.: Binom, 2001 - σελ. 363-375.

3. Kopchenova N.V., Maron I.A., Υπολογιστικά μαθηματικά σε παραδείγματα και προβλήματα - M.: Nauka, 1972. - 368 p.

4. https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio

5. https://ru.wikipedia.org/wiki/C%2B%2B_Builder

Παράρτημα 1

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

χρησιμοποιώντας namespace std?

char* rus (const char* text) (

char *buffRus=new char;

CharToOem(κείμενο, buffRus);

επιστροφή buffRus;

}

double func(int tip,double x,double y,double a,double b,double c, double d, double e, double f) (

διπλό s=0;

διακόπτης (συμβουλή) (

περίπτωση 1: (

s = a+b*(y*c*sin(d*x))-(e*y*f*y);

Διακοπή; )

περίπτωση 2: (

s =a*cos(b*x+c*y)+d*(e*x-f*y);

Διακοπή; )

περίπτωση 3: (

s=((a*cos(b*x)/(x+c))-(d*y*e*y)*f);

Διακοπή; )

περίπτωση 4: (

s = a*(b*x+c*y)/(e*f)*d;

Διακοπή; )

Προκαθορισμένο:

( s =0; )

}

επιστροφή s;

}

int main() (

int tip, i=0, n=0;

διπλό h=0,0, ot1=1,0, ot2=0,0, k1=0,0, k2=0,0, k3=0,0, k4=0,0, a=1,0, b=1,0, c=1,0, d=1,0, e=1,0, f =1,0, res=0,0;

bool flag=0;

cout<

cout<<" 1. y"=a+b*(y*c*sin(d*x))-(e*y*f*y)\n 2. y"=a*cos(b*x+c*y)+d*(e*x-f*y)\n 3. y"=((a*cos(b*x)/(x+c))-(d*y*e*y)*f)\n 4. y"=a*(b*x+c*y)/(e*f)*d\n";

ενώ (!σημαία) (

cout<

cin>>συμβουλή;

if((συμβουλή == 1) || (συμβουλή == 2) || (συμβουλή == 3) || (συμβουλή == 4))(

flag=1; )

αλλού(

cout<

}

}

cout<

cout<<" a= ";cin>>a;

cout<<" b= ";cin>>β;

cout<<" c= ";cin>>γ;

cout<<" d= ";cin>>δ;

cout<<" e= ";cin>>ε;

cout<<" f= ";cin>>f;

cout<

ενώ (ot1>ot2) (

cout<

επιστροφή 0;

}

Παράρτημα 2

Δημοσιεύτηκε στο Allbest.ru

Παρόμοια έγγραφα

    Ανάλυση της θεματικής περιοχής του αντικειμενοστρεφούς προγραμματισμού. Γλώσσες Delphi, Object Pascal - αντικειμενοστραφή περιβάλλον προγραμματισμού. Βασικές αλγοριθμικές λύσεις. Επίλυση διαφορικής εξίσωσης χρησιμοποιώντας τη μέθοδο Runge-Kutta στο Excel.

    εργασία μαθήματος, προστέθηκε 04/02/2011

    Σύνταξη προγράμματος στην αλγοριθμική γλώσσα Turbo Pascal. Ανάπτυξη μπλοκ διαγράμματος αλγορίθμου για την επίλυσή του. Σύνταξη ενός αρχικού προγράμματος Pascal και υλοποίηση υπολογισμών χρησιμοποιώντας το μεταγλωττισμένο πρόγραμμα. Εφαρμογή των μεθόδων Runge-Kutta και Runge-Kutta-Merson.

    εργασία μαθήματος, προστέθηκε 17/09/2009

    Η ουσία της μεθόδου Runge-Kutta και οι ιδιότητές της. Επίλυση διαφορικών εξισώσεων πρώτης τάξης. Υπολογιστικό μπλοκ Δεδομένο/Odesolve. Ενσωματωμένες λειτουργίες rkfixed, Rkadapt, Bulstoer. Λύσεις γραμμικών αλγεβρικών εξισώσεων σε MathCad και Microsoft Excel.

    εργασία μαθήματος, προστέθηκε 06/02/2014

    Ανασκόπηση μεθόδων λύσης στο Excel. Αναδρομικοί τύποι της μεθόδου του Euler. Μέθοδος Runge-Kutta τέταρτης τάξης για την επίλυση εξισώσεων πρώτης τάξης. Μέθοδος Euler με βήμα h/2. Επίλυση διαφορικών εξισώσεων με χρήση Mathcad. Τροποποιημένη μέθοδος Euler.

    εργασία μαθήματος, προστέθηκε 18/01/2011

    Μαθηματική περιγραφή του προβλήματος επίλυσης μιας συνηθισμένης διαφορικής εξίσωσης χρησιμοποιώντας την αριθμητική ρητή μέθοδο Runge-Kutta, ανάπτυξη ενός διαγράμματος αλγορίθμου και σύνταξη προγράμματος στο περιβάλλον προγραμματισμού Microsoft Visual Studio 2010.

    εργασία μαθήματος, προστέθηκε 22/01/2014

    Υλοποίηση επίλυσης συνηθισμένων διαφορικών εξισώσεων 1ης και 2ης τάξης με τη μέθοδο Runge-Kutta. Κατασκευή σε υπολογιστή συστήματος εμφάνισης αποτελεσμάτων σε μορφή πίνακα και σε μορφή γραφήματος. Αρχιτεκτονική και απαιτήσεις για αναπτυγμένο λογισμικό.

    εργασία μαθήματος, προστέθηκε 11/05/2011

    Επίλυση διαφορικών εξισώσεων πρώτης τάξης. Παραλλαγές μεθόδων Runge-Kutta διαφόρων παραγγελιών. Βασικές μέθοδοι αριθμητικής επίλυσης του προβλήματος Cauchy. Αύξηση της ακρίβειας των υπολογισμών και της επαναληπτικής μεθόδου βελτίωσης. Διακεκριμένη ακολουθία αριθμών.

    εργαστηριακές εργασίες, προστέθηκε 14/05/2012

    Αριθμητικές μέθοδοι επίλυσης του προβλήματος Cauchy για συνηθισμένες διαφορικές εξισώσεις: Euler, Runge-Kutta, Adams και Runge. Τεχνικές για την κατά προσέγγιση λύση αυτών των εξισώσεων: μέθοδος πεπερασμένων διαφορών, σάρωση διαφοράς, συνεγκαταστάσεις. ανάλυση των αποτελεσμάτων.

    εργασία μαθήματος, προστέθηκε 14/01/2014

    Ανάλυση των πλεονεκτημάτων και των μειονεκτημάτων διαφόρων αριθμητικών μεθόδων για την επίλυση διαφορικών εξισώσεων ανώτερης τάξης. Αιτιολόγηση για την επιλογή της μεθόδου Runge-Kutta τέταρτης τάξης. Ανάπτυξη προγράμματος που μοντελοποιεί τη φυσική και μαθηματική συμπεριφορά ενός εκκρεμούς.

    εργασία μαθήματος, προστέθηκε 07/11/2012

    Επίλυση διαφορικών εξισώσεων με χρήση κλασικών αλγορίθμων αριθμητικών μεθόδων Euler και Runge-Kutta 4ης τάξης. Εντολές που χρησιμοποιούνται για την επίλυση συνηθισμένων διαφορικών εξισώσεων σε ένα υπολογιστικό σύστημα. Το αποτέλεσμα του προγράμματος.

Έστω μια διαφορική εξίσωση πρώτης τάξης

με αρχική κατάσταση

y(x 0) = y 0.

Ας επιλέξουμε το βήμα h και εισάγουμε τη σημείωση:

x i = x 0 + i . h και y i = y(x i) ,

όπου i = 0, 1, 2, …

x i – κόμβοι πλέγματος,

y i - τιμή της ολοκληρωτικής συνάρτησης σε κόμβους .

Η διαφορική εξίσωση λύνεται παρόμοια με τις μεθόδους που περιγράφονται παραπάνω. Η διαφορά είναι ότι το βήμα χωρίζεται σε 4 μέρη.

Σύμφωνα με τη μέθοδο Runge–Kutta τέταρτης τάξης, διαδοχικές τιμές y Εγώ την επιθυμητή λειτουργία yκαθορίζονται από τον τύπο:

, i = 0, 1, 2,…

και τους αριθμούς k 1 (i) , k 2 (i) , k 3 (i) , k 4 (i)σε κάθε βήμα υπολογίζονται χρησιμοποιώντας τους τύπους:

Αυτή είναι μια ρητή μέθοδος τεσσάρων βημάτων με ακρίβεια τέταρτης τάξης.

Οι μέθοδοι Runge–Kutta είναι εύκολο να προγραμματιστούν και έχουν σημαντική ακρίβεια και σταθερότητα για ένα ευρύ φάσμα προβλημάτων.

Το σχήμα 6 δείχνει ένα διάγραμμα ροής της διαδικασίας RUNGE(X0, XK, Y0, N, Y)για να λύσετε το πρόβλημα Cauchy χρησιμοποιώντας τη μέθοδο Runge–Kutta που περιγράφεται παραπάνω.


i = 0, …, Ν-1

K1 = h * F(x, Yi)

K2 = h * F(x + h/2, Yi + K1 / 2)

K3 = h * F(x + h/2, Yi + K2 / 2)

K4 = h * F(x + h, Yi + K3)

K = (K1 + 2*K2 + 2*K3 + K4) / 6

Εικόνα 6 - Διάγραμμα ροής της διαδικασίας RUNGE

Το σχήμα 7 δείχνει ένα μπλοκ διάγραμμα του κύριου αλγόριθμου προγράμματος για την επίλυση του προβλήματος Cauchy και τη λήψη αποτελεσμάτων με έναν σταθερό αριθμό τμημάτων διαμερισμάτων N. Στο κύριο πρόγραμμα, η διαδικασία ονομάζεται RUNGE(X0, XK, Y0, N, Y),τον υπολογισμό της τιμής της επιθυμητής συνάρτησης y jσε σημεία x jμε τη μέθοδο Runge–Kutta.

Αρχικά στοιχείασε αυτό το πρόβλημα είναι:

X0, XK – αρχικές και τελικές τιμές της ανεξάρτητης μεταβλητής.

Υ0 – τιμή y 0από την αρχική κατάσταση y(x 0) = y 0;

N – αριθμός τμημάτων διαμερισμάτων.

Αποτελέσματα προγράμματοςεμφανίζονται σε δύο στήλες:

X – πίνακας τιμών κόμβων πλέγματος.

Y – πίνακας τιμών της ζητούμενης λύσης στους αντίστοιχους κόμβους πλέγματος.


Είσοδος X0, XK, Y0, N


RUNGE(X0,XK,Y0,N,Y)


i=0…Ν


Έξοδος X, Y i


Εικόνα 7 - Μπλοκ διάγραμμα του κύριου αλγόριθμου προγράμματος για την επίλυση του προβλήματος Cauchy με σταθερό αριθμό τμημάτων διαμερισμάτων N


Επίλυση διαφορικών εξισώσεων στο MathCad

Εικόνα 8 - Ένα παράδειγμα επίλυσης μιας διαφορικής εξίσωσης χρησιμοποιώντας τη μέθοδο

Παραγγελίες Runge-Kutta 4 στο περιβάλλον MathCad.

Γραφικές συναρτήσεις στο περιβάλλον της Visual Basic

Το έργο της ταξινόμησης συναρτήσεων και της κατασκευής των γραφημάτων τους είναι ένα από τα κύρια καθήκοντα στη διαδικασία επίλυσης συνηθισμένων διαφορικών εξισώσεων. Ας εξετάσουμε αυτό το έργο με περισσότερες λεπτομέρειες.

Εργο.

Κατασκευάστε μια γραφική παράσταση της συνάρτησης y=sin(x) στο τμήμα. Κάντε το βήμα του πίνακα ίσο με h.

Λύση.

Για να σχεδιάσετε ένα γράφημα συνάρτησης στο περιβάλλον της Visual Basic, είναι βολικό να χρησιμοποιήσετε ορισμένα γραφικά στοιχεία.

Εικόνα 9 - Θέση των κύριων στοιχείων στο παράθυρο Γενικά



Το στοιχείο Picture Box() χρησιμοποιείται ως κοντέινερ για γραφική παράσταση. Είναι ένας πίνακας κουκκίδων (pixel) και είναι δυνατός ο έλεγχος του χρώματος κάθε μεμονωμένης κουκκίδας. Οι συντεταγμένες οποιουδήποτε σημείου καθορίζονται από ένα ζεύγος ακεραίων - ο σειριακός αριθμός του στη σειρά X και ο σειριακός αριθμός της σειράς μέσα στο αντικείμενο Y. Έτσι, οι συντεταγμένες της επάνω αριστερής γωνίας του στοιχείου είναι (0, 0). . Ο αριθμός των κουκκίδων ανά γραμμή και ο αριθμός των γραμμών καθορίζονται από το μέγεθος του στοιχείου.

Εικόνα 10 - Συντεταγμένες αντικειμένου PictureBox

Στο Σχ. Το σχήμα 10 δείχνει τη θέση των αξόνων και τις συντεταγμένες των γωνιακών σημείων του αντικειμένου.

Το στοιχείο Line() χρησιμοποιείται για να σχεδιάσει τους άξονες και τα τμήματα ενός πολυγωνικού γραφήματος μιας συνάρτησης.

Η ουσία της κατασκευής ενός γραφήματος έγκειται στο γεγονός ότι η συνάρτηση πρέπει να παρουσιαστεί με τη μορφή πίνακα (σε πίνακα) και στη συνέχεια να σημειώσετε τα σημεία στο πρότυπο γραφήματος και να τα συνδέσετε μεταξύ τους.

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

Ας δούμε τον αλγόριθμο με περισσότερες λεπτομέρειες.

Πριν από την εφαρμογή του αλγόριθμου, είναι απαραίτητο να περιγραφεί η υπορουτίνα-συνάρτηση για την γραφική παράσταση του γραφήματος. Αυτό είναι απαραίτητο για να διευκολυνθεί η τροποποίηση του προγράμματος. Εάν χρειάζεται να σχεδιάσετε ένα γράφημα μιας άλλης συνάρτησης, χρειάζεται μόνο να αλλάξετε την υπορουτίνα.

Επίσης, πριν σχεδιάσετε ένα γράφημα, πρέπει να δημιουργήσετε και να επεξεργαστείτε μια φόρμα. Ένα παράδειγμα ανάπτυξης μιας φόρμας φαίνεται στην Εικόνα 11. Στη φόρμα πρέπει να τοποθετήσετε στοιχεία για την εισαγωγή αρχικών δεδομένων, ένα στοιχείο για την εκτύπωση πίνακα, ένα κουμπί εντολής και ένα δοχείο για την τοποθέτηση γραφήματος (PictureBox). Μέσα στο PictureBox, πρέπει να σχεδιάσετε άξονες συντεταγμένων χρησιμοποιώντας ευθείες γραμμές και να τοποθετήσετε ετικέτες για να καταγράψετε τα όρια του τμήματος των τιμών ορισμάτων συνάρτησης και των ακραίων συναρτήσεων στο εν λόγω τμήμα.

Η εισαγωγή των αρχικών δεδομένων πραγματοποιείται στο εν λόγω πρόγραμμα πατώντας το κουμπί εντολής. Πολύ συχνά, η εισαγωγή δεδομένων υλοποιείται χρησιμοποιώντας το στοιχείο TextBox.

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

Ο αριθμός των γραμμών υπολογίζεται με τον τύπο k=n+2, όπου k είναι ο αριθμός των γραμμών και n είναι ο αριθμός των τμημάτων του πίνακα. Ο αριθμός των γραμμών πρέπει να είναι μεγαλύτερος από τον αριθμό των τμημάτων κατά 2, καθώς είναι απαραίτητο να ληφθεί υπόψη το σημείο εκκίνησης (μηδέν) και η γραμμή για την καταγραφή των επικεφαλίδων στηλών σελίδας.

Στην ίδια τη διαδικασία ταξινόμησης, μπορείτε να συνδυάσετε δύο ενέργειες - τον πίνακα και τον υπολογισμό των ακραίων. Αυτή η λύση φαίνεται στην λίστα προγραμμάτων στην Εικόνα 13.

Η κύρια δυσκολία στη γραφική παράσταση είναι η μετάβαση από τη μαθηματική τιμή της συνάρτησης και του ορίσματος στις συντεταγμένες της οθόνης που χρησιμοποιούνται για τη γραφική παράσταση. Κατά την επίλυση αυτού του προβλήματος, είναι απαραίτητο να λάβετε υπόψη την αντίθετη κατεύθυνση των αξόνων στο μαθηματικό γράφημα και στο αντικείμενο PictureBox και την ανάγκη κλιμάκωσης της εικόνας.

Οι συντελεστές κλιμάκωσης γραφημάτων υπολογίζονται χρησιμοποιώντας τους ακόλουθους τύπους:

όπου kx είναι ο συντελεστής κλιμάκωσης κατά μήκος του άξονα OX,

NPX – ο αριθμός των pixel του αντικειμένου PictureBox που έχει εκχωρηθεί για οριζόντια γραφική παράσταση,

α – η αρχική τιμή του τμήματος ορίσματος συνάρτησης,

b – η τελική τιμή του τμήματος του ορίσματος της συνάρτησης.

,

όπου Ky είναι ο συντελεστής κλιμάκωσης κατά μήκος του άξονα OY,

NPY – ο αριθμός των εικονοστοιχείων του αντικειμένου PictureBox που διατίθεται για την κατασκευή ενός κατακόρυφου γραφήματος,

min – ελάχιστη τιμή της συνάρτησης,

max – μέγιστη τιμή της συνάρτησης.

Η μετάφραση των μαθηματικών συντεταγμένων του τρέχοντος σημείου σε συντεταγμένες οθόνης πραγματοποιείται χρησιμοποιώντας τους τύπους:

zx = Στρογγυλός(ox + (x(i) - a) * kx),

zy = Στρογγυλό(oy - (y(i) - Min) * ky),

όπου zx, zy – συντεταγμένες οθόνης του τρέχοντος σημείου,

ox, oy - συντεταγμένες του σημείου τομής των αξόνων στο στοιχείο pictureBox,

x(i), y(i) – μαθηματικές συντεταγμένες του τρέχοντος σημείου,

kx, ky – παράγοντες κλιμάκωσης.

Στον τύπο για τον υπολογισμό της τεταγμένης οθόνης του τρέχοντος σημείου, το σύμβολο μείον χρησιμοποιείται για να ληφθεί υπόψη η αντίθετη κατεύθυνση των αξόνων (στην οθόνη και στο γράφημα).

Η λίστα του προγράμματος για τη σχεδίαση μιας συνάρτησης φαίνεται στο Σχήμα 13.

Παραδείγματα εντύπων με τα αποτελέσματα του προγράμματος για διάφορα αρχικά δεδομένα φαίνονται στα Σχήματα 14 και 15.

Εικόνα 11 - Παράδειγμα ανάπτυξης φόρμας

Εικόνα 12 - Αλγόριθμος για τη χάραξη γραφήματος συνάρτησης

Rem Περιγραφή μεταβλητών

Dim x() As Single, y() As Single

Ιδιωτικό ως ελεύθερος



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: