public DaThuc NhanVoiDaThucBac1(DaThuc B) { if (B.N > 1) { throw new Exception("Bậc của đa thức nhân lớn hơn 1"); } if (B[1] == 0) { return(this * B[0]); } var goc = this.Copy(); if (B[1] != 1) { goc = goc * B[1]; B = B / B[1]; } var ketQua = new DaThuc(); ketQua[0] = B[0] * goc[0]; for (int i = 1; i < goc.N + 1; i++) { ketQua[i] = goc[i - 1] + B[0] * goc[i]; } ketQua[goc.N + 1] = goc[goc.N]; return(ketQua); }
public DaThuc DaoHam() { var ketQua = new DaThuc(); for (int i = 0; i < N; i++) { ketQua[i] = this[i + 1] * (i + 1); } return(ketQua); }
static void Main(string[] args) { var a = new DaThuc(@"DaThuc\a.txt"); var b = new DaThuc(@"DaThuc\b.txt"); Console.WriteLine((a).ToString()); Console.WriteLine((b).ToString()); Console.WriteLine("============================"); Console.WriteLine((a+b).ToString()); Console.ReadLine(); }
public DaThuc Copy() { var B = new DaThuc(); for (int i = 0; i < N + 1; i++) { B[i] = this[i]; } return(B); }
public DaThuc DoiDau() { var C = new DaThuc(); for (int i = 0; i < N + 1; i++) { C[i] = -this[i]; } return(C); }
static void Main(string[] args) { var a = new DaThuc(@"DaThuc\a.txt"); var b = new DaThuc(@"DaThuc\b.txt"); Console.WriteLine((a).ToString()); Console.WriteLine((b).ToString()); Console.WriteLine("============================"); Console.WriteLine((a + b).ToString()); Console.ReadLine(); }
static DaThuc PhepTinhVoiSo(DaThuc A, phepTinhVoiSo phepTinh) { var B = A.Copy(); for (int i = 0; i < A.N + 1; i++) { double temp = B[i]; phepTinh(ref temp); B[i] = temp; } return(B); }
void kiemTraCapDo(DaThuc A, DaThuc B, ref DaThuc lon, ref DaThuc be) { if (A.N > B.N) { lon = A; be = B; } else { lon = B; be = A; } }
public DaThuc Cong(DaThuc B) { DaThuc lon = null; DaThuc be = null; kiemTraCapDo(this, B, ref lon, ref be); DaThuc C = lon.Copy(); for (int i = 0; i < be.N + 1; i++) { C[i] += be[i]; } return(C); }
public void Horner(double c, ref DaThuc KetQua, ref double SoDu) { if (N < 2) { throw new Exception("Bậc của đa thức nhỏ hơn 2"); } KetQua = new DaThuc(); KetQua[N - 1] = this[N]; for (int i = KetQua.N - 1; i >= 0; i--) { KetQua[i] = c * KetQua[i + 1] + this[i + 1]; } SoDu = c * KetQua[0] + this[0]; }
public DaThuc Tru(DaThuc B) { DaThuc lon = null; DaThuc be = null; kiemTraCapDo(this, B, ref lon, ref be); DaThuc C; if (lon == this) { C = this.Copy(); C = C.Cong(B.Copy().DoiDau()); } else { C = B.Copy().DoiDau(); C = C.Cong(this); } return(C); }
public DaThuc Lagrange() { var length = bangSo.N; var D1y = new MaTran(1, length); for (int i = 0; i < length; i++) { D1y[0, i] = 1; } for (int i = 0; i < length; i++) { for (int j = 0; j < length; j++) { if (i == j) { continue; } D1y[0, i] *= bangSo[0, i] - bangSo[0, j]; } D1y[0, i] = bangSo[1, i] / D1y[0, i]; } var ketQua = new DaThuc(); for (int i = 0; i < length; i++) { var temp = new DaThuc(); temp[0] = 1; for (int j = 0; j < length; j++) { if (i == j) { continue; } var temp2 = new DaThuc(); temp2[1] = 1; temp2[0] = -bangSo[0, j]; temp = temp.NhanVoiDaThucBac1(temp2); } temp = temp * D1y[0, i]; ketQua = ketQua + temp; } return ketQua; }
public DaThuc ChiaChoDaThucBac1(DaThuc B, ref double soDu) { if (B.N > 1) { throw new Exception("Bậc của đa thức chia lớn hơn 1"); } if (B[1] == 0) { return(this / B[0]); } var biChia = this.Copy(); if (B[1] != 1) { biChia = biChia / B[1]; B = B / B[1]; } DaThuc ketQua = null; biChia.Horner(-B[0], ref ketQua, ref soDu); return(ketQua); }
public DaThuc Copy() { var B = new DaThuc(); for (int i = 0; i < N + 1; i++) { B[i] = this[i]; } return B; }
public DaThuc DaoHam() { var ketQua = new DaThuc(); for (int i = 0; i < N; i++) { ketQua[i] = this[i + 1] * (i + 1); } return ketQua; }
public DaThuc DoiDau() { var C = new DaThuc(); for (int i = 0; i < N + 1; i++) { C[i] = -this[i]; } return C; }
public DaThuc Tru(DaThuc B) { DaThuc lon = null; DaThuc be = null; kiemTraCapDo(this, B, ref lon, ref be); DaThuc C; if (lon == this) { C = this.Copy(); C = C.Cong(B.Copy().DoiDau()); } else { C = B.Copy().DoiDau(); C = C.Cong(this); } return C; }
public DaThuc Cong(DaThuc B) { DaThuc lon = null; DaThuc be = null; kiemTraCapDo(this, B, ref lon, ref be); DaThuc C = lon.Copy(); for (int i = 0; i < be.N + 1; i++) { C[i] += be[i]; } return C; }
static DaThuc PhepTinhVoiSo(DaThuc A, phepTinhVoiSo phepTinh) { var B = A.Copy(); for (int i = 0; i < A.N + 1; i++) { double temp = B[i]; phepTinh(ref temp); B[i] = temp; } return B; }
public DaThuc NewtonTongQuat() { var length = bangSo.N; var bangTiHieu = new MaTran(length, length); for (int i = 0; i < length; i++) { bangTiHieu[i, 0] = bangSo[1, i]; } for (int i = 1; i < length; i++) { for (int j = 0; j < length - i; j++) { var tuSo = bangTiHieu[j + 1, i - 1] - bangTiHieu[j, i - 1]; var mauSo = bangSo[0, j + i] - bangSo[0, j]; bangTiHieu[j, i] = tuSo / mauSo; } } var ketQua = new DaThuc(); ketQua[0] = bangTiHieu[0, 0]; for (int i = 0; i < length - 1; i++) { var temp = new DaThuc(); temp[0] = 1; for (int j = 0; j < i+1; j++) { var temp2 = new DaThuc(); temp2[1] = 1; temp2[0] = -bangSo[0, j]; temp = temp.NhanVoiDaThucBac1(temp2); } temp = temp * bangTiHieu[0,i+1]; ketQua = ketQua + temp; } return ketQua; }
public DaThuc ChiaChoDaThucBac1(DaThuc B, ref double soDu) { if (B.N > 1) { throw new Exception("Bậc của đa thức chia lớn hơn 1"); } if (B[1] == 0) { return this / B[0]; } var biChia = this.Copy(); if (B[1] != 1) { biChia = biChia / B[1]; B = B / B[1]; } DaThuc ketQua = null; biChia.Horner(-B[0], ref ketQua, ref soDu); return ketQua; }
public DaThuc NhanVoiDaThucBac1(DaThuc B) { if (B.N > 1) { throw new Exception("Bậc của đa thức nhân lớn hơn 1"); } if (B[1] == 0) { return this * B[0]; } var goc = this.Copy(); if (B[1] != 1) { goc = goc * B[1]; B = B / B[1]; } var ketQua = new DaThuc(); ketQua[0] = B[0] * goc[0]; for (int i = 1; i < goc.N + 1; i++) { ketQua[i] = goc[i - 1] + B[0] * goc[i]; } ketQua[goc.N + 1] = goc[goc.N]; return ketQua; }