From e461df7573c2b7b7e26c965d8cf2d8e175d67378 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Mon, 16 Dec 2019 21:31:18 +0700 Subject: [usth/MATH2.2] Numerical Methods The future starts now. --- usth/MATH2.2/hw/cubic | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 usth/MATH2.2/hw/cubic (limited to 'usth/MATH2.2/hw/cubic') 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 -- cgit 1.4.1