Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void task3()
- {
- Console.Write("Введите левую и правую границы интервала, шаг и точность (через пробел): ");
- string[] tokens = Console.ReadLine().Split(' ');
- double xL, xR, dx, e;
- double[] taylor = new double[2];
- try
- {
- xL = Convert.ToDouble(tokens[0]);
- xR = Convert.ToDouble(tokens[1]);
- dx = Convert.ToDouble(tokens[2]);
- e = Convert.ToDouble(tokens[3]);
- Console.WriteLine("x y(точн) y(прибл) n");
- if (xL > xR)
- {
- Console.WriteLine("Левая граница не должна превышать правую границу");
- } else if ((xL <= -1) || (xR > 1))
- {
- Console.WriteLine("Левая граница должна быть больше 1, а правая - не превышать 1");
- } else
- {
- for (double x = xL; x <= xR; x += dx)
- {
- Console.Write(x + " ");
- Console.Write(Math.Log(x + 1) + " ");
- Console.Write(taylorSerie(x, e)[0]+" ");
- taylor = taylorSerie(x, e);
- Console.Write(taylor[0] + " ");
- Console.WriteLine(taylor[1]);
- }
- }
- } catch (Exception err)
- {
- Console.WriteLine(err.StackTrace);
- }
- }
- static double[] taylorSerie(double x, double e)
- {
- double[] data = new double[2];
- data[1] = 2;
- double xi0 = (Math.Pow(-1, 0) * Math.Pow(x, 1)) / 1.0;
- double xi1 = (Math.Pow(-1, 1) * Math.Pow(x, 2)) / 2.0;
- data[0] = xi0 + xi1;
- int n = 2;
- while(Math.Abs(xi1-xi0) >= e)
- {
- xi0 = (Math.Pow(-1, n) * Math.Pow(x, n+1)) / (n+1);
- xi1 = (Math.Pow(-1, n+1) * Math.Pow(x, n+2)) / (n+2);
- data[0] += xi0 + xi1;
- data[1] += 2;
- n += 2;
- }
- return data;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement