Kod programu

background image

Kod programu

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
//using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Ekonometria
{
public partial class Form1 : Form
{
//int[] grf;

double[,] zmienne;//= new Double[10, 5];
double[] macierz_R0;//= new Double[4];//??
double[,] macierz_R;//= new Double[4, 4];
double[] det_macierz_R;
double[,] macierz_tmp; // macierz tymczasowa R*
double[,] macierz_tmp_R; //macierz tymczasowa R
double[] macierz_rw; //macierz wspolczynnikow korelacji rw
double[] det_macierz_M;//macierz wyznacznikow macierzy R*
double[,] wynik_MNK;
//double C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11;//wyznaczniki dla
kombinacji
// double[,] R_wyzerowan;
double[] srednie;
double r_kryt,alfa=0.1;
static int X = 0; //statyczna zmiennna do liczenia wywołań funcji
int l_zmiennych=4, l_obserwacji=10, l_elementow;//???



List<int> indeksy;



public Form1()
{
InitializeComponent();

wyczyscWszystko();
//indeksy.Add(1);
// indeksy.Add(2);
}

background image

private void licz_srednie()
{
srednie = new Double[l_zmiennych+1];
for (int kol = 0; kol < l_zmiennych+1; kol++) //??
{
for (int wiersz = 0; wiersz < l_obserwacji; wiersz++)
srednie[kol] += zmienne[wiersz, kol];
srednie[kol] /= (double)l_obserwacji;
}

}

private double licz_korelacja2()
{
macierz_tmp = new Double[3,3];
macierz_tmp_R = new Double[2,2];
det_macierz_M = new Double[6];
det_macierz_R = new Double[6];

//przekątne macierzy wypełnione 1
for (int i = 0; i < 3; i++)
macierz_tmp[i,i]=1.0;

//wyznaczniki macierz

label10.Text += "Wyznaczniki macierz: " + "\n";
//C1={x1,x2}
macierz_tmp[0, 1] = macierz_R0[0];
macierz_tmp[0, 2] = macierz_R0[1];
macierz_tmp[1, 0] = macierz_R0[0];
macierz_tmp[2, 0] = macierz_R0[1];
macierz_tmp_R[0, 0] = macierz_tmp[1, 1] = macierz_R[0, 0];
macierz_tmp_R[0, 1] = macierz_tmp[1, 2] = macierz_R[0, 1];
macierz_tmp_R[1, 0] = macierz_tmp[2, 1] = macierz_R[1, 0];
macierz_tmp_R[1, 1] = macierz_tmp[2, 2] = macierz_R[1, 1];
det_macierz_M[0] = wyznacznik(macierz_tmp);
det_macierz_R[0] = wyznacznik(macierz_tmp_R);
label10.Text += "C1 = {x1,x2}: " + "\n";
label10.Text += "M1: " + det_macierz_M[0].ToString("0.0000");
label11.Text += "C1 = {x1,x2}: " + "\n";
label10.Text += " R1: " + det_macierz_R[0].ToString("0.0000")
+ "\n";


//C2 = {x1,x3}
macierz_tmp[0, 1] = macierz_R0[0];
macierz_tmp[0, 2] = macierz_R0[2];
macierz_tmp[1, 0] = macierz_R0[0];
macierz_tmp[2, 0] = macierz_R0[2];
macierz_tmp_R[0, 0] = macierz_tmp[1, 1] = macierz_R[0, 0];
macierz_tmp_R[0, 1] = macierz_tmp[1, 2] = macierz_R[0, 2];
macierz_tmp_R[1, 0] = macierz_tmp[2, 1] = macierz_R[2, 0];
macierz_tmp_R[1, 1] = macierz_tmp[2, 2] = macierz_R[2, 2];
det_macierz_M[1] = wyznacznik(macierz_tmp);
det_macierz_R[1] = wyznacznik(macierz_tmp_R);
label10.Text += "C2 = {x1,x3}: " + "\n";
label10.Text += "M2: " + det_macierz_M[1].ToString("0.0000");
label11.Text += "C2 = {x1,x3}: " + "\n";
label10.Text += " R2: " + det_macierz_R[1].ToString("0.0000")
+ "\n";

background image


//C3 = {x1,x4}
macierz_tmp[0, 1] = macierz_R0[0];
macierz_tmp[0, 2] = macierz_R0[3];
macierz_tmp[1, 0] = macierz_R0[0];
macierz_tmp[2, 0] = macierz_R0[3];
macierz_tmp_R[0, 0] = macierz_tmp[1, 1] = macierz_R[0, 0];
macierz_tmp_R[0, 1] = macierz_tmp[1, 2] = macierz_R[0, 3];
macierz_tmp_R[1, 0] = macierz_tmp[2, 1] = macierz_R[3, 0];
macierz_tmp_R[1, 1] = macierz_tmp[2, 2] = macierz_R[3, 3];
det_macierz_M[2] = wyznacznik(macierz_tmp);
det_macierz_R[2] = wyznacznik(macierz_tmp_R);
label10.Text += "C3 = {x1,x4}: " + "\n";
label10.Text += "M3: " + det_macierz_M[2].ToString("0.0000");
label11.Text += "C3 = {x1,x4}: " + "\n";
label10.Text += " R3: " + det_macierz_R[2].ToString("0.0000")
+ "\n";


//C4 = {x2,x3}
macierz_tmp[0, 1] = macierz_R0[1];
macierz_tmp[0, 2] = macierz_R0[2];
macierz_tmp[1, 0] = macierz_R0[1];
macierz_tmp[2, 0] = macierz_R0[2];
macierz_tmp_R[0, 0] = macierz_tmp[1, 1] = macierz_R[1, 1];
macierz_tmp_R[0, 1] = macierz_tmp[1, 2] = macierz_R[1, 2];
macierz_tmp_R[1, 0] = macierz_tmp[2, 1] = macierz_R[2, 1];
macierz_tmp_R[1, 1] = macierz_tmp[2, 2] = macierz_R[2, 2];
det_macierz_M[3] = wyznacznik(macierz_tmp);
det_macierz_R[3] = wyznacznik(macierz_tmp_R);
label10.Text += "C4 = {x2,x3}: " + "\n";
label10.Text += "M4: " + det_macierz_M[3].ToString("0.0000");
label11.Text += "C4 = {x2,x3}: " + "\n";
label10.Text += " R4: " + det_macierz_R[3].ToString("0.0000")
+ "\n";


//C5 = {x2,x4}
macierz_tmp[0, 1] = macierz_R0[1];
macierz_tmp[0, 2] = macierz_R0[3];
macierz_tmp[1, 0] = macierz_R0[1];
macierz_tmp[2, 0] = macierz_R0[3];
macierz_tmp_R[0, 0] = macierz_tmp[1, 1] = macierz_R[1, 1];
macierz_tmp_R[0, 1] = macierz_tmp[1, 2] = macierz_R[1, 3];
macierz_tmp_R[1, 0] = macierz_tmp[2, 1] = macierz_R[3, 1];
macierz_tmp_R[1, 1] = macierz_tmp[2, 2] = macierz_R[3, 3];
det_macierz_M[4] = wyznacznik(macierz_tmp);
det_macierz_R[4] = wyznacznik(macierz_tmp_R);
label10.Text += "C5 = {x2,x4}: " + "\n";
label10.Text += "M5: " + det_macierz_M[4].ToString("0.0000") ;
label11.Text += "C5 = {x2,x4}: " + "\n";
label10.Text += " R5: " + det_macierz_R[4].ToString("0.0000")
+ "\n";


//C6 = {x3,x4}
macierz_tmp[0, 1] = macierz_R0[2];
macierz_tmp[0, 2] = macierz_R0[3];
macierz_tmp[1, 0] = macierz_R0[2];
macierz_tmp[2, 0] = macierz_R0[3];
macierz_tmp_R[0, 0] = macierz_tmp[1, 1] = macierz_R[2, 2];
macierz_tmp_R[0, 1] = macierz_tmp[1, 2] = macierz_R[2, 3];

background image

macierz_tmp_R[1, 0] = macierz_tmp[2, 1] = macierz_R[3, 2];
macierz_tmp_R[1, 1] = macierz_tmp[2, 2] = macierz_R[3, 3];
det_macierz_M[5] = wyznacznik(macierz_tmp);
det_macierz_R[5] = wyznacznik(macierz_tmp_R);
label10.Text += "C6 = {x3,x4}: " + "\n";
label10.Text += "M6: " + det_macierz_M[5].ToString("0.0000");
label11.Text += "C6 = {x3,x4}: " + "\n";
label10.Text += " R6: " + det_macierz_R[5].ToString("0.0000")
+ "\n";

macierz_rw = new Double[6];
double max = 0;
int imax=0;
for (int i = 0; i < 6; i++)
{
//label13.Text += (det_macierz_M[i] /
det_macierz_R[i]).ToString("0.00000") + "\n";
macierz_rw[i] = Math.Sqrt(1-(det_macierz_M[i]/det_macierz_R[i]));
if (macierz_rw[i] > max)
{
max = macierz_rw[i];
imax = i+1;
}
label12.Text += macierz_rw[i].ToString("0.0000") + "\n";
}
label13.Text += "Najwiekszy współczynnik korelacji wielorakiej " +
max.ToString("0.0000") + "\n" + "otrzymany przez zestaw zmiennych objaśniających: C" +
imax;

MNK2(imax);
return max;

}

private double licz_korelacja3()
{
det_macierz_M = new Double[4];
det_macierz_R = new Double[4];

macierz_tmp = new Double[4, 4];
macierz_tmp_R = new Double[3, 3];

for (int i = 0; i < 4; i++)
macierz_tmp[i, i] = 1.0;

label10.Text += "Wyznaczniki macierz: " + "\n";

//C7 = {x1,x2,x3}
macierz_tmp[0, 1] = macierz_R0[0];
macierz_tmp[0, 2] = macierz_R0[1];
macierz_tmp[0, 3] = macierz_R0[2];
macierz_tmp[1, 0] = macierz_R0[0];
macierz_tmp[2, 0] = macierz_R0[1];
macierz_tmp[3, 0] = macierz_R0[2];
macierz_tmp_R[0, 0] = macierz_tmp[1, 1] = macierz_R[0, 0];
macierz_tmp_R[0, 1] = macierz_tmp[1, 2] = macierz_R[0, 1];
macierz_tmp_R[0, 2] = macierz_tmp[1, 3] = macierz_R[0, 2];
macierz_tmp_R[1, 0] = macierz_tmp[2, 1] = macierz_R[1, 0];
macierz_tmp_R[1, 1] = macierz_tmp[2, 2] = macierz_R[1, 1];
macierz_tmp_R[1, 2] = macierz_tmp[2, 3] = macierz_R[1, 2];
macierz_tmp_R[2, 0] = macierz_tmp[3, 1] = macierz_R[2, 0];
macierz_tmp_R[2, 1] = macierz_tmp[3, 2] = macierz_R[2, 1];

background image

macierz_tmp_R[2, 2] = macierz_tmp[3, 3] = macierz_R[2, 2];
det_macierz_M[0] = wyznacznik(macierz_tmp);
det_macierz_R[0] = wyznacznik(macierz_tmp_R);
label10.Text += "C7 = {x1,x2,x3}: " + "\n";
label10.Text += "M7: " + det_macierz_M[0].ToString("0.0000");
label11.Text += "C7 = {x1,x2,x3}: " + "\n";
label10.Text += " R7: " +
det_macierz_R[0].ToString("0.0000") + "\n";

/*for (int j = 0; j < 4; j++)
{
for (int i = 0; i < 4; i++)
{
if (macierz_tmp[j, i] >= 0)
label10.Text += " ";
label10.Text += macierz_tmp[j, i].ToString("0.0000") + " ";
}
label10.Text += "\n";
}*/
//C8 = {x1,x2,x4}
macierz_tmp[0, 1] = macierz_R0[0];
macierz_tmp[0, 2] = macierz_R0[1];
macierz_tmp[0, 3] = macierz_R0[3];
macierz_tmp[1, 0] = macierz_R0[0];
macierz_tmp[2, 0] = macierz_R0[1];
macierz_tmp[3, 0] = macierz_R0[3];
macierz_tmp_R[0, 0] = macierz_tmp[1, 1] = macierz_R[0, 0];
macierz_tmp_R[0, 1] = macierz_tmp[1, 2] = macierz_R[0, 1];
macierz_tmp_R[0, 2] = macierz_tmp[1, 3] = macierz_R[0, 3];
macierz_tmp_R[1, 0] = macierz_tmp[2, 1] = macierz_R[1, 0];
macierz_tmp_R[1, 1] = macierz_tmp[2, 2] = macierz_R[1, 1];
macierz_tmp_R[1, 2] = macierz_tmp[2, 3] = macierz_R[1, 3];
macierz_tmp_R[2, 0] = macierz_tmp[3, 1] = macierz_R[3, 0];
macierz_tmp_R[2, 1] = macierz_tmp[3, 2] = macierz_R[3, 1];
macierz_tmp_R[2, 2] = macierz_tmp[3, 3] = macierz_R[3, 3];
det_macierz_M[1] = wyznacznik(macierz_tmp);
det_macierz_R[1] = wyznacznik(macierz_tmp_R);
label10.Text += "C8 = {x1,x2,x4}: " + "\n";
label10.Text += "M8: " + det_macierz_M[1].ToString("0.0000");
label11.Text += "C8 = {x1,x2,x4}: " + "\n";
label10.Text += " R8: " +
det_macierz_R[1].ToString("0.0000") + "\n";


//C9 = {x2,x3,x4}
macierz_tmp[0, 1] = macierz_R0[1];
macierz_tmp[0, 2] = macierz_R0[2];
macierz_tmp[0, 3] = macierz_R0[3];
macierz_tmp[1, 0] = macierz_R0[1];
macierz_tmp[2, 0] = macierz_R0[2];
macierz_tmp[3, 0] = macierz_R0[3];
macierz_tmp_R[0, 0] = macierz_tmp[1, 1] = macierz_R[1, 1];
macierz_tmp_R[0, 1] = macierz_tmp[1, 2] = macierz_R[1, 2];
macierz_tmp_R[0, 2] = macierz_tmp[1, 3] = macierz_R[1, 3];
macierz_tmp_R[1, 0] = macierz_tmp[2, 1] = macierz_R[2, 1];
macierz_tmp_R[1, 1] = macierz_tmp[2, 2] = macierz_R[2, 2];
macierz_tmp_R[1, 2] = macierz_tmp[2, 3] = macierz_R[2, 3];
macierz_tmp_R[2, 0] = macierz_tmp[3, 1] = macierz_R[3, 1];
macierz_tmp_R[2, 1] = macierz_tmp[3, 2] = macierz_R[3, 2];
macierz_tmp_R[2, 2] = macierz_tmp[3, 3] = macierz_R[3, 3];
det_macierz_M[2] = wyznacznik(macierz_tmp);
det_macierz_R[2] = wyznacznik(macierz_tmp_R);

background image

label10.Text += "C9 = {x2,x3,x4}: " + "\n";
label10.Text += "M9: " + det_macierz_M[2].ToString("0.0000");
label11.Text += "C9 = {x2,x3,x4}: " + "\n";
label10.Text += " R9: " +
det_macierz_R[2].ToString("0.0000") + "\n";


//C10 = {x1,x3,x4}
macierz_tmp[0, 1] = macierz_R0[0];
macierz_tmp[0, 2] = macierz_R0[2];
macierz_tmp[0, 3] = macierz_R0[3];
macierz_tmp[1, 0] = macierz_R0[0];
macierz_tmp[2, 0] = macierz_R0[2];
macierz_tmp[3, 0] = macierz_R0[3];
macierz_tmp_R[0, 0] = macierz_tmp[1, 1] = macierz_R[0, 0];
macierz_tmp_R[0, 1] = macierz_tmp[1, 2] = macierz_R[0, 2];
macierz_tmp_R[0, 2] = macierz_tmp[1, 3] = macierz_R[0, 3];
macierz_tmp_R[1, 0] = macierz_tmp[2, 1] = macierz_R[2, 0];
macierz_tmp_R[1, 1] = macierz_tmp[2, 2] = macierz_R[2, 2];
macierz_tmp_R[1, 2] = macierz_tmp[2, 3] = macierz_R[2, 3];
macierz_tmp_R[2, 0] = macierz_tmp[3, 1] = macierz_R[3, 0];
macierz_tmp_R[2, 1] = macierz_tmp[3, 2] = macierz_R[3, 2];
macierz_tmp_R[2, 2] = macierz_tmp[3, 3] = macierz_R[3, 3];
det_macierz_M[3] = wyznacznik(macierz_tmp);
det_macierz_R[3] = wyznacznik(macierz_tmp_R);
label10.Text += "C10 = {x1,x3,x4}: " + "\n";
label10.Text += "M10: " + det_macierz_M[3].ToString("0.0000");
label11.Text += "C10 = {x1,x3,x4}: " + "\n";
label10.Text += " R10: " +
det_macierz_R[3].ToString("0.0000") + "\n";

macierz_rw = new Double[4];
double max = 0;
int imax = 0;

for (int i = 0; i < 4; i++)
{
//label13.Text += (det_macierz_M[i] /
det_macierz_R[i]).ToString("0.00000") + "\n";
macierz_rw[i] = Math.Sqrt(1 - (det_macierz_M[i] / det_macierz_R[i]));
if (macierz_rw[i] > max)
{
max = macierz_rw[i];
imax = i + 7;
}
label12.Text += macierz_rw[i].ToString("0.0000") + "\n";
}
label13.Text += "Najwiekszy współczynnik korelacji wielorakiej " +
max.ToString("0.0000") + "\n" + "otrzymany przez zestaw zmiennych objaśniających: C" +
imax;


MNK3(imax);
return max;
}

private void MNK2(int zestaw_zmiennych)
{
double[,] Y = new double[l_obserwacji, 1];
double[,] Xt = new double[3, l_obserwacji];
double[,] Xt_X= new double[3, 3];
double[,] Xt_Y = new double[3, 1];

background image

double[,] odworona_Xt_X = new double[3, 3];
wynik_MNK = new Double[3, 1];

int zmienna1=0, zmienna2=0;
double[,] tmp_X = new double[l_obserwacji, 3];

label20.Text += " dla kombinacji zmiennych C" + zestaw_zmiennych;
if (zestaw_zmiennych == 1) //C1 = {x1,x2}
{
zmienna1 = 1;
zmienna2 = 2;
label20.Text += " = {x1,x2}";
}
if (zestaw_zmiennych == 2) //C2 = {x1,x3}
{
zmienna1 = 1;
zmienna2 = 3;
label20.Text += " = {x1,x3}";
}
if (zestaw_zmiennych == 3) //C3 = {x1,x4}
{
zmienna1 = 1;
zmienna2 = 4;
label20.Text += " = {x1,x4}";
}
if (zestaw_zmiennych == 4) //C4 = {x2,x3}
{
zmienna1 = 2;
zmienna2 = 3;
label20.Text += " = {x2,x3}";
}
if (zestaw_zmiennych == 5) //C5 = {x2,x4}
{
zmienna1 = 2;
zmienna2 = 4;
label20.Text += " = {x2,x4}";
}
if (zestaw_zmiennych == 6) //C6 = {x3,x4}
{
zmienna1 = 3;
zmienna2 = 4;
label20.Text += " = {x3,x4}";
}
// wypelnienie dwoch kolumn zmiennymi oraz wypelnienie ostatniej kolumny
1-kami


for (int i = 0; i < l_obserwacji; i++)
{
tmp_X[i, 0] = zmienne[i, zmienna1];
tmp_X[i, 1] = zmienne[i, zmienna2];
tmp_X[i, 2] = 1;
Y[i, 0] = zmienne[i, 0];
//wyświetlenie macierzy X rozwazanych zmiennych
if (comboBox3.SelectedIndex == 0)
{
label17.Text += tmp_X[i, 0].ToString("0.0000") + " ";
label17.Text += tmp_X[i, 1].ToString("0.0000") + " ";
label17.Text += tmp_X[i, 2].ToString("0.0000") + " ";
label17.Text += "\n";
}

background image

}
//wyswietlanie macierzy Y
if (comboBox3.SelectedIndex == 1)
{
for (int i = 0; i < Y.GetLength(0); i++)
{
label17.Text += Y[i, 0].ToString("0.0000") + " ";
label17.Text += "\n";
}
}
Xt = transponuj(tmp_X);
// wyswietlanie macierzy transponowanej
if (comboBox3.SelectedIndex == 2)
{
for (int i = 0; i < Xt.GetLength(0); i++)
{
for (int j = 0; j < Xt.GetLength(1); j++)
{
label17.Text += Xt[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

Xt_X = mnozenie(Xt, tmp_X);
//wyswietlanie macierzy mnozonej Xt*X
if (comboBox3.SelectedIndex == 3)
{
for (int i = 0; i < Xt_X.GetLength(0); i++)
{
for (int j = 0; j < Xt_X.GetLength(1); j++)
{
label17.Text += Xt_X[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

odworona_Xt_X = odwrotna(Xt_X);
//wyswietlanie macierzy odwroconej maceirzy Xt_X
if (comboBox3.SelectedIndex == 4)
{
for (int i = 0; i < odworona_Xt_X.GetLength(0); i++)
{
for (int j = 0; j < odworona_Xt_X.GetLength(1); j++)
{
label17.Text += odworona_Xt_X[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

Xt_Y = mnozenie(Xt, Y);
//wyswietlanie macierzy mnożonej Xt*Y
if (comboBox3.SelectedIndex == 5)
{
for (int i = 0; i < Xt_Y.GetLength(0); i++)
{
for (int j = 0; j < Xt_Y.GetLength(1); j++)
{
label17.Text += Xt_Y[i, j].ToString("0.0000") + " ";
}

background image

label17.Text += "\n";
}
}

wynik_MNK = mnozenie(odworona_Xt_X, Xt_Y);
//wyswietlanie macierzy mnożonej Xt*Y
if (comboBox3.SelectedIndex == 6)
{
for (int i = 0; i < wynik_MNK.GetLength(0); i++)
{
for (int j = 0; j < wynik_MNK.GetLength(1); j++)
{
label17.Text += wynik_MNK[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

label5.Text = "y = " + wynik_MNK[0, 0].ToString("0.0000") + " x" +
zmienna1 + " + " + wynik_MNK[1, 0].ToString("0.0000") + " x" + zmienna2 + " + " +
wynik_MNK[2, 0].ToString("0.0000");


// --------------------------- Odchylenie standardowe współczynnika resztkowego -----
-----------------------------
double[,] Yt_Xa = new double[1, 1];
double[,] Yt_Y = new double[1, 1];
double[,] Yt = new double[1, l_obserwacji];
double[,] Da = new double [3,3];
double Yt_YminusYt_Xa;
double Su, Su2, sredniaY, V;

Yt = transponuj(Y);
//wyswietlanie transponowanej macierzy Y
if (comboBox3.SelectedIndex == 7)
{
for (int i = 0; i < Yt.GetLength(0); i++)
{
for (int j = 0; j < Yt.GetLength(1); j++)
{
label17.Text += Yt[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

Yt_Xa = mnozenie(transponuj (Xt_Y), wynik_MNK);
//wyswietlanie wymnozonej macierzy transponowanej Y oraz Xt_Y
if (comboBox3.SelectedIndex == 8)
{
for (int i = 0; i < Yt_Xa.GetLength(0); i++)
{
for (int j = 0; j < Yt_Xa.GetLength(1); j++)
{
label17.Text += Yt_Xa[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

Yt_Y = mnozenie(Yt, Y);
//wyswietlanie wymnozonej macierzy transponowanej Y oraz Y

background image

if (comboBox3.SelectedIndex == 9)
{
for (int i = 0; i < Yt_Y.GetLength(0); i++)
{
for (int j = 0; j < Yt_Y.GetLength(1); j++)
{
label17.Text += Yt_Y[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}


Yt_YminusYt_Xa = Yt_Y[0, 0] - Yt_Xa[0, 0];
Su2 = Yt_YminusYt_Xa / (l_obserwacji - 5);
//wyswietlanie wariacji skladnika resztokowego
if (comboBox3.SelectedIndex == 10)
{
label17.Text += Su2.ToString("0.0000");
}

Su = Math.Sqrt(Su2);
label21.Text+= Su.ToString("0.0000");

Da = mnozenie(odworona_Xt_X, Su2);
label5.Text += "\n" + "D(a1)=(" + Da[0, 0].ToString("0.0000") + ");
D(a2)=(" + Da[1, 1].ToString("0.0000") + "); D(a3)=(" + Da[2, 2].ToString("0.0000") +
")";

sredniaY = 0;
for (int i = 0; i < Y.GetLength(0); i++)
{
sredniaY = sredniaY + Y[i, 0];
}
sredniaY = sredniaY / Y.GetLength(0);
//wyswietlanie sredniej zmiennych Y
if (comboBox3.SelectedIndex == 11)
{
label17.Text = sredniaY.ToString("0.0000");

}
V = (Su / sredniaY) * 100;
label22.Text += V.ToString("0.00");


}

private void MNK3(int zestaw_zmiennych)
{
double[,] Y = new double[l_obserwacji, 1];
double[,] Xt = new double[4, l_obserwacji];
double[,] Xt_X = new double[4, 4];
double[,] Xt_Y = new double[4, 1];
double[,] odworona_Xt_X = new double[4, 4];
wynik_MNK = new Double[4, 1];

int zmienna1 = 0, zmienna2 = 0, zmienna3 =0;
double[,] tmp_X = new double[l_obserwacji, 4];

label20.Text += " dla kombinacji zmiennych C" + zestaw_zmiennych;

if (zestaw_zmiennych == 7) //C7 = {x1,x2,x3}

background image

{
zmienna1 = 1;
zmienna2 = 2;
zmienna3 = 3;
label20.Text += " = {x1,x2,x3}";
}
if (zestaw_zmiennych == 8) //C8 = {x1,x2,x4}
{
zmienna1 = 1;
zmienna2 = 2;
zmienna3 = 4;
label20.Text += " = {x1,x2,x4}";
}
if (zestaw_zmiennych == 9) //C9 = {x2,x3,x4}
{
zmienna1 = 2;
zmienna2 = 3;
zmienna3 = 4;
label20.Text += " = {x2,x3,x4}";
}
if (zestaw_zmiennych == 10) //C10 = {x1,x3,x4}
{
zmienna1 = 1;
zmienna2 = 3;
zmienna3 = 4;
label20.Text += " = {x1,x3,x4}";
}

// wypelnienie dwoch kolumn zmiennymi oraz wypelnienie ostatniej kolumny
1-kami


for (int i = 0; i < l_obserwacji; i++)
{
tmp_X[i, 0] = zmienne[i, zmienna1];
tmp_X[i, 1] = zmienne[i, zmienna2];
tmp_X[i, 2] = zmienne[i, zmienna3];
tmp_X[i, 3] = 1;
Y[i, 0] = zmienne[i, 0];
//wyświetlenie macierzy X rozwazanych zmiennych
if (comboBox3.SelectedIndex == 0)
{
label17.Text += tmp_X[i, 0].ToString("0.0000") + " ";
label17.Text += tmp_X[i, 1].ToString("0.0000") + " ";
label17.Text += tmp_X[i, 2].ToString("0.0000") + " ";
label17.Text += tmp_X[i, 3].ToString("0.0000") + " ";
label17.Text += "\n";
}

}
//wyswietlanie macierzy Y
if (comboBox3.SelectedIndex == 1)
{
for (int i = 0; i < Y.GetLength(0); i++)
{
label17.Text += Y[i, 0].ToString("0.0000") + " ";
label17.Text += "\n";
}
}


background image

Xt = transponuj(tmp_X);
// wyswietlanie macierzy transponowanej
if (comboBox3.SelectedIndex == 2)
{
for (int i = 0; i < Xt.GetLength(0); i++)
{
for (int j = 0; j < Xt.GetLength(1); j++)
{
label17.Text += Xt[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

Xt_X = mnozenie(Xt, tmp_X);
//wyswietlanie macierzy mnozonej Xt*X
if (comboBox3.SelectedIndex == 3)
{
for (int i = 0; i < Xt_X.GetLength(0); i++)
{
for (int j = 0; j < Xt_X.GetLength(1); j++)
{
label17.Text += Xt_X[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

odworona_Xt_X = odwrotna(Xt_X);
//wyswietlanie macierzy odwroconej maceirzy Xt_X
if (comboBox3.SelectedIndex == 4)
{
for (int i = 0; i < odworona_Xt_X.GetLength(0); i++)
{
for (int j = 0; j < odworona_Xt_X.GetLength(1); j++)
{
label17.Text += odworona_Xt_X[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

Xt_Y = mnozenie(Xt, Y);
//wyswietlanie macierzy mnożonej Xt*Y
if (comboBox3.SelectedIndex == 5)
{
for (int i = 0; i < Xt_Y.GetLength(0); i++)
{
for (int j = 0; j < Xt_Y.GetLength(1); j++)
{
label17.Text += Xt_Y[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

wynik_MNK = mnozenie(odworona_Xt_X, Xt_Y);
//wyswietlanie macierzy mnożonej Xt*Y
if (comboBox3.SelectedIndex == 6)
{
for (int i = 0; i < wynik_MNK.GetLength(0); i++)
{

background image

for (int j = 0; j < wynik_MNK.GetLength(1); j++)
{
label17.Text += wynik_MNK[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

label5.Text = "y = " + wynik_MNK[0, 0].ToString("0.0000") + " x" +
zmienna1 + " + " + wynik_MNK[1, 0].ToString("0.0000") + " x" + zmienna2 + " + " +
wynik_MNK[2, 0].ToString("0.0000") + " x" + zmienna3 + " + " + wynik_MNK[3,
0].ToString("0.0000");

// --------------------------- Odchylenie standardowe współczynnika resztkowego ------
----------------------------
double[,] Yt_Xa = new double[1, 1];
double[,] Yt_Y = new double[1, 1];
double[,] Yt = new double[1, l_obserwacji];
double[,] Da = new double[4, 4];
double Yt_YminusYt_Xa;
double Su, Su2, sredniaY, V;

Yt = transponuj(Y);
//wyswietlanie transponowanej macierzy Y
if (comboBox3.SelectedIndex == 7)
{
for (int i = 0; i < Yt.GetLength(0); i++)
{
for (int j = 0; j < Yt.GetLength(1); j++)
{
label17.Text += Yt[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

Yt_Xa = mnozenie(transponuj(Xt_Y), wynik_MNK);
//wyswietlanie wymnozonej macierzy transponowanej Y oraz Xt_Y
if (comboBox3.SelectedIndex == 8)
{
for (int i = 0; i < Yt_Xa.GetLength(0); i++)
{
for (int j = 0; j < Yt_Xa.GetLength(1); j++)
{
label17.Text += Yt_Xa[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}
}

Yt_Y = mnozenie(Yt, Y);
//wyswietlanie wymnozonej macierzy transponowanej Y oraz Y
if (comboBox3.SelectedIndex == 9)
{
for (int i = 0; i < Yt_Y.GetLength(0); i++)
{
for (int j = 0; j < Yt_Y.GetLength(1); j++)
{
label17.Text += Yt_Y[i, j].ToString("0.0000") + " ";
}
label17.Text += "\n";
}

background image

}


Yt_YminusYt_Xa = Yt_Y[0, 0] - Yt_Xa[0, 0];
Su2 = Yt_YminusYt_Xa / (l_obserwacji - 5);
//wyswietlanie wariacji skladnika resztokowego
if (comboBox3.SelectedIndex == 10)
{
label17.Text += Su2.ToString("0.0000");
}

Su = Math.Sqrt(Su2);
label21.Text += Su.ToString("0.0000");

Da = mnozenie(odworona_Xt_X, Su2);
label5.Text += "\n" + " (" + Da[0, 0].ToString("0.0000") + "); (" +
Da[1, 1].ToString("0.0000") + "); (" + Da[2, 2].ToString("0.0000") +"); (" + Da[3,
3].ToString("0.0000") + ")";

sredniaY = 0;
for (int i = 0; i < Y.GetLength(0); i++)
{
sredniaY = sredniaY + Y[i, 0];
}
sredniaY = sredniaY / Y.GetLength(0);
//wyswietlanie sredniej zmiennych Y
if (comboBox3.SelectedIndex == 11)
{
label17.Text = sredniaY.ToString("0.0000");

}
V = (Su / sredniaY) * 100;
label22.Text += V.ToString("0.00");

}

private double licz_rij(int i, int j)
{
int t;
double licznik = 0,mianownik_i=0,mianownik_j=0;

for (t = 0; t < l_obserwacji; t++)//tu
{
licznik += (zmienne[t, i] - srednie[i]) * (zmienne[t, j] -
srednie[j]);
mianownik_i += (zmienne[t, i] - srednie[i]) * (zmienne[t, i] -
srednie[i]);
mianownik_j += (zmienne[t, j] - srednie[j]) * (zmienne[t, j] -
srednie[j]);
}

return licznik / (Math.Sqrt(mianownik_i * mianownik_j));

}

private void licz_macierze_R()
{
macierz_R0 = new Double[l_zmiennych];
macierz_R = new Double[l_zmiennych, l_zmiennych];
licz_srednie();

for (int i = 0; i < l_zmiennych; i++)

background image

macierz_R0[i] = licz_rij(0, i + 1);

for (int i = 0; i < l_zmiennych; i++)
for (int j = 0; j < l_zmiennych; j++)
macierz_R[i, j] = licz_rij(i + 1, j + 1);
}

private void wyswietl_macierze()
{
label3.Text = "";
label4.Text = "";
for (int i = 0; i < l_zmiennych; i++)
{
if (macierz_R0[i] >= 0)
label4.Text += " ";
label4.Text += macierz_R0[i].ToString("0.0000") + "\n";
}

for (int j = 0; j < l_zmiennych; j++)
{
for (int i = 0; i < l_zmiennych; i++)
{
if (macierz_R[j,i] >= 0)
label3.Text += " ";
label3.Text += macierz_R[j,i].ToString("0.0000") + " ";
}
label3.Text += "\n";
}
}


private void button1_Click(object sender, EventArgs e)
{

StreamReader sr = null;
label18.Text = "Wczytane zmienne" + "\n";
char[] delimiterChars = { ' ', '\t' };
string[] liczby;
List<string> linie=new List<string>();

int wiersz=0;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
wyczyscWszystko();
textBox1.Text = openFileDialog1.FileName;
try
{
sr = new StreamReader(openFileDialog1.OpenFile());

using (sr)
{
string linia;

while ((linia = sr.ReadLine()) != null)
{
if (linia.Length < 3)
break;
linie.Add(linia);

//liczby=linia.Split(delimiterChars,StringSplitOptions.RemoveEmptyEntries);
//for (int kol = 0; kol < 5; kol++)
// zmienne[wiersz, kol] = Double.Parse(liczby[kol]);

background image

//wiersz++;
}
}
l_obserwacji = linie.Count;
numericUpDown1.Maximum=l_obserwacji;
//numericUpDown1.Value = 10;
l_zmiennych = linie[0].Split(delimiterChars,
StringSplitOptions.RemoveEmptyEntries).Length-1;

//inicjalizuj_tablice();
zmienne = new Double[l_obserwacji, l_zmiennych + 1];


foreach (string linia in linie)
{
liczby = linia.Split(delimiterChars,
StringSplitOptions.RemoveEmptyEntries);
for (int kol = 0; kol <= l_zmiennych; kol++)
{

zmienne[wiersz, kol] =
Double.Parse(liczby[kol].Replace('.',','));
label18.Text += zmienne[wiersz, kol].ToString("0.0000") +
" ";
}
wiersz++;
label18.Text += "\n";
}
button2.Enabled = true;
button3.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original
error: " + ex.Message);
}
}

button2.Enabled = true;
button3.Enabled = true;
}

private void wyczyscWszystko()
{
Graphics x = this.CreateGraphics();
//x.FillRectangle(Brushes.Silver, 10, 150, 850, 150);
x.FillRectangle(new SolidBrush(this.BackColor), 10, 150, 850, 150);
label3.Text = "";
label4.Text = "";
label5.Text = "";
label10.Text = "Obliczenia" + "\n";
label11.Text = "Wspólczynniki korelacji wielorakiej: " + "\n";
label12.Text = "";
label13.Text = "";
label15.Text = "Współczynnik determinacji R^2= ";
label17.Text = "";
label18.Text = "Wczytane dane z pliku: \n";
label20.Text = "Klasyczna Metoda Najmnieszych Kwadratow";
label21.Text = "Odchylenie standardowe składnika resztokowego Su: ";
label22.Text = "Współczynnik zmienności losowej V: ";
label23.Text = "Obliczone błędy";

background image

}

private void button2_Click(object sender, EventArgs e)
{
oblicz();
}

private void oblicz()
{
wyczyscWszystko();
double rw = 0, R2;
indeksy = new List<int>();
alfa = Convert.ToDouble(comboBox1.SelectedItem.ToString());
l_obserwacji = Decimal.ToInt32(numericUpDown1.Value);
l_elementow = Convert.ToInt32(comboBox2.SelectedItem.ToString());
licz_macierze_R();
wyswietl_macierze();
if (l_elementow == 2) rw = licz_korelacja2();
if (l_elementow == 3) rw = licz_korelacja3();
R2 = rw * rw;
label15.Text += R2.ToString("0.0000") + "\n";


//estymacja();
//button2.Enabled = false;
}

private double[,] transponuj(double[,] A) //transponowanie macierzy
{
double[,] wynik;
wynik= new double[A.GetLength(1), A.GetLength(0)];
for (int i = 0; i < A.GetLength(1); i++)//wiersze
for (int j = 0; j < A.GetLength(0); j++)//kolumny
wynik[i, j] = A[j, i];
return wynik;
}

private double[,] mnozenie(double[,] A,double[,] B) //mnożenie 2 macierzy
{

double[,] wynik = new double[A.GetLength(0), B.GetLength(1)];

if (A.GetLength(1) != B.GetLength(0))
{
MessageBox.Show("Wymiary nie są prawidłowe");
return wynik;
}
for (int i = 0; i < wynik.GetLength(0); i++) //wiersze
for (int j = 0; j < wynik.GetLength(1); j++) //kolumny
{
for (int t = 0; t < A.GetLength(1);t++ )//też pętla
wynik[i,j]+=A[i,t]*B[t,j];
}
return wynik;
}

private double[,] mnozenie(double[,] A, double k) //możenie macierzy przez
stałą
{

double[,] wynik = new double[A.GetLength(0), A.GetLength(1)];

background image


for (int i = 0; i < wynik.GetLength(0); i++) //wiersze
for (int j = 0; j < wynik.GetLength(1); j++) //kolumny
{
wynik[i, j] += A[i, j] * k;
}
return wynik;
}

private double[,] odwrotna(double[,] A) //wyznaczanie macierzy odwrotnej
{

double wyz = wyznacznik(A);

double[,] wynik = new double[A.GetLength(0), A.GetLength(0)];
if (wyz == 0.0)
{
MessageBox.Show("Nie można policzyć macierzy odwrotnej.");
return wynik;
}
for (int i = 0; i < wynik.GetLength(0); i++)
for (int j = 0; j < wynik.GetLength(0); j++)
wynik[j, i] = wyznacznik(minor(A, i, j)) / wyz *
(Double)Math.Pow(-1, i + j);
return wynik;
}

private double wyznacznik(double[,] A)
{
double wyz = 0.0;
if (A.GetLength(0) != A.GetLength(1))
{
MessageBox.Show("Nie można policzyć wyznacznika.");
return 0.0;
}
if (A.Length==1)
return A[0, 0];
for (int j = 0; j < A.GetLength(1); j++)
wyz += (A[0, j] * wyznacznik(minor(A, 0, j)) *
(Double)System.Math.Pow(-1, 0 + j));
return wyz;
}

private double[,] minor(double[,] A, int iRow, int iCol)
{
double[,] wynik = new double[A.GetLength(0)-1,A.GetLength(1)-1];
int m = 0, n = 0;
for (int i = 0; i < A.GetLength(0); i++)
{
if (i == iRow)
continue;
n = 0;
for (int j = 0; j < A.GetLength(1); j++)
{
if (j == iCol)
continue;
wynik[m, n] = A[i, j];
n++;
}
m++;
}
return wynik;

background image

}

private void Form1_Load(object sender, EventArgs e)
{
comboBox1.SelectedIndex = 1;
comboBox2.SelectedIndex = 0;
comboBox3.SelectedIndex = 5;
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//button2.Enabled = true;
}

private void Form1_Paint(object sender, PaintEventArgs e) //odświeżanie
grafu
{

}

private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
{

}

private void button3_Click(object sender, EventArgs e)
{
oblicz();
}

private void label20_Click(object sender, EventArgs e)
{

}

private void label18_Click(object sender, EventArgs e)
{

}

private void label24_Click(object sender, EventArgs e)
{

}

private void panel2_Paint(object sender, PaintEventArgs e)
{

}

private void label23_Click(object sender, EventArgs e)
{

}

private void panel6_Paint(object sender, PaintEventArgs e)
{

}

}
}


Wyszukiwarka

Podobne podstrony:
Kod programu Puzzle
Frezowanie kod programu
Digital LC Meter Version 2, kod programu
Kod programu
Toczenie kod programu
kod programu frezowanie LUKASZ
toczenie kod programu Lukasz
Piŕkny kod Tajemnice mistrzˇw programowania
Czysty kod Podręcznik dobrego programisty
12-kod~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2
Kod do Programu i instalacja Time Factory
Kod źródłowy programu p1
13-kod~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2
Jak pisaŠ przenoÂny kod Wstŕp do programowania wieloplatformowego
beta kod pierwszy program

więcej podobnych podstron