CubicFormula (p)
Υπολογίζει τις ρίζες ενός κυβικού (βαθμού 3) πολυωνύμου χρησιμοποιώντας τον κυβικό τύπο. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή 4*x^3 + 2*x + 1
αντιστοιχεί στο διάνυσμα [1,2,0,4]
. Επιστρέφει ένα διάνυσμα στήλης των τριών λύσεων. Η πρώτη λύση είναι πάντα η πραγματική καθώς μια κυβική έχει πάντα μια πραγματική λύση.
See Planetmath, Mathworld, or Wikipedia for more information.
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
και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.
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 (f,a,b,TOL,N)
Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο διχοτόμησης. Τα a
και b
είναι το αρχικό διάστημα πρόβλεψης, τα f(a)
και f(b)
πρέπει να έχουν αντίθετα πρόσημα. Το TOL
είναι η επιθυμητή ανοχή και N
είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα [success,value,iteration]
, όπου success
είναι μια λογική τιμή που δείχνει επιτυχία, value
είναι η τελευταία υπολογισμένη τιμή και iteration
είναι ο αριθμός των επαναλήψεων που έγιναν.
FindRootFalsePosition (f,a,b,TOL,N)
Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο ψευδούς θέσης. Τα a
και b
είναι το αρχικό διάστημα πρόβλεψης, τα f(a)
και f(b)
πρέπει να έχουν αντίθετα πρόσημα. Το TOL
είναι η επιθυμητή ανοχή και N
είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα [success,value,iteration]
, όπου success
είναι μια λογική τιμή που δείχνει επιτυχία, value
είναι η τελευταία υπολογισμένη τιμή και iteration
είναι ο αριθμός των επαναλήψεων που έγιναν.
FindRootMullersMethod (f,x0,x1,x2,TOL,N)
Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο Μίλερ. Το TOL
είναι η επιθυμητή ανοχή και N
είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα [success,value,iteration]
, όπου success
είναι μια λογική τιμή που δείχνει επιτυχία, value
είναι η τελευταία υπολογισμένη τιμή και iteration
είναι ο αριθμός των επαναλήψεων που έγιναν.
FindRootSecant (f,a,b,TOL,N)
Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο τέμνουσας. Τα a
και b
είναι το αρχικό διάστημα πρόβλεψης, τα f(a)
και f(b)
πρέπει να έχουν αντίθετα πρόσημα. Το TOL
είναι η επιθυμητή ανοχή και N
είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα [success,value,iteration]
, όπου success
είναι μια λογική τιμή που δείχνει επιτυχία, value
είναι η τελευταία υπολογισμένη τιμή και iteration
είναι ο αριθμός των επαναλήψεων που έγιναν.
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
.
Example to find the square root of 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 (f,df,guess,epsilon,maxn)
Βρίσκει μηδενικά χρησιμοποιώντας τη μέθοδο Νεύτωνα. Το f
είναι η συνάρτηση και df
είναι η παράγωγος του f
. Η guess
είναι η αρχική πρόβλεψη. Η συνάρτηση επιστρέφει μετά από δύο διαδοχικές τιμές που είναι μέσα στο epsilon
μεταξύ τους, ή μετά από maxn
προσπάθειες, οπότε η συνάρτηση επιστρέφει null
που δείχνει αποτυχία.
Δείτε επίσης NewtonsMethodPoly
and SymbolicDerivative
.
Example to find the square root of 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 (p)
Υπολογίζει ρίζες ενός πολυωνύμου (βαθμών από 1 μέχρι 4) χρησιμοποιώντας τους τύπους για τέτοια πολυώνυμα. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το 4*x^3 + 2*x + 1
αντιστοιχεί στο διάνυσμα [1,2,0,4]
. Επιστρέφει ένα διάνυσμα στήλης των λύσεων.
Η συνάρτηση καλεί QuadraticFormula, CubicFormula και QuarticFormula.
QuadraticFormula (p)
Υπολογίζει ρίζες ενός δευτεροβάθμιου πολυωνύμου (βαθμού 2) χρησιμοποιώντας τον τύπο δευτεροβάθμιας. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το 3*x^2 + 2*x + 1
αντιστοιχεί στο διάνυσμα [1,2,3]
. Επιστρέφει ένα διάνυσμα στήλης των δύο λύσεων.
See Planetmath, or Mathworld, or Wikipedia for more information.
QuarticFormula (p)
Υπολογίζει ρίζες ενός τεταρτοβάθμιου πολυωνύμου (βαθμού 4) χρησιμοποιώντας τον τύπο τεταρτοβάθμιας. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το 5*x^4 + 2*x + 1
αντιστοιχεί στο διάνυσμα [1,2,0,0,5]
. Επιστρέφει ένα διάνυσμα στήλης τεσσάρων λύσεων.
See Planetmath, Mathworld, or Wikipedia for more information.
RungeKutta (f,x0,y0,x1,n)
Χρησιμοποιεί την κλασική μη αναπροσαρμοστική μέθοδο τέταρτης τάξης Runge-Kutta για αριθμητική επίλυση της y'=f(x,y) με αρχικά x0
, y0
πηγαίνει στο x1
με βήματα n
, επιστρέφει y
στο x1
.
Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το y
να είναι ένα διάνυσμα (στήλης) παντού. Δηλαδή, το y0
μπορεί να είναι ένα διάνυσμα, οπότε το f
πρέπει να πάρει έναν αριθμό x
και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.
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.