Επίλυση εξίσωσης

CubicFormula
CubicFormula (p)

Υπολογίζει τις ρίζες ενός κυβικού (βαθμού 3) πολυωνύμου χρησιμοποιώντας τον κυβικό τύπο. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή 4*x^3 + 2*x + 1 αντιστοιχεί στο διάνυσμα [1,2,0,4]. Επιστρέφει ένα διάνυσμα στήλης των τριών λύσεων. Η πρώτη λύση είναι πάντα η πραγματική καθώς μια κυβική έχει πάντα μια πραγματική λύση.

See Planetmath, Mathworld, or Wikipedia for more information.

EulersMethod
EulersMethod (f,x0,y0,x1,n)

Use classical Euler's method to numerically solve y'=f(x,y) for initial x0, y0 going to x1 with n increments, returns y at x1. Unless you explicitly want to use Euler's method, you should really think about using RungeKutta for solving ODE.

Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το y να είναι ένα διάνυσμα (στήλης) παντού. Δηλαδή, το y0 μπορεί να είναι ένα διάνυσμα, οπότε το f πρέπει να πάρει έναν αριθμό x και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.

See Mathworld or Wikipedia for more information.

EulersMethodFull
EulersMethodFull (f,x0,y0,x1,n)

Use classical Euler's method to numerically solve y'=f(x,y) for initial x0, y0 going to x1 with n increments, returns an n+1 by 2 matrix with the x and y values. Unless you explicitly want to use Euler's method, you should really think about using RungeKuttaFull for solving ODE. Suitable for plugging into LinePlotDrawLine or LinePlotDrawPoints.

Example:

genius> LinePlotClear();
genius> line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);
genius> LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");

Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το y να είναι ένα διάνυσμα (στήλης) παντού. Δηλαδή, το y0 μπορεί να είναι ένα διάνυσμα, οπότε το f πρέπει να πάρει έναν αριθμό x και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.

The output for a system is still a n by 2 matrix with the second entry being a vector. If you wish to plot the line, make sure to use row vectors, and then flatten the matrix with ExpandMatrix, and pick out the right columns. Example:

genius> LinePlotClear();
genius> lines = EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);
genius> lines = ExpandMatrix(lines);
genius> firstline = lines@(,[1,2]);
genius> secondline = lines@(,[1,3]);
genius> LinePlotWindow = [0,10,-2,2];
genius> LinePlotDrawLine(firstline,"color","blue","legend","First");
genius> LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");

See Mathworld or Wikipedia for more information.

Version 1.0.10 onwards.

FindRootBisection
FindRootBisection (f,a,b,TOL,N)

Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο διχοτόμησης. Τα a και b είναι το αρχικό διάστημα πρόβλεψης, τα f(a) και f(b) πρέπει να έχουν αντίθετα πρόσημα. Το TOL είναι η επιθυμητή ανοχή και N είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα [success,value,iteration], όπου success είναι μια λογική τιμή που δείχνει επιτυχία, value είναι η τελευταία υπολογισμένη τιμή και iteration είναι ο αριθμός των επαναλήψεων που έγιναν.

FindRootFalsePosition
FindRootFalsePosition (f,a,b,TOL,N)

Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο ψευδούς θέσης. Τα a και b είναι το αρχικό διάστημα πρόβλεψης, τα f(a) και f(b) πρέπει να έχουν αντίθετα πρόσημα. Το TOL είναι η επιθυμητή ανοχή και N είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα [success,value,iteration], όπου success είναι μια λογική τιμή που δείχνει επιτυχία, value είναι η τελευταία υπολογισμένη τιμή και iteration είναι ο αριθμός των επαναλήψεων που έγιναν.

FindRootMullersMethod
FindRootMullersMethod (f,x0,x1,x2,TOL,N)

Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο Μίλερ. Το TOL είναι η επιθυμητή ανοχή και N είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα [success,value,iteration], όπου success είναι μια λογική τιμή που δείχνει επιτυχία, value είναι η τελευταία υπολογισμένη τιμή και iteration είναι ο αριθμός των επαναλήψεων που έγιναν.

FindRootSecant
FindRootSecant (f,a,b,TOL,N)

Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο τέμνουσας. Τα a και b είναι το αρχικό διάστημα πρόβλεψης, τα f(a) και f(b) πρέπει να έχουν αντίθετα πρόσημα. Το TOL είναι η επιθυμητή ανοχή και N είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα [success,value,iteration], όπου success είναι μια λογική τιμή που δείχνει επιτυχία, value είναι η τελευταία υπολογισμένη τιμή και iteration είναι ο αριθμός των επαναλήψεων που έγιναν.

HalleysMethod
HalleysMethod (f,df,ddf,guess,epsilon,maxn)

