Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace igorgay
- {
- class Program
- {
- static double a11, a12, a13, a22, a23, a33,
- a14, a24, a34;
- static List<double> FSHTR(List<double> X)
- => new List<double>()
- {
- a14+a11*X[0] + a12*X[1] + a13*X[2],
- a24+a22*X[1] + a12*X[0] + a23*X[2],
- a34+a33*X[2] + a13*X[0] + a23*X[1]
- };
- static List<double> H(List<double> X)
- => new List<double>()
- {
- a11*X[0]+a12*X[1]+a13*X[2],
- a12*X[0]+a22*X[1]+a23*X[2],
- a13*X[0]+a23*X[1]+a33*X[2]
- };
- static List<double> Add(List<double> x, List<double> y)
- => new List<double>()
- {
- x[0]+y[0],
- x[1]+y[1],
- x[2]+y[2]
- };
- static List<double> Subs(List<double> x, List<double> y)
- => new List<double>()
- {
- x[0]-y[0],
- x[1]-y[1],
- x[2]-y[2]
- };
- static List<double> DecMult(double x, List<double> y)
- => new List<double>()
- {
- x*y[0],
- x*y[1],
- x*y[2]
- };
- static double ScalMult(List<double> x, List<double> y)
- => x[0]*y[0] +
- x[1]*y[1] +
- x[2]*y[2];
- static double NORM(List<double> x)
- => Math.Sqrt(ScalMult(x, x));
- static void Main(string[] args)
- {
- a11 = 1.2775; a12 = 0.9314; a13 = 0.5983; a22 = 0.9925; a23 = 0.1963; a33 = 0.7299;
- a14 = -1.5337; a24 = -1.1257; a34 = -0.8848;
- var e = 0.000001;
- var x_k = new List<double>() { 0, 0, 0 };
- var x_k_1 = new List<double>() { 0, 0, 0 };
- var h_k = new List<double>() { 0, 0, 0 };
- var lambda = 0.0;
- do
- {
- x_k_1 = x_k;
- h_k = DecMult(-1, FSHTR(x_k_1));
- lambda = ScalMult(FSHTR(x_k_1), h_k) / ScalMult(h_k, H(h_k));
- x_k = Add(x_k, DecMult(lambda, h_k));
- } while (NORM(Subs(x_k, x_k_1)) > e);
- Console.WriteLine(string.Join(", ", x_k_1));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement