Суббота, 04.05.2024, 23:06
Главная Регистрация RSS
Приветствую Вас, Гость
Меню сайта
Категории раздела
Форма входа
ДРУЗЬЯ САЙТА

Вызвать мастера в Красноярске

8 983 207 5474

8 902 918 9334

8 933 332 3164

---------------------------------

Запчасти бытткхники

  • Велес т.2935600
  • СЦ Близнецов т.2296595
  • Вираж
  • Красраб 110 т.2589503
  • Комплекстур Щорса30 т.2606797
  • Радиодетали

  • Якорный 9 т.2688317
  • Воронова 16 т.2202990
  • Красраб 125а т.2456544
  • Профи т.2702737
  • Дайте две т.+79237713323
  • Электрика

  • Электро +
  • Планета электрика
  • ЗАКЛАДКИ
    Поиск
    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Главная » Статьи » C++ Builder » Простые примеры

    Разложение в ряд Тейлора элементарных функци

    Разложение в ряд Тейлора элементарных функций

    Исходник здесь 

    =

    =

    //---------------------------------------------------------------------------

    #include <vcl.h>
    #pragma hdrstop

    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }

    //----------------------------------------------------------------------
    void __fastcall TForm1::ScrollBar1Change(TObject *Sender)
    {
      Label2->Caption=ScrollBar1->Position-10;
    }
    //------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        if(ListBox1->ItemIndex==-1){ShowMessage("Выбери функцию из списка"); return;}
        if( LabeledEdit1->Text=="") {ShowMessage("В поле Точность введите значение не больше еденици"); return;}

       double eps= StrToFloat(LabeledEdit1->Text);                  //0.00001;
       double si=0;
       double s=0;
       int mx=300;
       int my=300;
       int v= ScrollBar1->Position-10;                  

       int XStart =Image1-> Width / 2;
       int YStart = Image1->Height / 2;
       Image1->Canvas->Pen->Color=clBlack;
       Image1->Canvas->FillRect(Rect (0,0,Image1->Width, Image1->Height));
       Image1->Canvas->MoveTo( XStart, 0 );
       Image1->Canvas->LineTo(XStart, 1000);
       Image1->Canvas->MoveTo( 0, YStart);
       Image1->Canvas->LineTo(1000, YStart);
       Label4->Caption= "0";


    ///////////////////////////////////////////////////////////////////////////////////////////////
      if(ListBox1->ItemIndex==0){   mx=30; my=50;

        for(float i= -10.0; i < 10.0; i=i+0.01){
       s=mysin(i,eps);
       si= sin(i);

    if(CheckBox1->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart-my*si]=clRed;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart-my*si]=clRed; }
    if(CheckBox2->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart+v-my*s]=clGreen;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart+v-my*s]=clGreen; }

      }
      Label4->Caption= countIter;
      }
    //////////////////////////////////////////////////////////////////////////////////
       if(ListBox1->ItemIndex==1){   mx=30; my=50;

        for(float i= -10.0; i < 10.0; i=i+0.01){
            s=mycos(i,eps);
            si=cos(i);

    if(CheckBox1->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart-my*si]=clRed;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart-my*si]=clRed; }
    if(CheckBox2->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart+v-my*s]=clGreen;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart+v-my*s]=clGreen; }

      }
      Label4->Caption= countIter;
      }
    ///////////////////////////////////////////////////////////////////////////////////////
        if(ListBox1->ItemIndex==2){   mx=200; my=200;

          for(float i= -1.0; i < 1.0; i=i+0.001){
              s=  myarsh (i,eps);
              si=ArcSinh(i);

    if(CheckBox1->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart-my*si]=clRed;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart-my*si]=clRed; }
    if(CheckBox2->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart+v-my*s]=clGreen;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart+v-my*s]=clGreen; }

      }
      Label4->Caption= countIter;
      }
    //////////////////////////////////////////////////////////////////////////////////////////
       if(ListBox1->ItemIndex==3){   mx=150; my=150;

        for(float i= -1.0; i < 1.0; i=i+0.001){
       s=myarctg (i,eps);
       si=atan(i);

    if(CheckBox1->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart-my*si]=clRed;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart-my*si]=clRed; }
    if(CheckBox2->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart+v-my*s]=clGreen;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart+v-my*s]=clGreen; }

      }
      Label4->Caption= countIter;
      }
    ///////////////////////////////////////////////////////////////////////////////////////////
       if(ListBox1->ItemIndex==4){   mx=30; my=30;

        for(float i= -3.0; i < 3.0; i=i+0.001){
       s=mycosh(i,eps);
       si=cosh(i);

    if(CheckBox1->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart-my*si]=clRed;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart-my*si]=clRed; }
    if(CheckBox2->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart+v-my*s]=clGreen;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart+v-my*s]=clGreen; }

      }
      Label4->Caption= countIter;
      }
    ///////////////////////////////////////////////////////////////////////////////////////////
       if(ListBox1->ItemIndex==5){   mx=100; my=100;

        for(float i= -1.0; i < 1.0; i=i+0.001){
       s=myacos(i,eps);
       si=acos(i);

    if(CheckBox1->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart-my*si]=clRed;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart-my*si]=clRed; }
    if(CheckBox2->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart+v-my*s]=clGreen;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart+v-my*s]=clGreen; }

      }
      Label4->Caption= countIter;
      }
    ////////////////////////////////////////////////////////////////////////////////////////////
     if(ListBox1->ItemIndex==6){   mx=50; my=50;
            double si=0, co=0;
        for(float i= -10.0; i < 10.0; i=i+0.005){

            s=mytan(i,eps);
            si=tan(i);

    if(CheckBox1->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart-my*si]=clRed;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart-my*si]=clRed; }
    if(CheckBox2->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart+v-my*s]=clGreen;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart+v-my*s]=clGreen; }

      }
      Label4->Caption= countIter;
      }

    //////////////////////////////////////////////////////////////////////////////////////////
     if(ListBox1->ItemIndex==7){   mx=50; my=50;

        for(float i= -5.0; i < 5.0; i=i+0.005){
       s=mysinh(i,eps);
       si= sinh(i);

    if(CheckBox1->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart-my*si]=clRed;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart-my*si]=clRed; }
    if(CheckBox2->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart+v-my*s]=clGreen;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart+v-my*s]=clGreen; }

      }
      Label4->Caption= countIter;
      }
    //////////////////////////////////////////////////////////////////////////////////
     if(ListBox1->ItemIndex==8){   mx=150; my=150;

        for(float i= -1.0; i < 1.0; i=i+0.001){
       s=myasin(i,eps);
       si= asin(i);              

    if(CheckBox1->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart-my*si]=clRed;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart-my*si]=clRed; }
    if(CheckBox2->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart+v-my*s]=clGreen;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart+v-my*s]=clGreen; }
      }
      Label4->Caption= countIter;
      }
    //////////////////////////////////////////////////////////////////////////////////
      if(ListBox1->ItemIndex==9){   mx=50; my=50;

        for(float i= -3.0; i < 5.0; i=i+0.005){
       s=myexp(i,eps);
       si= exp(i);

    if(CheckBox1->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart-my*si]=clRed;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart-my*si]=clRed; }
    if(CheckBox2->Checked==true){
    Image1->Canvas->Pixels[XStart+mx*i][YStart+v-my*s]=clGreen;
    Image1->Canvas->Pixels[XStart+mx*i+1][YStart+v-my*s]=clGreen; }
      }
      Label4->Caption= "не определено";
      }
    //////////////////////////////////////////////////////////////////////////////////
    }
    //---------------------------------------------------------------------------
    double __fastcall TForm1::MySum(double x,double epsilon)
    {
        double s=0;
        double an;
        int n,m=0;
        n=1;
        an=1;
        while(fabs(an)>epsilon)

        {
              s+=an;
              n++;
              an*=x*n/(n-1);
              m++;
        }
        countIter=m;
        return s;
    }
    //---------------------------------------------------------------------------
    double __fastcall TForm1::mycos(double x,double eps)
    {
        double s,an;
        int n,m=0;
        n=0.1;
        an=1;
        s=0;
        while(fabs(an)>eps)
        {
             s+=an;
             n++;
             an*=-x*x/(2.*n-1.0)/(2.0*n);
             m++;
        }
        countIter=m;
        return s;
    }
    //--------------------------------------------------------------
    double __fastcall TForm1::mysin(double x,double eps)
    {
        double s,an;
        int n,m=0;
        n=1;
        an=x;
        s=0;
        while(fabs(an)>eps)
        {
             s+=an;
             n++;
             an*=-x*x/(2.*n-1.0)/(2.0*n-2.0);
             m++;
        }
        countIter=m;
        return s;
    }
    //--------------------------------------------------------------------------------
    double __fastcall TForm1::mytan(double x, double eps)
    {
     double s,an;
        int n,m=0;
        n=1;
        an=x;
        s=0;
        while(fabs(an)>eps)
        {
             s+=an;
             n++;
             an*=-x*x/(2.*n-1.0)/(2.0*n-2.0);
             m++;
        }
    //----------------------------------------------------------------------------
     double s1,an1;
        int n1;
        n1=0.1;
        an1=1;
        s1=0;
        while(fabs(an1)>eps)
        {
             s1+=an1;
             n1++;
             an1*=-x*x/(2.*n1-1.0)/(2.0*n1);

        }
        countIter=m;
        return s/s1;
    }
    //---------------------------------------------------------------------------
    double __fastcall TForm1::mysinh(double x,double eps)
    {
        double s,an;
        int n,m=0;
        n=1;
        an=x;
        s=0;
        while(fabs(an)>eps)
        {
             s+=an;
             n++;
              an*=x*x/(2.*n-1.0)/(2.0*n-2.0);
              m++;
        }
        countIter=m;
        return s;
    }
    //--------------------------------------------
    double __fastcall TForm1::myasin(double x,double eps){
        int i = 0;
        double p = x;
        double s = x;
        while (p > eps){
            p*=(x*x*(2*i + 1)*(2*i + 1))/(2*(i+1)*(2*i + 3));
            s+=p;
            i++;
        }
            countIter=i;
        return s;
    }
    //---------------------------------------------------------------------------
    double __fastcall TForm1::my_ln (double x)
    {
        const double eps=1e-6;
        const double lnln=M_LN2; //ln2
        int k=0;
        while(x>2.0)
        {
            x/=2.0;
            k++;
        }
        x-=1.;
        double s=0;
        int n=1;
        double an=x;
        while (fabs(an)>eps)
        {
            s+=an;
            ++n;
            an*=-x*(n-1)/n;
        }
        s+=k*lnln;
        return s;

    }
    //---------------------------------------------------------------------------
    double __fastcall TForm1::myarctg (double x,double eps){

            double dx = x;
            double y = dx;
            int n = 1,m=0;

             while(fabs(dx) > eps){
                ++n;
                dx *= -x*x*(2*n - 3)/(2*n - 1.);
                y += dx;
                m++;
            }
          countIter=m;
          return y;

    }
    //--------------------------------------------------------------------------
    double __fastcall TForm1::myarsh (double x,double eps){

          double y=0;
            int n=0;
            double dx = x;
             y = dx;

            for (int i=1; fabs(dx)>eps; i++)
            {
            dx*=-x*x*(2.*i+1.)*(2.*i+1.)/(2.*i+2.)/(2.*i+3.);
         //   dx*= x*x/(2.*i+2.)/(2.*i+3.);
             y+=dx;
             n++;
            }
       countIter=n;
       return y;

    }
    //-------------------------------------------------------------------
     double __fastcall TForm1::mycosh(double x, double eps)   //гепербол кос
    {
        double result = 1;
        double member = 1;
            int n=0;
        for (int i = 1; abs(member) >= eps; i++)
        {
            member *= x * x;
            member /= 2*i * (2*i - 1);
            result += member;
                    n++;
        }
            countIter=n;
        return result;
    }
    //----------------------------------------------------------------------
    double __fastcall TForm1::myacos(double x, double eps){
        int i = 0;
        double p = x;
        double s = x;
        while (p > eps){
            p*=(x*x*(2*i + 1)*(2*i + 1))/(2*(i+1)*(2*i + 3));
            s+=p;
            i++;
        }
            countIter=i;
        return 3.14/2-s;
    }
    //---------------------------------------------------------------------------
    double __fastcall TForm1::myexp(double x,double eps){

            double s;
          return s=1+(x/1)+(x*x/2)+(x*x*x/6)+(x*x*x*x/24)+(x*x*x*x*x/120)+(x*x*x*x*x*x/720)
          +(x*x*x*x*x*x*x/5040)+(x*x*x*x*x*x*x*x/40320);

    }
    //------------------------------------------------------------------------------------
    void __fastcall TForm1::LabeledEdit1KeyPress(TObject *Sender, char &Key)
    {
      if(Key >= '0' && Key <= '9' || Key == VK_BACK || Key == ',' ) return;
    Key=0;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::LabeledEdit1ContextPopup(TObject *Sender,
          TPoint &MousePos, bool &Handled)
    {
       Handled=true;     
    }
    //---------------------------------------------------------------------------

    =

    =

    //---------------------------------------------------------------------------

    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <math.h>
    #include <Math.hpp>
    #include <ExtCtrls.hpp>
    #include <ComCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:    // IDE-managed Components
            TButton *Button1;
            TListBox *ListBox1;
            TImage *Image1;
            TScrollBar *ScrollBar1;
            TBevel *Bevel1;
            TCheckBox *CheckBox1;
            TCheckBox *CheckBox2;
            TLabel *Label1;
            TLabel *Label2;
            TLabeledEdit *LabeledEdit1;
            TLabel *Label3;
            TLabel *Label4;
            TLabel *Label5;
            void __fastcall Button1Click(TObject *Sender);
            void __fastcall ScrollBar1Change(TObject *Sender);
            void __fastcall LabeledEdit1KeyPress(TObject *Sender, char &Key);
            void __fastcall LabeledEdit1ContextPopup(TObject *Sender,
              TPoint &MousePos, bool &Handled);
    private:    // User declarations
    public:        // User declarations
          int countIter;
          double __fastcall MySum(double x,double epsilon);
          double __fastcall mycos(double x,double eps);
          double __fastcall mysin(double x,double eps);
          double __fastcall mysinh(double x,double eps);
          double __fastcall myasin(double x, double eps);
          double __fastcall my_ln (double x);
          double __fastcall myarctg (double x,double eps);
          double __fastcall myarsh (double x,double eps);
          double __fastcall mycosh(double x, double eps);
          double __fastcall myacos(double x, double eps);
          double __fastcall mytan(double x, double eps);
          double __fastcall myexp(double x,double eps);

            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif

    =

    Категория: Простые примеры | Добавил: doka (17.11.2020)
    Просмотров: 322 | Рейтинг: 0.0/0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]