diff options
author | Nguyễn Gia Phong <vn.mcsinyx@gmail.com> | 2019-12-16 21:31:18 +0700 |
---|---|---|
committer | Nguyễn Gia Phong <vn.mcsinyx@gmail.com> | 2019-12-16 21:31:18 +0700 |
commit | e461df7573c2b7b7e26c965d8cf2d8e175d67378 (patch) | |
tree | 193b8439edac52c1749764395fe5f7787889eda9 /usth/MATH2.2/hw/cubic | |
parent | c1008fe39217be7f91f0ea23483e747bfbc5743e (diff) | |
download | cp-e461df7573c2b7b7e26c965d8cf2d8e175d67378.tar.gz |
[usth/MATH2.2] Numerical Methods
The future starts now.
Diffstat (limited to 'usth/MATH2.2/hw/cubic')
-rwxr-xr-x | usth/MATH2.2/hw/cubic | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/usth/MATH2.2/hw/cubic b/usth/MATH2.2/hw/cubic new file mode 100755 index 0000000..ca24739 --- /dev/null +++ b/usth/MATH2.2/hw/cubic @@ -0,0 +1,25 @@ +#!/usr/bin/env octave +disp ("Solve quadratic equation a*x^3 + b*x^2 + c*x + d = 0"); +a = input ("a = "); +while (a == 0) + disp ("a must be nonzero"); + a = input ("a = "); +end +b = input ("b = "); +c = input ("c = "); +d = input ("d = "); + +% Using the trigonometric and hyperbolic solutions on Wikipedia: +% https://en.wikipedia.org/wiki/Cubic_function +p = (3*a*c - b^2) / (3*a^2); +q = (2*b^3 - 9*a*b*c + 27*a^2*d) / (27*a^3); +if (p == 0) + disp ("The given cubic equation has only one distinct solution:"); + x = cbrt(-q) - b/a/3 +else + r = 2 * sqrt(-p/3); + disp ("The three solutions of the given quadratic equation are:"); + for k = 0 : 2 + x = r * cos((acos(3*q/p/r) - 2*pi*k) / 3) - b/a/3 + end +end |