Find zeros using Halley's method. f is the function, df is the derivative of f, and ddf is the second derivative of f. guess is the initial guess. The function returns after two successive values are within epsilon of each other, or after maxn tries, in which case the function returns null indicating failure.

Δείτε επίσης NewtonsMethod και SymbolicDerivative.

Παράδειγμα εύρεσης της τετραγωνικής ρίζας του 10:

genius> HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)

See Wikipedia for more information.

Version 1.0.18 onwards.

NewtonsMethod
NewtonsMethod (f,df,guess,epsilon,maxn)

Βρίσκει μηδενικά χρησιμοποιώντας τη μέθοδο Νεύτωνα. Το f είναι η συνάρτηση και df είναι η παράγωγος του f. Η guess είναι η αρχική πρόβλεψη. Η συνάρτηση επιστρέφει μετά από δύο διαδοχικές τιμές που είναι μέσα στο epsilon μεταξύ τους, ή μετά από maxn προσπάθειες, οπότε η συνάρτηση επιστρέφει null που δείχνει αποτυχία.

Δείτε επίσης NewtonsMethodPoly and SymbolicDerivative.

Παράδειγμα εύρεσης της τετραγωνικής ρίζας του 10:

genius> NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)

See Wikipedia for more information.

Version 1.0.18 onwards.

PolynomialRoots
PolynomialRoots (p)

Υπολογίζει ρίζες ενός πολυωνύμου (βαθμών από 1 μέχρι 4) χρησιμοποιώντας τους τύπους για τέτοια πολυώνυμα. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το 4*x^3 + 2*x + 1 αντιστοιχεί στο διάνυσμα [1,2,0,4]. Επιστρέφει ένα διάνυσμα στήλης των λύσεων.

Η συνάρτηση καλεί QuadraticFormula, CubicFormula και QuarticFormula.

QuadraticFormula
QuadraticFormula (p)

Υπολογίζει ρίζες ενός δευτεροβάθμιου πολυωνύμου (βαθμού 2) χρησιμοποιώντας τον τύπο δευτεροβάθμιας. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το 3*x^2 + 2*x + 1 αντιστοιχεί στο διάνυσμα [1,2,3]. Επιστρέφει ένα διάνυσμα στήλης των δύο λύσεων.

See Planetmath, or Mathworld, or Wikipedia for more information.

QuarticFormula
QuarticFormula (p)

Υπολογίζει ρίζες ενός τεταρτοβάθμιου πολυωνύμου (βαθμού 4) χρησιμοποιώντας τον τύπο τεταρτοβάθμιας. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το 5*x^4 + 2*x + 1 αντιστοιχεί στο διάνυσμα [1,2,0,0,5]. Επιστρέφει ένα διάνυσμα στήλης τεσσάρων λύσεων.

See Planetmath, Mathworld, or Wikipedia for more information.

RungeKutta
RungeKutta (f,x0,y0,x1,n)

Χρησιμοποιεί την κλασική μη αναπροσαρμοστική μέθοδο τέταρτης τάξης Runge-Kutta για αριθμητική επίλυση της y'=f(x,y) με αρχικά x0, y0 πηγαίνει στο x1 με βήματα n, επιστρέφει y στο x1.

Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το y να είναι ένα διάνυσμα (στήλης) παντού. Δηλαδή, το y0 μπορεί να είναι ένα διάνυσμα, οπότε το f πρέπει να πάρει έναν αριθμό x και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.

See Mathworld or Wikipedia for more information.

RungeKuttaFull
RungeKuttaFull (f,x0,y0,x1,n)

Use classical non-adaptive fourth order Runge-Kutta method to numerically solve y'=f(x,y) for initial x0, y0 going to x1 with n increments, returns an n+1 by 2 matrix with the x and y values. Suitable for plugging into LinePlotDrawLine or LinePlotDrawPoints.

Example:

genius> LinePlotClear();
genius> line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);
genius> LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");

Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το y να είναι ένα διάνυσμα (στήλης) παντού. Δηλαδή, το y0 μπορεί να είναι ένα διάνυσμα, οπότε το f πρέπει να πάρει έναν αριθμό x και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.

The output for a system is still a n by 2 matrix with the second entry being a vector. If you wish to plot the line, make sure to use row vectors, and then flatten the matrix with ExpandMatrix, and pick out the right columns. Example:

genius> LinePlotClear();
genius> lines = RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);
genius> lines = ExpandMatrix(lines);
genius> firstline = lines@(,[1,2]);
genius> secondline = lines@(,[1,3]);
genius> LinePlotWindow = [0,10,-2,2];
genius> LinePlotDrawLine(firstline,"color","blue","legend","First");
genius> LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");

See Mathworld or Wikipedia for more information.

Version 1.0.10 onwards.