Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Aproksymacja w Visual Basic C++

Jakub P. 23 Maj 2010 16:20 1464 7
  • #1 23 Maj 2010 16:20
    Jakub P.
    Poziom 12  

    Witam !
    Mam problem z napisaniem programu do aproksymacji rodzaju średniej trygonometrycznej zresztą nie tylko ja ale cała moja grupa . chcielibyśmy żeby ktoś napisał program do aproksymacji funkcji dowolnej krzywej np. sin . Bardzo bylibyśmy wdzięczni . Z góry Bardzo Dziękuje !!!

    0 7
  • #3 24 Maj 2010 18:15
    Jakub P.
    Poziom 12  

    Ja wszystko rozumiem jak ma to wyglądać tylko nie wiem jak to napisać w c++

    0
  • #4 24 Maj 2010 19:13
    Dżyszla
    Poziom 42  

    Ale metod aproksymacji jest multum! W zasadzie można opracować własną włącznie z tym, co ma być aproksymowane, z jaką dokładnością i w zasadzie dlaczego tak, a nie inaczej. Zupełnie nie wiem, w czym to cała grupa ma niby problem - w zaprojektowaniu interfejsu, czy w ogóle, jak to ma działać? Bo tego to tutaj na Forum też nikt nie wie i nie powie raczej.

    0
  • #5 28 Maj 2010 19:28
    Jakub P.
    Poziom 12  

    W napisaniu takiego programu z użyciem pochodnej . A że styczności z c++ wogóle nikt z nas nie miał to nie wiemy nawet jak zacząć.

    0
  • #7 28 Maj 2010 20:16
    deksta84
    Poziom 24  

    Witam
    Życzę braku kampanii wrześniowej.
    Podam taki wpis w GOOGLE i zmykam...
    "aproksymacja numeryczna C++ z pochodnymi"

    0
  • #8 25 Cze 2010 19:59
    Jakub P.
    Poziom 12  

    Udało mi się zaliczyć i stworzyć program a o to on :
    #include "stdafx.h"
    #include "stdio.h"
    #include "conio.h"
    #include "math.h"
    #include <fstream>
    using namespace std;
    double a[4];

    int ai(double x1, double x2, double y11, double y2, double dy1, double dy2)
    {
    double z1,z2,z3,z4,z5,z6,z7,x12,x14,x16,x22,x24,x26;
    x12=x1*x1; x14=x12*x12; x16=x12*x14;
    x22=x2*x2; x24=x22*x22; x26=x22*x24;
    z1=(y2-y11)/(x22-x12); z2=x22+x12; z3=(x26-x16)/(x22-x12);
    z4=(dy1-2.*x1*z1)/(4.*x12-2.*z2)/x1; z5=(6.*x14-2.*z3)/(4.*x12-2.*z2);
    z6=(dy2-2.*x2*z1)/(4.*x22-2.*z2)/x2; z7=(6.*x24-2.*z3)/(4.*x22-2.*z2);
    printf("z1=%f\tz2=%f\tz3=%f\tz4=%f\tz5=%f\tz6=%f\tz7=%f\n",z1,z2,z3,z4,z5,z6,z7);
    a[3]=(z6-z4)/(z7-z5); a[2]=z4-z5*a[3];
    a[1]=z1-a[2]*z2-a[3]*z3; a[0]=y11-a[1]*x12-a[2]*x14-a[3]*x16;
    return 0;
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
    double x1,x2,y11,y2,dy1,dy2,dx,xx,yy;
    fstream file;
    file.open("g:\\aproks4.dat",ios_base::out|ios_base::trunc);
    double x[]={1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.,25.,26.,27.,28.,29.,30.,31.,32.,33.,34.,35.,36.,37.,38.,39.,40.,41.,42.,43.,44.,45.,46.,47.,48.,49.,50.,51.,52.,53.,54.,55.,56.,57.,58.,59.,60.,61.,62.,63.,64.,65.,66.,67.,68.,69.,70.,71.,72.,73.,74.,75.,76.,77.,78.,79.,80.,81.,82.,83.,84.,85.,86.,87.,88.,89.,90.,91.,92.,93.,94.,95.,96.,97.,98.,99.,100.,101.,102.,103.,104.,105.,106.,107.,108.,109.,110.,111.,112.,113.,114.,115.,};
    double y[]={1.,4.,9.,16.,25.,36.,49.,64.,81.,100.,121.,144.,169.,196.,225.,256.,289.,300.,310.,320.,310.,300.,289.,256.,225.,196.,169.,144.,121.,100.,81.,64.,49.,36.,25.,16.,9.,4.,1.,4.,9.,16.,25.,36.,49.,64.,81.,100.,121.,144.,169.,196.,225.,256.,289.,300.,310.,320.,310.,300.,289.,256.,225.,196.,169.,144.,121.,100.,81.,64.,49.,36.,25.,16.,9.,4.,1.,4.,9.,16.,25.,36.,49.,64.,81.,100.,121.,144.,169.,196.,225.,256.,289.,300.,310.,320.,310.,300.,289.,256.,225.,196.,169.,144.,121.,100.,81.,64.,49.,36.,25.,16.,9.,4.,1.,};
    double dy[]={1.,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,5.5,5.,5.,-5.,-5.5,-16.5,-15.5,-14.5,-13.5,-12.5,-11.5,-10.5,-9.5,-8.5,-7.5,-6.5,-5.5,-4.5,-3.5,-2.5,-1.5,-1.,1.,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,5.5,5.,5.,-5.,-5.5,-16.5,-15.5,-14.5,-13.5,-12.5,-11.5,-10.5,-9.5,-8.5,-7.5,-6.5,-5.5,-4.5,-3.5,-2.5,-1.5,-1.,1.,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,5.5,5.,5.,-5.,-5.5,-16.5,-15.5,-14.5,-13.5,-12.5,-11.5,-10.5,-9.5,-8.5,-7.5,-6.5,-5.5,-4.5,-3.5,-2.5,-1.5,-1.,};
    x1=x[0]; x2=x[19]; y11=y[0]; y2=y[19]; dy1=dy[0]; dy2=dy[19];
    ai(x1,x2,y11,y2,dy1,dy2);
    xx=x1;dx=(x2-x1)/200.;
    while(xx<x2+dx)
    {
    x1=xx*xx;
    yy=a[0]+a[1]*x1+a[2]*x1*x1+a[3]*x1*x1*x1;
    printf("x=%f\ty=%f\n",xx,yy);
    file <<"\t"<<xx<<"\t"<<yy<<endl;
    xx=xx+dx;
    }
    x1=x[19]; x2=x[38]; y11=y[19]; y2=y[38]; dy1=dy[19]; dy2=dy[38];
    ai(x1,x2,y11,y2,dy1,dy2);
    xx=x1;dx=(x2-x1)/200.;
    while(xx<x2+dx)
    {
    x1=xx*xx;
    yy=a[0]+a[1]*x1+a[2]*x1*x1+a[3]*x1*x1*x1;
    printf("x=%f\ty=%f\n",xx,yy);
    file <<"\t"<<xx<<"\t"<<yy<<endl;
    xx=xx+dx;
    }
    x1=x[38]; x2=x[57]; y11=y[38]; y2=y[57]; dy1=dy[38]; dy2=dy[57];
    ai(x1,x2,y11,y2,dy1,dy2);
    xx=x1;dx=(x2-x1)/200.;
    while(xx<x2+dx)
    {
    x1=xx*xx;
    yy=a[0]+a[1]*x1+a[2]*x1*x1+a[3]*x1*x1*x1;
    printf("x=%f\ty=%f\n",xx,yy);
    file <<"\t"<<xx<<"\t"<<yy<<endl;
    xx=xx+dx;
    }
    x1=x[57]; x2=x[76]; y11=y[57]; y2=y[76]; dy1=dy[57]; dy2=dy[76];
    ai(x1,x2,y11,y2,dy1,dy2);
    xx=x1;dx=(x2-x1)/200.;
    while(xx<x2+dx)
    {
    x1=xx*xx;
    yy=a[0]+a[1]*x1+a[2]*x1*x1+a[3]*x1*x1*x1;
    printf("x=%f\ty=%f\n",xx,yy);
    file <<"\t"<<xx<<"\t"<<yy<<endl;
    xx=xx+dx;
    }
    x1=x[76]; x2=x[95]; y11=y[76]; y2=y[95]; dy1=dy[76]; dy2=dy[95];
    ai(x1,x2,y11,y2,dy1,dy2);
    xx=x1;dx=(x2-x1)/200.;
    while(xx<x2+dx)
    {
    x1=xx*xx;
    yy=a[0]+a[1]*x1+a[2]*x1*x1+a[3]*x1*x1*x1;
    printf("x=%f\ty=%f\n",xx,yy);
    file <<"\t"<<xx<<"\t"<<yy<<endl;
    xx=xx+dx;
    }
    x1=x[95]; x2=x[114]; y11=y[95]; y2=y[114]; dy1=dy[95]; dy2=dy[114];
    ai(x1,x2,y11,y2,dy1,dy2);
    xx=x1;dx=(x2-x1)/200.;
    while(xx<x2+dx)
    {
    x1=xx*xx;
    yy=a[0]+a[1]*x1+a[2]*x1*x1+a[3]*x1*x1*x1;
    printf("x=%f\ty=%f\n",xx,yy);
    file <<"\t"<<xx<<"\t"<<yy<<endl;
    xx=xx+dx;
    }
    file.close();
    getch();
    return 0;
    }

    0