Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.45 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.  
  7. namespace igorgay
  8. {
  9.     class Program
  10.     {
  11.         static double a11, a12, a13, a22, a23, a33,
  12.                       a14, a24, a34;
  13.  
  14.         static List<double> FSHTR(List<double> X)
  15.             => new List<double>()
  16.             {
  17.                 a14+a11*X[0] + a12*X[1] + a13*X[2],
  18.                 a24+a22*X[1] + a12*X[0] + a23*X[2],
  19.                 a34+a33*X[2] + a13*X[0] + a23*X[1]
  20.             };
  21.  
  22.         static List<double> H(List<double> X)
  23.             => new List<double>()
  24.             {
  25.                 a11*X[0]+a12*X[1]+a13*X[2],
  26.                 a12*X[0]+a22*X[1]+a23*X[2],
  27.                 a13*X[0]+a23*X[1]+a33*X[2]
  28.             };
  29.  
  30.         static List<double> Add(List<double> x, List<double> y)
  31.             => new List<double>()
  32.             {
  33.                 x[0]+y[0],
  34.                 x[1]+y[1],
  35.                 x[2]+y[2]
  36.             };
  37.  
  38.         static List<double> Subs(List<double> x, List<double> y)
  39.             => new List<double>()
  40.             {
  41.                 x[0]-y[0],
  42.                 x[1]-y[1],
  43.                 x[2]-y[2]
  44.             };
  45.  
  46.         static List<double> DecMult(double x, List<double> y)
  47.             => new List<double>()
  48.             {
  49.                 x*y[0],
  50.                 x*y[1],
  51.                 x*y[2]
  52.             };
  53.  
  54.         static double ScalMult(List<double> x, List<double> y)
  55.             => x[0]*y[0] +
  56.                 x[1]*y[1] +
  57.                 x[2]*y[2];
  58.  
  59.         static double NORM(List<double> x)
  60.             => Math.Sqrt(ScalMult(x, x));
  61.  
  62.         static void Main(string[] args)
  63.         {
  64.             a11 = 1.2775; a12 = 0.9314; a13 = 0.5983; a22 = 0.9925; a23 = 0.1963; a33 = 0.7299;
  65.             a14 = -1.5337; a24 = -1.1257; a34 = -0.8848;
  66.             var e = 0.000001;
  67.  
  68.             var x_k = new List<double>() { 0, 0, 0 };
  69.             var x_k_1 = new List<double>() { 0, 0, 0 };
  70.             var h_k = new List<double>() { 0, 0, 0 };
  71.             var lambda = 0.0;
  72.             do
  73.             {
  74.                 x_k_1 = x_k;
  75.  
  76.                 h_k = DecMult(-1, FSHTR(x_k_1));
  77.  
  78.                 lambda = ScalMult(FSHTR(x_k_1), h_k) / ScalMult(h_k, H(h_k));
  79.  
  80.                 x_k = Add(x_k, DecMult(lambda, h_k));
  81.                
  82.  
  83.             } while (NORM(Subs(x_k, x_k_1)) > e);
  84.             Console.WriteLine(string.Join(", ", x_k_1));
  85.         }
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement