Cách giải phương trình bậc 3 bằng C#

Chia sẻ: Nguyễn Viết Dũng Viết Dũng | Ngày: | Loại File: DOC | Số trang:3

0
261
lượt xem
34
download

Cách giải phương trình bậc 3 bằng C#

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ
Lưu

Nội dung Text: Cách giải phương trình bậc 3 bằng C#

  1. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GiaiPhuongTrinhBacBa { class Program { static double x1, a, b, c, d; static void Nhap() { char ok; do { Console.Clear(); Console.WriteLine("Nhap vao gia tri cua cac he so cua phuong trinh"); Console.Write("He so a = "); a = double.Parse(Console.ReadLine()); Console.Write("He so b = "); b = double.Parse(Console.ReadLine()); Console.Write("He so c = "); c = double.Parse(Console.ReadLine()); Console.Write("He so d = "); d = double.Parse(Console.ReadLine()); Console.Write("Ban muon nhap lai he so hay khong? C hoac K:"); ok = char.Parse(Console.ReadLine()); Console.WriteLine("\n"); } while ((ok == 'C') || (ok == 'c')); } static double F(double x) { double f = a * x * x * x + b * x * x + c * x + d; return f; } static void HeSo(out double g, out double h, out double e) { g = a; h = b + x1 * a; e = -d / x1; } static void GiaiBacHai1(double g, double h, double e) { double delta = h * h - 4 * g * e; if (delta == 0) { double q = -h / (2 * g); Console.WriteLine("Phuong trinh co nghiem:\n\t x1 = {0}\n\t x2 = x3 {1}", x1, q); return; } else if (delta > 0) { double q = (-h - Math.Sqrt(delta)) / (2 * g); double r = (-h + Math.Sqrt(delta)) / (2 * g); Console.WriteLine("Phuong trinh co ba nghiem thuc phan biet:"); Console.WriteLine("\t x1 = {0}\n\t x2 = {1}\n\t x3 = {2}", x1, q, r); } else {
  2. double m = -delta; double n = -h / (2 * g); double p = Math.Sqrt(m) / (2 * g); Console.WriteLine("Phuong trinh co ba nghiem:"); Console.WriteLine("\t x1 = {0}\n", x1); Console.WriteLine("\t x2 = {0} + {1} i\n", n, p); Console.WriteLine("\t x3 = {0} - {1} i", n, p); } } static void GiaiBacHai2(double g, double h, double e) { double delta = h * h - 4 * g * e; if (delta == 0) { double q = -h / (2 * g); Console.WriteLine("Phuong trinh co nghiem:\n\t x1 = x2 = {0}", q); return; } else if (delta > 0) { double q = (-h - Math.Sqrt(delta)) / (2 * g); double r = (-h + Math.Sqrt(delta)) / (2 * g); Console.WriteLine("Phuong trinh co hai nghiem thuc phan biet:"); Console.WriteLine("\t x1 = {0}\n\t x2 = {1}", q, r); } else { double m = -delta; double n = -h / (2 * g); double p = Math.Sqrt(m) / (2 * g); Console.WriteLine("Phuong trinh co hai nghiem phuc lien hop:"); Console.WriteLine("\t x1 = {0} + {1} i\n", n, p); Console.WriteLine("\t x2 = {0} - {1} i", n, p); } } static void GiaiBacNhat() { if (c != 0) { Console.WriteLine("Nghiem cua phuong trinh la: x= {0}", -d / c); } else if (d == 0) Console.WriteLine("Phuong trinh co vo so nghiem."); else Console.WriteLine("Phuong trinh vo nghiem."); } static void KhoangNghiem(out double k, out double l) { double t = 0, v = 0; double i = -1000, j; for (; i <= 1000; i++) { j = i + 1; if (F(i) * F(j) < 0) {
  3. t = i; v = j; break; } if (F(i) * F(j) == 0) { if (F(i) == 0) x1 = i; if (F(j) == 0) x1 = j; break; } } k = t; l = v; } static void TinhNghiem(double k, double l) { double c; for (; ; ) { if (F(a) == 0) { x1 = a; break; } if (F(b) == 0) { x1 = b; break; } c = (k + l) / 2; if (F(c) == 0) { x1 = c; break; } if (Math.Abs(k - l) < Math.Pow(10, -10)) { x1 = k; break; } if (F(k) * F(l) < 0) l = c; if (F(k) * F(l) > 0) k = c; } } static void Main() { Nhap(); if ((a == 0) && (b!=0)) { GiaiBacHai2(b, c, d); Console.ReadLine(); return; } if ((a == 0) && (b == 0)) { GiaiBacNhat(); Console.ReadLine(); return; } double k = 0, l = 0, g, h, e; KhoangNghiem(out k, out l); TinhNghiem(k, l); HeSo(out g, out h, out e); GiaiBacHai1(g, h, e); Console.ReadKey(); } } }
Đồng bộ tài khoản