Kod programu


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 indeksy;
public Form1()
{
InitializeComponent();
wyczyscWszystko();
//indeksy.Add(1);
// indeksy.Add(2);
}
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";
//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];
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];
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);
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];
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";
}
}
//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") + " ";
}
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
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}
{
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";
}
}
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++)
{
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";
}
}
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++)
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 linie=new List();
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]);
//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";
}
private void button2_Click(object sender, EventArgs e)
{
oblicz();
}
private void oblicz()
{
wyczyscWszystko();
double rw = 0, R2;
indeksy = new List();
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)];
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;
}
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
kod programu
Kod programu
Kolokwium z informatyki GiG1,Miska,VB 15 04 2014 Kod programu
Piekny kod Tajemnice mistrzow programowania szppps
01 mój pierwszy program kod
App2 program1 kod
Jak pisaŠ przenoÂny kod Wstŕp do programowania wieloplatformowego
Czysty kod Podręcznik dobrego programisty
kod z WOŚP polecane chomiki by closer9
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 6
Międzynarodowy Program Badań nad Zachowaniami Samobójczymi
CSharp Introduction to C# Programming for the Microsoft NET Platform (Prerelease)
Instrukcja Programowania Zelio Logic 2 wersja polska

więcej podobnych podstron