Programy.docx

(36 KB) Pobierz

Metoda prostokątów, trapezów, parabol, Bessela

namespace calkowanie1

{

public partial class Form1 : Form

{

public Form1()

private void label1_Click(object sender, EventArgs e)

private void label3_Click(object sender, EventArgs e)

double f(double xi)

    {

     return xi * xi;

    }

 

private void buttonLicz_Click(object sender, EventArgs e)

    {

     double A = Convert.ToDouble(textBoxA.Text);

     double B = Convert.ToDouble(textBoxB.Text);

     int N = Convert.ToInt32(textBoxN.Text);

 

     double wynik=0, xi, Pi;

     double h = (B - A) / N;

 

     for (int i = 0; i <= N-1; i++)

        {

         xi = A + i * h;

         switch (comboBox1.SelectedIndex)

           {

            case 0: Pi = h * f(xi); break;

            case 1: Pi = h * f(xi+h/2); break;

            case 2: Pi = (h / 2) * ( f(xi) + f(xi+h)); break;

            case 3: Pi = (h / 2) * ( f(xi+h/3) + f(xi + 2*h/3)); break;

            case 4: Pi = (h / 6) * (f(xi) + 4 * f(xi + h / 2) + f(xi + h)); break;

     case 5: Pi = (h / 3) * (2 * f(xi + h / 4) - f(xi + h / 2) + 2 * f(xi + 3*h / 4)); break;

           case 6: Pi = (h / 8) * (f(xi) + 3 * f(xi + h / 3) + 3 * f(xi + 2*h / 3) + f(xi + h)); break;         

           case 7: Pi = (h / 24) * (11 * f(xi + h / 5) + f(xi + 2*h/5) + f(xi + 3*h/5) + 11 * f(xi +   

            4*h/5)); break;

            default: Pi = 0; break;

           }

         wynik = wynik + Pi;

       }

textBoxWyniki.AppendText( wynik.ToString() + "\r\n");

    }

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

private void textBoxA_TextChanged(object sender, EventArgs e)       

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Zadanie domowe o energii

private void button1_Click(object sender, EventArgs e)

  {

  const int N = 314; //w naszym przypadku mamy ustalonąLiczbęKrokówPonieważZostałoDokonanych314Pomiarow

            double A, B, Ei, t, wynik = 0;

            int U = 230;

            double[] T = new double[314];

            T[0] = 0;

            T[1] = 0.01;

                   ………………

     T[313] = 0.011592;

 

            A = 0;

            B = N;

            t = (B - A) / N / 60; //czas trwania między poszczególnymi pomiarami wynosi 1 minuta

                                  //algorytm napisałem ale również można było przyjąć że

                                  //człon (B - A) / N = 1 minuta. Dzielimy przez 60 ponieważ wynik

                                  //który otrzymujemy mamy w watogodzinach (Wh)

for (int i = 0; i <= N - 2; i++)//nie wiedziałem jak ominąc fakt iż dla metody trapezów wzory zamknięte

                                //"i" może być maksymalnie N a w ostanim kroku jest N+1 co powoduje

                                //wyskakiwanie błędu.

    {

     switch (comboBoxMetoda.SelectedIndex)

         {

          case 0: Ei = t * U * T[i]; break;    //dla tej metody przy deklaracji i maksymalnie

                                               //wartość i może być i<=N-1

          case 1: Ei = t / 2 * (U * T[i] + U * T[i + 1]); break

//własnie w tym algorytmie przy T[i+1] przy

                                                //"i" równym 313 ten człon będzie 314 a takiego

                                                // w zadeklarowanej tablicy nie mamy. Dlatego

                                                //w deklaracji i przyjmuje że maksymalnie może

                                                //być i<=N-2.

          default: Ei = 0; break;

         }

      wynik = wynik + Ei;

    }

    textBoxWynik.AppendText(wynik.ToString() + "\r\n");

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Interpolacja

namespace Interpolacja

{

public partial class Form1 : Form

{

  const int N = 5;

  double[] x = new double[N + 1];

  double[] y = new double[N + 1];

  public Form1()

  double W(double zmX)

   {

    double wynik = 0;

    double iloczyn;

    for (int i = 0; i <= N; i++)   //pętla do sumy

      {

      iloczyn = 1;

      for (int j = 0; j <=N; j++)   //pętla do iloczynu

        {

        if (j!=i) iloczyn *= ( zmX -x[j]) / (x[i]-x[j] );

        }

      wynik += y[i] * iloczyn; 

     }

    return wynik;

   }

private void button1_Click(object sender, EventArgs e)

   {

    x[0] = 1; y[0] = 1;

    x[1] = 2; y[1] = 2;

    x[2] = 3; y[2] = 3;

    x[3] = 5; y[3] = 2;

    x[4] = 6; y[4] = 3;

    x[5] = 7; y[5] = 1;

    for (int i = 0; i <= N; i++) chart1.Series[0].Points.AddXY( x[i] , y[i] );

    chart1.Series[1].Points.Clear();       //czyszczenie charta

    double zmX = x[0];

    do {

    zmX +=0.1;

    chart1.Series[1].Points.AddXY(zmX, W(zmX) );

                 } while ( zmX <= x[N] );

   }

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Rozwiązywanie układu równań liniowych

namespace WindowsFormsApplication1{

public partial class Form1 : Form{

const int N = 2;

       double[,] A = new double[N+1 , N+1];

              double[] Xn = new double[N + 1];

       double[] Xs = new double[N + 1];

       double[] B = new double[N + 1];

       double[] DX = new double[N + 1];

public Form1()

double FindMax(...

Zgłoś jeśli naruszono regulamin