﻿<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://v.michm.ru/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://v.michm.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%B0%D0%BB%D0%B0%D0%B9%D1%87%D0%B5%D0%B2_N1</id>
		<title>Калайчев N1 - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://v.michm.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%B0%D0%BB%D0%B0%D0%B9%D1%87%D0%B5%D0%B2_N1"/>
		<link rel="alternate" type="text/html" href="http://v.michm.ru/index.php?title=%D0%9A%D0%B0%D0%BB%D0%B0%D0%B9%D1%87%D0%B5%D0%B2_N1&amp;action=history"/>
		<updated>2026-05-14T07:57:33Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.23</generator>

	<entry>
		<id>http://v.michm.ru/index.php?title=%D0%9A%D0%B0%D0%BB%D0%B0%D0%B9%D1%87%D0%B5%D0%B2_N1&amp;diff=20433&amp;oldid=prev</id>
		<title>Калайчев Глеб: Новая страница: «//============================================================================ // Name        : bigDataLab_1.cpp // Author      : Gleb // Version     : // Copyrig…»</title>
		<link rel="alternate" type="text/html" href="http://v.michm.ru/index.php?title=%D0%9A%D0%B0%D0%BB%D0%B0%D0%B9%D1%87%D0%B5%D0%B2_N1&amp;diff=20433&amp;oldid=prev"/>
				<updated>2019-06-03T19:43:42Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «//============================================================================ // Name        : bigDataLab_1.cpp // Author      : Gleb // Version     : // Copyrig…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;//============================================================================&lt;br /&gt;
