public void ChordMethod(double x1, double x2, CurrentFucntion function) { int iii = 0; int N = 1000; double k = Math.Abs(function(x1) / function(x2)); double xmid = (x1 + (k * x2)) / (1 + k); while (Math.Abs(function(xmid)) > precisionPoint && iii <= N) { if (DifferentSign(function(x1), function(xmid), function)) { x2 = xmid; } else { x1 = xmid; } k = Math.Abs(function(x1) / function(x2)); xmid = (x1 + k * x2) / (1 + k); iii = iii + 1; } richTextBox1.AppendText(String.Format(" {0,6:d} {1,12:f7} {2,12:f7} {3,12:f7} {4,12:f7} {5,12:f7} {6,12:f7}\n", iii, xmid, function(xmid), x1, x2, function(x1), function(x2))); CHORDS.Points.AddXY(xmid, 0); }
private void FormInitializer(float x1, float x2, CurrentFucntion function, string functionName) { ClearForm(); // išvalomi programos duomenys PreparareForm(-5, 5, -10, 10); SeriesInitializer(); this.x1 = x1; // izoliacijos intervalo pradžia this.x2 = x2; // izoliacijos intervalo galas xstep = 0.1F; richTextBox1.AppendText("Iteracija x F(x) x1 x2 F(x1) F(x2) \n"); double x = -50; for (int i = 0; i < 5000; i++) { FNC.Points.AddXY(x, function(x)); x = x + (2 * Math.PI) / 50; //Console.WriteLine("x->{0}",x); Console.WriteLine("F(x)->{0}", function(x)); } FNC.BorderWidth = 2; }
public void NewtonMethod(double x1, double x2, CurrentFucntion function, CurrentFucntionD functionD) { int iii = 0; int N = 1000; double answer = x1; double step = function(answer) / functionD(x1); while (Math.Abs(function(answer)) > precisionPoint && iii <= N) { step = step = function(answer) / functionD(x1); answer -= step; iii++; } richTextBox1.AppendText(String.Format(" {0,6:d} {1,12:f7} {2,12:f7}\n", iii, answer, function(answer))); NEWTON.Points.AddXY(answer, 0); }
// ---------------------------------------------- KITI METODAI ---------------------------------------------- /// <summary> /// Nustotoma ar f(num1) ir f(num2) ženklai yra skirtingi /// </summary> private bool DifferentSign(double num1, double num2, CurrentFucntion function) { return(Math.Sign((double)function(num1)) != Math.Sign((double)function(num2))); }
public void DecreasingIntervalMethod(double xstart, double xend, double step, CurrentFucntion function) { if (found) { return; } if (Math.Abs(Math.Abs(function(xstart + step)) - (Math.Abs(function(xstart)))) > precisionPoint) { for (double i = xstart; i < xend; i += step) { itterations++; if (DifferentSign(i, i + step, function)) { DecreasingIntervalMethod(i, i + step, step / 5, function); } } } else { found = true; if (found) { richTextBox1.AppendText(String.Format(" {0,6:d} {1,12:f7} {2,12:f7} {3,12:f7} {4,12:f7} {5,12:f7} {6,12:f7}\n", itterations, xstart + (step / 2), function(xstart + (step / 2)), xstart, xend, function(xstart), function(xend))); ITTERATION.Points.AddXY(xstart, 0); ITTERATION.Points.AddXY(xstart + step, 0); } } }