06.05.2013, 21:50
Hej
mam na zaliczenie za zajęcia napisać program, który będzie obliczał miejsca zerowe i ekstrema funkcji
y=-2x^6+3x^5-x^4+4x^3+5x^2-6x+7
na przedziale [-1.4,2.2]
Napisałam program, ale wyskakują mi błędy związane z linkerami.
Wrzucam to co udało mi się napisać:
#define _USE_MATH_DEFINES
#include <iostream>
#include <allegro.h>
using namespace std;
double y, x, m, n;
//funkcja
double Wartosci_funkcji (int i)
{
double x=-1.4+0.01*i;
double y= -2*(pow(x,6))+3*(pow(x,5))-(pow(x,4))+4*(pow(x,3))+5*(pow(x,2))-6*x+7;
return y;
}
double bisekcja(double a,double b)
{
double x=abs((a+b)/2);
double y=-2*(pow(x,6))+3*(pow(x,5))-(pow(x,4))+4*(pow(x,3))+5*(pow(x,2))-6*x+7;
double m=-2*(pow(a,6))+3*(pow(a,5))-(pow(a,4))+4*(pow(a,3))+5*(pow(a,2))-6*a+7;
double n=-2*(pow(b,6))+3*(pow(b,5))-(pow(b,4))+4*(pow(b,3))+5*(pow(b,2))-6*b+7;
return y, m, n;
}
//main
int main()
{
double wartosc[360][360];
allegro_init();
install_keyboard();
set_color_depth(desktop_color_depth());
clear_to_color( screen, makecol( 255, 255, 255 ) );
set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);
acquire_screen();
for (int i=0; i<360; i++)
{
for (int j=0; j<360; j++)
{
wartosc[i][j]= Wartosci_funkcji (i);
putpixel (screen, 100+i, 400-wartosc[i][j], makecol(125,125,125));
}
}
release_screen();
/*for (int i=0; i<360; i++)
{
for (int j=0; j<360; j++)
{
wartosc[i][j]= Wartosci_funkcji (i);
if ( wartosc[i][j]=0)
{
cout<<"miejsce zerowe: "<<wartosc[i][j]<<endl;
continue;
}
}
}*/
double a=-1.4, b=2.2;
if (y>=1/(10*10*10*10*10*10*10*10*10*10))
{
bisekcja(a,b);
if(m*y<0)
{
a=a;
b=x;
}
else
{a=x; b=b;}
if(x*n<0)
{ a=x; b=b;}
else
{a=a; b=x;}
}
else
{cout<<"miesce zerowe: "<<x<<endl;}
double max=0, min=0;
for (int i=0; i<360; i++)
{
for (int j=0; j<360; j++)
{
if ( wartosc[i][j]>max)
{
max= wartosc[i][j];
}
if (wartosc[i][j]<min)
{
min=wartosc[i][j];
}
}
}
cout<<"Ekstrema funkcji: "<<endl;
cout<<"wartosc maksymalna= "<<max<<endl;
cout<<"wartosc minimalna= "<<min<<endl;
readkey();
return 0;
system ("PAUSE");
}
END_OF_MAIN()
Byłabym bardzo wdzięczna, za jakąkolwiek pomoc, bo zbytnio nie ogarniam C++
Z góry dziękuję : )
mam na zaliczenie za zajęcia napisać program, który będzie obliczał miejsca zerowe i ekstrema funkcji
y=-2x^6+3x^5-x^4+4x^3+5x^2-6x+7
na przedziale [-1.4,2.2]
Napisałam program, ale wyskakują mi błędy związane z linkerami.
Wrzucam to co udało mi się napisać:
#define _USE_MATH_DEFINES
#include <iostream>
#include <allegro.h>
using namespace std;
double y, x, m, n;
//funkcja
double Wartosci_funkcji (int i)
{
double x=-1.4+0.01*i;
double y= -2*(pow(x,6))+3*(pow(x,5))-(pow(x,4))+4*(pow(x,3))+5*(pow(x,2))-6*x+7;
return y;
}
double bisekcja(double a,double b)
{
double x=abs((a+b)/2);
double y=-2*(pow(x,6))+3*(pow(x,5))-(pow(x,4))+4*(pow(x,3))+5*(pow(x,2))-6*x+7;
double m=-2*(pow(a,6))+3*(pow(a,5))-(pow(a,4))+4*(pow(a,3))+5*(pow(a,2))-6*a+7;
double n=-2*(pow(b,6))+3*(pow(b,5))-(pow(b,4))+4*(pow(b,3))+5*(pow(b,2))-6*b+7;
return y, m, n;
}
//main
int main()
{
double wartosc[360][360];
allegro_init();
install_keyboard();
set_color_depth(desktop_color_depth());
clear_to_color( screen, makecol( 255, 255, 255 ) );
set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);
acquire_screen();
for (int i=0; i<360; i++)
{
for (int j=0; j<360; j++)
{
wartosc[i][j]= Wartosci_funkcji (i);
putpixel (screen, 100+i, 400-wartosc[i][j], makecol(125,125,125));
}
}
release_screen();
/*for (int i=0; i<360; i++)
{
for (int j=0; j<360; j++)
{
wartosc[i][j]= Wartosci_funkcji (i);
if ( wartosc[i][j]=0)
{
cout<<"miejsce zerowe: "<<wartosc[i][j]<<endl;
continue;
}
}
}*/
double a=-1.4, b=2.2;
if (y>=1/(10*10*10*10*10*10*10*10*10*10))
{
bisekcja(a,b);
if(m*y<0)
{
a=a;
b=x;
}
else
{a=x; b=b;}
if(x*n<0)
{ a=x; b=b;}
else
{a=a; b=x;}
}
else
{cout<<"miesce zerowe: "<<x<<endl;}
double max=0, min=0;
for (int i=0; i<360; i++)
{
for (int j=0; j<360; j++)
{
if ( wartosc[i][j]>max)
{
max= wartosc[i][j];
}
if (wartosc[i][j]<min)
{
min=wartosc[i][j];
}
}
}
cout<<"Ekstrema funkcji: "<<endl;
cout<<"wartosc maksymalna= "<<max<<endl;
cout<<"wartosc minimalna= "<<min<<endl;
readkey();
return 0;
system ("PAUSE");
}
END_OF_MAIN()
Byłabym bardzo wdzięczna, za jakąkolwiek pomoc, bo zbytnio nie ogarniam C++
Z góry dziękuję : )