// Name        : bigDataLab_1.cpp&lt;br /&gt;
// Author      : Gleb&lt;br /&gt;
// Version     :&lt;br /&gt;
// Copyright   : Your copyright notice&lt;br /&gt;
// Description : Hello World in C++, Ansi-style&lt;br /&gt;
//============================================================================&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
int const numVar = 2;&lt;br /&gt;
&lt;br /&gt;
void importData (int *x1, int *x2, double *y, int size) {&lt;br /&gt;
	ifstream file (&amp;quot;data.txt&amp;quot;, ios::out);&lt;br /&gt;
	string str;&lt;br /&gt;
&lt;br /&gt;
	int count = 0, index = 0;&lt;br /&gt;
		while (getline(file, str)) {&lt;br /&gt;
			string substr = &amp;quot;&amp;quot;;&lt;br /&gt;
			count = 0;&lt;br /&gt;
			for (unsigned int i = 0; i &amp;lt; str.length(); i++) {&lt;br /&gt;
				if ((int)str[i] != 9) {&lt;br /&gt;
					substr += str[i];&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					count++;&lt;br /&gt;
					switch (count) {&lt;br /&gt;
						case 1:&lt;br /&gt;
							index = atoi(substr.c_str());&lt;br /&gt;
							break;&lt;br /&gt;
						case 2:&lt;br /&gt;
							x1[index - 1] = atoi(substr.c_str());&lt;br /&gt;
							break;&lt;br /&gt;
						case 3:&lt;br /&gt;
							x2[index -1] = atoi(substr.c_str());&lt;br /&gt;
							break;&lt;br /&gt;
						default:&lt;br /&gt;
							break;&lt;br /&gt;
					}&lt;br /&gt;
					substr = &amp;quot;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			index &amp;lt;= size ? y[index - 1]= atof(substr.c_str()) : index = 0;&lt;br /&gt;
		}&lt;br /&gt;
		file.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
double** allocationMatrix (double **x, int dim1, int dim2) {&lt;br /&gt;
	x = new double*[dim1];&lt;br /&gt;
	for (int i = 0; i &amp;lt; dim1; i++) {&lt;br /&gt;
		x[i] = new double[dim2];&lt;br /&gt;
	}&lt;br /&gt;
	return x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void transposeMatrix (double **x, double **xT, int dim1, int dim2) {&lt;br /&gt;
	for (int i = 0; i &amp;lt; dim1; i++)&lt;br /&gt;
		for (int j = 0; j &amp;lt; dim2; j++)&lt;br /&gt;
			xT[j][i] = x[i][j];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void multiplicationMatrix (double **x, double **y, double **c, int dimX1, int dimY2, int dimCommon) {&lt;br /&gt;
&lt;br /&gt;
	for (int i = 0; i &amp;lt; dimX1; i++) {&lt;br /&gt;
		for (int j = 0; j &amp;lt; dimY2; j++) {&lt;br /&gt;
			for (int e = 0; e &amp;lt; dimCommon; e++) {&lt;br /&gt;
				c[i][j] += x[i][e] * y[e][j];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void reverseMatrix (double **x, int size) {&lt;br /&gt;
	double **e = allocationMatrix(e, size, size);&lt;br /&gt;
	double a = 0;&lt;br /&gt;
&lt;br /&gt;
	for (int i = 0; i &amp;lt; size; i++)&lt;br /&gt;
		for (int j = 0; j &amp;lt; size; j++) i == j ? e[i][j] = 1 : e[i][j] = 0;&lt;br /&gt;
&lt;br /&gt;
	for(int i = 0; i &amp;lt; size; i++){&lt;br /&gt;
&lt;br /&gt;
		a = x[i][i];&lt;br /&gt;
		for(int j = 0 ; j &amp;lt; size; j++){&lt;br /&gt;
			x[i][j] /= a;&lt;br /&gt;
			e[i][j] /= a;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		for (int k = i + 1; k &amp;lt; size; k++ ){&lt;br /&gt;
&lt;br /&gt;
			a = x[k][i];&lt;br /&gt;
			for(int j = 0; j &amp;lt; size; j++){&lt;br /&gt;
				x[k][j] -= x[i][j] * a;&lt;br /&gt;
				e[k][j] -= e[i][j] * a;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(int i = size - 1; i &amp;gt;0; i--){&lt;br /&gt;
		for(int j = i - 1; j &amp;gt;= 0; j--){&lt;br /&gt;
&lt;br /&gt;
			a = x[j][i];&lt;br /&gt;
			for(int k = 0; k &amp;lt; size; k++){&lt;br /&gt;
				x[j][k] -= x[i][k] * a;&lt;br /&gt;
				e[j][k] -= e[i][k] * a;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for (int i = 0; i &amp;lt; size; i++)&lt;br /&gt;
		for (int j = 0; j &amp;lt; size; j++)&lt;br /&gt;
			x[i][j] = e[i][j];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
double** mnk1 (int *x1matrix, int *x2matrix, double *ymatrix, int N) {&lt;br /&gt;
	double x1 = 0, x2 = 0, y = 0, yx1 = 0, x12 = 0, x11 = 0, yx2 = 0, x22 = 0;&lt;br /&gt;
	double **B = allocationMatrix(B, numVar + 1, 1);&lt;br /&gt;
&lt;br /&gt;
	for (int i = 0; i &amp;lt; N; i++) {&lt;br /&gt;
			x1 += x1matrix[i];&lt;br /&gt;
			x2 += x2matrix[i];&lt;br /&gt;
			y += ymatrix[i];&lt;br /&gt;
			yx1 += x1matrix[i]*ymatrix[i];&lt;br /&gt;
			x12 += x1matrix[i]*x2matrix[i];&lt;br /&gt;
			x11 += x1matrix[i]*x1matrix[i];&lt;br /&gt;
			yx2 += x2matrix[i]*ymatrix[i];&lt;br /&gt;
			x22 += x2matrix[i]*x2matrix[i];&lt;br /&gt;
	}&lt;br /&gt;
	x1 /= N, x2 /= N, y /= N, yx1 /= N, x12 /= N, x11 /= N, yx2 /= N, x22 /= N;&lt;br /&gt;
&lt;br /&gt;
	B[2][0] = ((yx2 - y*x2)*(x1*x1 - x11) + (y*x1 - yx1)*(x1*x2 - x12))/(-2*x2*x1*x12+x12*x12 + x2*x2*x11 + x22*x1*x1 - x22*x11);&lt;br /&gt;
	B[1][0] = (y*x1 - yx1 - B[2][0]*(x2*x1 - x12))/(x1*x1 - x11);&lt;br /&gt;
	B[0][0] = y - B[1][0]*x1 - B[2][0]*x2;&lt;br /&gt;
&lt;br /&gt;
	return B;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
double** mnk2 (int *x1, int *x2, double *y, int size) {&lt;br /&gt;
&lt;br /&gt;
	double **x = allocationMatrix(x, size, numVar + 1);&lt;br /&gt;
	double **yMatrix = allocationMatrix(yMatrix, size, 1);&lt;br /&gt;
	double **xT = allocationMatrix(xT, numVar + 1, size);&lt;br /&gt;
	double **x_xT = allocationMatrix(x_xT, numVar + 1, numVar + 1);&lt;br /&gt;
	double **x_xT_xT = allocationMatrix(x_xT_xT, numVar + 1, size);&lt;br /&gt;
	double **B = allocationMatrix(B, numVar + 1, 1);&lt;br /&gt;
&lt;br /&gt;
	for (int i = 0; i &amp;lt; size; i++) {&lt;br /&gt;
		x[i][0] = 1;&lt;br /&gt;
		x[i][1] = x1[i];&lt;br /&gt;
		x[i][2] = x2[i];&lt;br /&gt;
		yMatrix[i][0] = y[i];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	transposeMatrix(x, xT, size, numVar + 1);&lt;br /&gt;
	multiplicationMatrix(xT, x, x_xT, numVar + 1, numVar + 1, size);&lt;br /&gt;
	reverseMatrix(x_xT, numVar + 1);&lt;br /&gt;
	multiplicationMatrix(x_xT, xT, x_xT_xT, numVar + 1, size, numVar + 1);&lt;br /&gt;
	multiplicationMatrix(x_xT_xT, yMatrix, B, numVar + 1, 1, size);&lt;br /&gt;
&lt;br /&gt;
	return B;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void regression (int *x1, int *x2, double *y, int N) {&lt;br /&gt;
	double m1x1 = 0, m2x1 = 0, sigmaX1 = 0;&lt;br /&gt;
	double m1x2 = 0, m2x2 = 0, sigmaX2 = 0;&lt;br /&gt;
&lt;br /&gt;
	double m1y = 0, m2y = 0, sigmaY = 0;&lt;br /&gt;
	double rx1y = 0, rx2y = 0;&lt;br /&gt;
&lt;br /&gt;
	for (int i = 0; i &amp;lt; N; i++) {&lt;br /&gt;
		m1x1 += x1[i];&lt;br /&gt;
		m1x2 += x2[i];&lt;br /&gt;
		m1y += y[i];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	m1x1 /= N, m1x2 /= N, m1y /= N;&lt;br /&gt;
&lt;br /&gt;
	for (int i = 0; i &amp;lt; N; i++) {&lt;br /&gt;
		m2x1 += (x1[i] - m1x1)*(x1[i] - m1x1);&lt;br /&gt;
		m2x2 += (x2[i] - m1x2)*(x2[i] - m1x2);&lt;br /&gt;
		m2y += (y[i] - m1y)*(y[i] - m1y);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	m2x1 /= (N - 1), m2x2 /= (N - 1), m2y /= (N - 1);&lt;br /&gt;
&lt;br /&gt;
	sigmaX1 = pow(m2x1, 0.5), sigmaX2 = pow(m2x2, 0.5), sigmaY = pow(m2y, 0.5);&lt;br /&gt;
&lt;br /&gt;
	for (int i = 0; i &amp;lt; N; i++) {&lt;br /&gt;
		rx1y += (x1[i] - m1x1)*(y[i] - m1y);&lt;br /&gt;
		rx2y += (x2[i] - m2x2)*(y[i] - m1y);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	rx1y /= (N*sigmaX1*sigmaY);&lt;br /&gt;
	rx2y /= (N*sigmaX2*sigmaY);&lt;br /&gt;
&lt;br /&gt;
	double b1 = rx1y*sigmaY/sigmaX1;&lt;br /&gt;
	double b2 = rx2y*sigmaY/sigmaX2;&lt;br /&gt;
&lt;br /&gt;
	double b1x1 = 0, b2x2 = 0;&lt;br /&gt;
	for (int i = 0; i &amp;lt; N; i++) {&lt;br /&gt;
		b1x1 += b1*x1[i];&lt;br /&gt;
		b2x2 += b2*x2[i];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	double b0 = m2y - b1x1 - b2x2;&lt;br /&gt;
	cout &amp;lt;&amp;lt; b1*x1[0] + b2*x2[0] + b0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
	int N = 49;&lt;br /&gt;
	int *x1 = new int[N];&lt;br /&gt;
	int *x2 = new int[N];&lt;br /&gt;
	double *Y = new double[N];&lt;br /&gt;
&lt;br /&gt;
	double **Bmnk1 = allocationMatrix(Bmnk1, numVar + 1, 1);&lt;br /&gt;
	double **Bmnk2 = allocationMatrix(Bmnk2, numVar + 1, 1);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	importData(x1, x2, Y, N);&lt;br /&gt;
	Bmnk1 = mnk1(x1, x2, Y, N);&lt;br /&gt;
	Bmnk2 = mnk2 (x1, x2, Y, N);&lt;br /&gt;
&lt;br /&gt;
	regression(x1, x2, Y, N);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Калайчев Глеб</name></author>	</entry>

	</feed>