Advertisement
maxlarin2

Lagranzh

Nov 29th, 2014
533
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.53 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7.  
  8. namespace interpolationLagranzh
  9. {
  10.     class Program
  11.     {
  12.         static double func(double x)
  13.         {
  14.             return Math.Log(x)+Math.Cosh(Math.Atan(x));
  15.         }
  16.         static double InterpolateLagrange(double x, double[] x_values, double[] y_values, int size)
  17.         {
  18.             double lagrange_pol = 0;
  19.             double basics_pol;
  20.  
  21.             for (int i = 0; i < size; i++)
  22.             {
  23.                 basics_pol = 1;
  24.                 for (int j = 0; j < size; j++)
  25.                 {
  26.                     if (j == i) continue;
  27.                     basics_pol *= ((x - x_values[j]) / (x_values[i] - x_values[j]));
  28.                 }
  29.                 lagrange_pol += (basics_pol * y_values[i]);
  30.             }
  31.             return lagrange_pol;
  32.         }
  33.         static string pathIn = @"F:\ИТМО\2 курс\ВМ\interpolationLagranzh\interpolationLagranzh\IO\input.txt";
  34.         //static string pathOut = @"F:\ИТМО\2 курс\ВМ\interpolationLagranzh\interpolationLagranzh\IO\output.xlx";
  35.         static int n = 10;
  36.         static double[] x = new double[n];
  37.         static double[] y = new double[n];
  38.         static void Main(string[] args)
  39.         {
  40.             #region Writer
  41.             using (StreamWriter sw = new StreamWriter(pathIn))
  42.             {
  43.                 for (int i = 1; i <= n; i++)
  44.                 {
  45.                     sw.WriteLine(i + "\t" + func(i));
  46.                 }
  47.             }
  48.             #endregion
  49.             #region Reader
  50.             using (StreamReader sr = new StreamReader(pathIn))
  51.             {
  52.                 for (int i = 1; i <= n; i++)
  53.                 {
  54.                     string[] s = sr.ReadLine().Split('\t');
  55.                     x[i - 1] = double.Parse(s[0]);
  56.                     y[i - 1] = double.Parse(s[1]);
  57.                    
  58.                 }
  59.             }
  60.             #endregion
  61.                 for (double i = 1; i <= 10; i += 0.1)
  62.                 {
  63.                     double InterpolateLagrange_ans = InterpolateLagrange(i, x, y, n);
  64.                     double theory = func(i);
  65.                     Console.WriteLine("x = {0:0.0}  Lagr ={1:0.000000} Correct = {2:0.000000} delta = {3}", i, InterpolateLagrange_ans, func(i), (InterpolateLagrange_ans - theory));
  66.                 }
  67.            
  68.                
  69.                    
  70.                        
  71.                 Console.ReadKey();
  72.         }
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement