можете помочь с прогой в си?
задание: написать функцию нахождения корня уравнения F(x)=0 методом половинного деления на заданном интервале от 0 до 1 (от a до b). уравнение такое F(x)=ln(x^2+1/2). точность эпсилон должна спрашиваться у пользователя. и в проге надо использовать классы… ну по сути там один класс и функции-члены. я написал и она работает но при разных значениях эпсилон (я его как "e" обозначил) выдаёт один и тот же корень. текст того что у меня получилось выложу позже-сейчас такой возможности нет
16 мая 2009 в 15:02
а.. ну примерно понел как пользоваться-тоесть он по частям выполняет прогу.. и надо найти где он неправильно выполняет
16 мая 2009 в 14:03
призаться чесно-нет… не приходилось ни разу=(
16 мая 2009 в 9:00
Use the debugger, Luke!
Умеешь?
16 мая 2009 в 2:04
нет-не помогла замена знака "<=" на ">"=((
при классе точности к примеру 0.05-выдаёт
log: SING error
и ещё некоторые, к примеру Floating point error: Overflow
=(
это при том что в задании указан как пример-взять класс точности 0.05
14 мая 2009 в 16:02
блин-сейчас на чужом компьютере… а может ктонибудь проверить-работает она или нет, если в этой строке "while (abs(f(x))<=e)"написать так "while (abs(f(x))>e)"?
14 мая 2009 в 16:02
и попутно: насколько я понял-функция логарифма не работает с переменными кроме типа "double".да? просто я до этого их сделал как числа с плавающей точкой, и программа при выполнении выдавала ошибку
14 мая 2009 в 16:01
while (abs(f(x))<=e)
Почему <=, а не > ?
14 мая 2009 в 16:01
хм… опечатался… посмотрю
14 мая 2009 в 15:02
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
class solution
{
float e;
double x;
public: double f(double r);
double dichotomy(void);
};
double solution::f(double r)
{
double l;
double z;
z=r*r+1/2;
l=log(z);
return l;
}
double solution::dichotomy(void)
{
x=0.5;
int a=0;
int b=1;
float e;
float w;
printf ("BBEDNTE KJIACC TO4HOCTN:");
scanf("%f", &e);
while (abs(f(x))<=e)
{
x=(a+b)/2;
w=f(a)*f(x);
if(w>=0) a=x;
if(w<=0) b=x;
}
return x;
}
void main()
{
clrscr();
printf("LN(x^2+1/2)=0\n");
solution ln;
printf("OTBET: %1.2f\n", ln.dichotomy());
}
14 мая 2009 в 13:02
Пока ты не выложил текст, возможности помочь тебе также нет. Выкладывай, не стесняйся.