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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2008, 14:47   #1
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию Помогите вычислить корень

Нужно разработать информационную технологию вычисления приближенного значения корня уравнения с точностью до e. Начальное приближение к корню принять равным 2,5.
ln(x)-x+1.8=0
Заранее извиняюсь за то, что написал не в том разделе.
asd48 вне форума Ответить с цитированием
Старый 30.11.2008, 18:11   #2
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Тебе на чем написать надо???
StarWorm вне форума Ответить с цитированием
Старый 30.11.2008, 18:35   #3
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию

надо на С++
asd48 вне форума Ответить с цитированием
Старый 30.11.2008, 18:37   #4
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

В чем у тебя проблема???
StarWorm вне форума Ответить с цитированием
Старый 30.11.2008, 19:43   #5
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию

do
{
.......
}
while(fabs()>=eps);
printf();
Я не знаю, что надо написать в скобках {} и ()
asd48 вне форума Ответить с цитированием
Старый 30.11.2008, 20:06   #6
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Подмигивание

Вот посмотри... Это не я писал, а взял с нета про полиномы...
Цитата:
#include <math.h>
#include <iostream>
#include <string.h>
#include <conio.h>

using namespace std;
const double Eps=exp(1.0);
double myFunc(double x);

double ByHalf(double L, double R)
{
if(myFunc(L)==0)return L; //L-корень?
if(myFunc(R)==0)return R; //R-корень?
//если разные знаки на концах отрезка
if((myFunc(L)*myFunc(R))<0)
{
if((myFunc(L))>0)
{
double t=R;
R=L;
L=t;
}
double Half=1001;
//пока длина отрезка больше Eps…
while(fabs(R-L)>Eps)
{
Half=(R+L)/2; //…делим пополам отрезок
//если Half — корень
if(myFunc(Half)==0)break;
else{
if(myFunc(Half)<0)
L=Half;
else
R=Half;
}
}
return Half;
}
//если знаки на концах отрезка одинаковы
else return 1001;
}

double myFunc(double x)
{
return log(x)-x+1.8;
}

int main()
{
double x=0;
double xMin=2,xMax=10;
double result=0;
result=ByHalf(xMin,xMax);
printf("Koren = %1.15f",result);

getch();
return 0;
}
Правда пришлось немного переделать!!!
StarWorm вне форума Ответить с цитированием
Старый 30.11.2008, 20:58   #7
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию

все конечно хорошо, но должно выглядеть как-то так:
Код:
#include<iostream>
#include<math.h>
#include<stdio.h>
void main()
{
double x,x0,eps;
x=2.5;
eps=0.001;
do
{
    x=log(x)+1.8;
	 x0=x;
}
  while (fabs(x0-x)>=eps);
  printf("\n Root=%5.2f|=%6.2f\n",x);
 }
Только вот после do я не знаю, как должно все идти.

Модератор: юзаем тег CODE

Последний раз редактировалось MaTBeu; 02.12.2008 в 00:04.
asd48 вне форума Ответить с цитированием
Старый 02.12.2008, 16:34   #8
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Ахахах, )) Я когда-то семинар вёл на эту тему. Поищите в инете методы Ньютона, метод деления пополам, метод секущих.

Посмотрите тут )))
theos вне форума Ответить с цитированием
Старый 02.12.2008, 17:26   #9
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Только вот после do я не знаю, как должно все идти.
Если вы берёте готовый алгоритм на Паскале и даже не пытаясь в нём разобраться переводите его на С, то хотя бы порядок строк сохраняйте...
Код:
#include<iostream.h>
#include<math.h>
#include<stdio.h>
void main()
{
double x,x0,eps;
x=2.5;
eps=0.0001;
do
{
  x0=x;
  x=log(x)+1.8;
}
while (fabs(x0-x) > eps);
printf("Root=%5.2f\n",x);
}
_Dmitry вне форума Ответить с цитированием
Старый 03.12.2008, 21:19   #10
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию

Спасибо, все сделал.
Код:
#include<iostream>
#include<math.h>
#include<stdio.h>
void main()
{
double x,x0,eps;
x0=2.5;
eps=0.001; 
x=log(x0)+1.8;
  do
{
      x0=x;
	x=log(x0)+1.8;	
}
  while (fabs(x0-x)>=eps);
  printf("\n Root=%5.3f \n",x);
 }

Последний раз редактировалось rpy3uH; 03.12.2008 в 21:52.
asd48 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите вычислить функцию Xander Помощь студентам 6 13.11.2008 18:28
Корень квадратный помогите написать Woha Общие вопросы C/C++ 5 27.10.2008 06:18
вычислить кубичиский корень deadh5n1 Помощь студентам 4 22.10.2008 07:07
C# - корень 3 степени TaTT DoGG Общие вопросы .NET 4 26.09.2008 21:53
Джентльмены, помогите, пжлст. каким оператором высчитать корень 5-ой степени числа? Osi@ Помощь студентам 32 03.10.2007 19:52