void dataToHPT(List <List <double> > data) { var A = new List <List <double> >(); var B = new List <List <double> >(); foreach (var line in data) { var lineA = new List <double>(); var lineB = new List <double>(); for (int i = 0; i < line.Count; i++) { if (i == line.Count - 1) { lineB.Add(line[i]); } else { lineA.Add(line[i]); } } A.Add(lineA); B.Add(lineB); } MT = new MaTran(A); MT.MTGhep = new MaTran(B); }
static void Main(string[] args) { var a = new MaTran(@"MaTran\a.txt"); var b = new MaTran(@"MaTran\b.txt"); Console.WriteLine((a * b).ToString()); Console.ReadKey(); }
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 MaTran Tong() { MaTran t = new MaTran(); for (int i = 0; i < somt; i++) { t = t.Tong(ds[i]); } return(t); }
public Nghiem LapJacobi(double dkDung) { var mt = MT.Copy(); if (mt.M != mt.N) { throw new Exception("Không phải ma trận vuông"); } if (!mt.isMaTranCheoTroi) { throw new Exception("Không phải ma trận chéo trội"); } var a = new MaTran(mt.M, mt.N); var b = new MaTran(mt.M, 1); for (int i = 0; i < a.M; i++) { for (int j = 0; j < a.N; j++) { if (j == i) { a[i, j] = 0; continue; } a[i, j] = -mt[i, j] / mt[i, i]; } b[i, 0] = mt.MTGhep[i, 0] / mt[i, i]; } var cstt = Function.ChuSoTinTuong(dkDung); dkDung = dkDung - 0.5 * Math.Pow(10, -cstt); double cvc = a.ChuanVoCung; var x = new Nghiem(Status.NghiemDuyNhat, mt.M); var x0 = x.Copy(); var x1 = a * x0 + b; var soPhepLap = Math.Ceiling( Math.Log(dkDung * (1 - cvc) / (x1 - x0).ChuanVoCung) / Math.Log(cvc) ); for (int i = 0; i < soPhepLap; i++) { x = new Nghiem(a * x1 + b); x1 = x.Copy(); } for (int i = 0; i < x.M; i++) { x[i, 0] = Math.Round(x[i, 0], cstt); } return(x); }
public Nghiem(MaTran mt) : base(mt) { if (mt.M != 0) { if (mt.N > 1) { status = Status.VoSoNghiem; } else { status = Status.NghiemDuyNhat; } } }
public MaTran Tong(MaTran t2) { MaTran t = new MaTran(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { t.a[i, j] = this.a[i, j] + t2.a[i, j]; } } return(t); }
public MaTranHieu(MaTrant2) { if (this.sh == t2.sh && this.sc == t2.sc) { MaTran t = new MaTran(this.sh, this.sc); for (int i = 0; i < sh; i++) { for (int j = 0; j < sc; j++) { t.a[i, j] = this.a[i, j] - t2.a[i, j]; } } return(t); } else { return(null); } }
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 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 void Nhap() { Console.Write("Nhap cap ma tran: "); MaTran.N = int.Parse(Console.ReadLine()); Console.Write("Nhap so ma tran: "); somt = int.Parse(Console.ReadLine()); ds = new MaTran[somt]; for (int i = 0; i < somt; i++) { Console.WriteLine("Nhap ma tran thu " + i); ds[i] = new MaTran(); ds[i].Nhap(); } }
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); }
void dataToHPT(List<List<double>> data) { var A = new List<List<double>>(); var B = new List<List<double>>(); foreach (var line in data) { var lineA = new List<double>(); var lineB = new List<double>(); for (int i = 0; i < line.Count; i++) { if (i == line.Count - 1) { lineB.Add(line[i]); } else { lineA.Add(line[i]); } } A.Add(lineA); B.Add(lineB); } MT = new MaTran(A); MT.MTGhep = new MaTran(B); }
public Nghiem LapJacobi(double dkDung) { var mt = MT.Copy(); if (mt.M != mt.N) { throw new Exception("Không phải ma trận vuông"); } if (!mt.isMaTranCheoTroi) { throw new Exception("Không phải ma trận chéo trội"); } var a = new MaTran(mt.M, mt.N); var b = new MaTran(mt.M, 1); for (int i = 0; i < a.M; i++) { for (int j = 0; j < a.N; j++) { if (j == i) { a[i, j] = 0; continue; } a[i, j] = -mt[i, j] / mt[i, i]; } b[i, 0] = mt.MTGhep[i, 0] / mt[i, i]; } var cstt = Function.ChuSoTinTuong(dkDung); dkDung = dkDung - 0.5 * Math.Pow(10, -cstt); double cvc = a.ChuanVoCung; var x = new Nghiem(Status.NghiemDuyNhat, mt.M); var x0 = x.Copy(); var x1 = a * x0 + b; var soPhepLap = Math.Ceiling( Math.Log(dkDung * (1 - cvc) / (x1 - x0).ChuanVoCung) / Math.Log(cvc) ); for (int i = 0; i < soPhepLap; i++) { x = new Nghiem(a * x1 + b); x1 = x.Copy(); } for (int i = 0; i < x.M; i++) { x[i, 0] = Math.Round(x[i, 0], cstt); } return x; }
public DaThucNoiSuy(string file) { bangSo = new MaTran(file); }