essi-2013
دوشنبه 18 آبان 1394, 00:00 صبح
سلام
لطفا راهنمایی کنید اشکال این برنامه کجاست.
*ریشه تقریبی معادله جبری sinx-x^2=0 را با دقت e=0.00005 به روش وتری و با تقریب های اولیه x0=-1 و x1=1 به دست اورید.
برنامه رو به این صورت نوشتم:
#include<iostream.h>
#include<math.h>
#include<conio.h>
main()
{
float y0,y1,x0,x1,x2,e;
cin>>x0>>x1;
e=0.00005;
y0=sin(x0)-(pow(x0,2));
y1=sin(x1)-(pow(x1,2));
x2=x1-((y1*(x1-x0))/(y1-y0));
while (fabs((x1/x2)-1)>e)
{
x1=x2;
x0=x1;
y0=sin(x1)-(pow(x1,2));
y1=sin(x0)-(pow(x0,2));
x2=(x1-((y1*(x1-x0))/(y1-y0)));
}
if (fabs((x1/x2)-1)<=e)
cout<<x2;
getch();
}
ولی موقعی که برنامه رو run میکنم خطای fault: floating point invalid رو میده. با double هم امتحان کردم تغییری نکرد.
لطفا راهنمایی کنید اشکال این برنامه کجاست.
*ریشه تقریبی معادله جبری sinx-x^2=0 را با دقت e=0.00005 به روش وتری و با تقریب های اولیه x0=-1 و x1=1 به دست اورید.
برنامه رو به این صورت نوشتم:
#include<iostream.h>
#include<math.h>
#include<conio.h>
main()
{
float y0,y1,x0,x1,x2,e;
cin>>x0>>x1;
e=0.00005;
y0=sin(x0)-(pow(x0,2));
y1=sin(x1)-(pow(x1,2));
x2=x1-((y1*(x1-x0))/(y1-y0));
while (fabs((x1/x2)-1)>e)
{
x1=x2;
x0=x1;
y0=sin(x1)-(pow(x1,2));
y1=sin(x0)-(pow(x0,2));
x2=(x1-((y1*(x1-x0))/(y1-y0)));
}
if (fabs((x1/x2)-1)<=e)
cout<<x2;
getch();
}
ولی موقعی که برنامه رو run میکنم خطای fault: floating point invalid رو میده. با double هم امتحان کردم تغییری نکرد.