Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2011, 14:28   #1
ju1sick
 
Регистрация: 13.11.2011
Сообщений: 4
По умолчанию Найти корень уравнения методом хорд

Найти корень уравнения x+pow(2,x)-2 методом хорд......Вроде все правильно, но логарифм в строке if ((x+pow(2,x)-2)*(pow(2,a)*(log(2)*log(2)*2))) почему выдает ошибку


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

#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <tchar.h>
//------------------------------------------------------------------------
float f(float x)
{ return(x+pow(2,x)-2);
} void mal(float a,float b,float e)
{ float g;float y,x1,x2,R,x;int i,z;
while (fabs(b-a)>e) {
if (f(a)*(f((a+b)/2))==0) {
if (f(a)==0) {cout<<"X="<<a<<" f(x)="<<f(a); break;
} else {cout<<"X="<<a<<" f(x)="<<f(a); break;
}} else{if ((f(a))*(f((a+b)/2))<0) {b=(a+b)/2;} else {a=(a+b)/2;}
}}cout<<"X="<<(a+b)/2<<" f(x)="<<f((a+b)/2);
}
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{ float a,b,e;float x,x1,x0; int i;

cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"e=";cin>>e;

if ((x+pow(2,x)-2)*(pow(2,a)*(log(2)*log(2)*2)))
{x1=a;
x0=x1+(x1-b)/((x1+pow(2,x1)-2)-(b-pow(2,b)+2));
}

else
{x1=b;
x0=x1+(x1-a)/((x1-a)/((x1+pow(2,x1)-2)-(a-pow(2,a)+2)));
}
int k=2;
for (i = 0; k!=0; i++)
{
x=x0+(x0-x1)/((x0+pow(2,x0)-2)-(x1+pow(2,x1)-2));
if (fabs(x0-x)<=e){k=0;} else {x1=x0;x0=x;};

}
mal(a,b,e);
getch();
return 0;
}
//------------------------------------------------------------------------
ju1sick вне форума Ответить с цитированием
Старый 13.11.2011, 14:35   #2
Tony Parker
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 52
По умолчанию

Можешь скопировать текст ошибки?
AllSuccess1.ru - каталог полезных курсов.
Tony Parker вне форума Ответить с цитированием
Старый 13.11.2011, 14:37   #3
ju1sick
 
Регистрация: 13.11.2011
Сообщений: 4
По умолчанию

[BCC32 Error] File5.cpp(30): E2015 Ambiguity between 'std::log(float) at d:\программы\с++\embarcadero\rad studio\7.0\include\math.h:260' and 'std::log(long double) at d:\программы\с++\embarcadero\rad studio\7.0\include\math.h:295'
Full parser context
File5.cpp(24): parsing: int main(int,char * *)
ju1sick вне форума Ответить с цитированием
Старый 13.11.2011, 14:42   #4
Tony Parker
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 52
По умолчанию

В math.h 2 функции - log( long double x ) и log( float x ) и компилятор не может выбрать какой использовать, надо указать явно:

Код:
log( (float) 2.0)
либо заменить в коде float на double - должно быть без проблем
AllSuccess1.ru - каталог полезных курсов.
Tony Parker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти корень уравнения методом касательных sparkie Помощь студентам 0 23.06.2011 14:37
Найти корень уравнения методом итераций. MASOFF Помощь студентам 0 28.01.2011 16:42
найти корень методом хорд на с++ Вика 13 Помощь студентам 3 31.10.2010 19:55
найти корень методом хорд в C++ Shikarmo4000 Помощь студентам 2 23.05.2010 14:03
решение уравнения методом хорд и методом Ньютона Маргоша)) Общие вопросы Delphi 1 21.04.2010 20:40