Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 5.00
Джирайя
3 / 3 / 0
Регистрация: 20.04.2010
Сообщений: 64
#1

Метод Ньютона+Половинного деления! - C++

14.09.2010, 00:39. Просмотров 3552. Ответов 5
Метки нет (Все метки)

Добрый вечер! Незнаю как тут обстоят дела с вычислительными методами, но надеюсь ктото сможет помочь)
По заданию курсового, надо написать комбинированный метод Ньютона(косательных) и Половинного деления, и сравнить его производительность с каждым методом по отдельности...
Методы по отдельнотси я сделал... а вот скомбинировать их никак не получается... да еше и чтобы производительности (n) была ниже чем по отдельности... уже весь инет излазил...
Может ктото сможет помочь сделать этот комбинированный метод, или алгорит, или какую-нить ссылку на информацию о этом комбо методе) вобщем буду благодарен за любую полезную информацию)
Вот то что я написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<iostream.h>
 
double f(double x)
{
   return cos(x)-x*x*x;
}
 
double f1(double x)
{
   return -sin(x)-3*x*x;
}
 
 
double Del2(double a, double b, double eps) {
  double x,y,y1;
  int n=0;
  do {
     x=a;
     y=f(x); n++;
     x = (a + b ) / 2;
     y1=f(x); n++;
 
     if ((y*y1)<=0)  b=x;
    else   a=x;
 
 
  }  while( fabs(b-a)>eps);
 
  cout<<"Koren' uravnenia= "<<x<<";   Xodov: "<<n<<";   Pogreshnoct': "<<eps<<"\n\n";
  return x;
}
 
 
double Newton(double x, double eps) {
  double t;
  int n=0;
  do {
 
     t = f(x)/f1(x);
     x -=t;
     n+=2;
  }  while (fabs(t) > eps);
 
  cout<<"Koren' uravnenia= "<<x<<";   Xodov: "<<n<<";   Pogreshnoct': "<<eps<<"\n\n";
  return x;
}
 
//-----------------------------------------------------------------
int main() {
  clrscr();
  double a=-10,b=10,eps=0.0001;
 
 
  cout<<"\n METOD DELENIA HA 2:\n";
  Del2(a,b,eps);
 
  cout<< "\n METOD KASATELNIH:\n";
  Newton(b,eps);
 
  getch();
  return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2010, 00:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод Ньютона+Половинного деления! (C++):

Вычислить arcsin(x) методом половинного деления и Ньютона - C++
Здравствуйте. У меня такое задание: Вычислите методами половинного деления и Ньютона: arcsin(a), arccos(a), arctan(a) на ЭВМ, умеющей...

Нахождения корней уравнения: метод половинного деления (бисекции) или метод хорд - C++
Разработать программу нахождения корней уравнения f(x) =0 на интервале с точностью e = 0,001 (интервал или подобрать самостоятельно). При...

Метод половинного деления. - C++
Нужно написать программу вводишь любые цифры она их сортирует по возрастанию и показывает использовать &quot;метод половинного...

Метод половинного деления - C++
Скажите почему не выводит &quot;c&quot; #include &lt;stdafx.h&gt; #define _USE_MATH_DEFINES #include &lt;cmath&gt; #include &lt;math.h&gt; #include...

Метод половинного деления - C++
Метод половинного деления для функции x^2-3*sin(x)=0; Корнями должны быть -1.7 и 0...на промежутке от -2 до -1 работает и находит -1.7.а...

Метод половинного деления. - C++
Программа в 3-х файлах с «заглушками». Спецификация функций (заголовочный файл): 1. Печать сообщения о назначении программы и ее...

5
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
14.09.2010, 11:24 #2
Если у вас курсовик по вычмату, то у вас этот предмет явно был, и вы должны были проходить как методы, так и их комбинации... Помню, что метод касательных комбинируется с методом хорд, но вот как объединить бисекцию с касательными, что-то не соображу... Возможно, вы это проходили, вы либо не помните этого, либо прогуляли...
0
Джирайя
3 / 3 / 0
Регистрация: 20.04.2010
Сообщений: 64
14.09.2010, 11:57  [ТС] #3
На эту тему была посвещена 1 лекция, где рассказалось только о каждом методе по отдельности!
0
Джирайя
3 / 3 / 0
Регистрация: 20.04.2010
Сообщений: 64
15.09.2010, 21:47  [ТС] #4
Неужели никто не сталкивался с этим?
0
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 835
20.09.2010, 16:24 #5
Найти корень уравнения на заданном интервале {a,b} с точностью эпсилом=0,00001
(x-1)^2-0,5 e^x=0
интервал {-0,2;0,3}
надо и в паскале и так решить уравнения,помогите пожалуйста
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
20.09.2010, 16:34 #6
zmei89,
"так" - это как? На бумажке? Тогда какое отношение ваш пост имеет к Си/Си++ и этой теме конкретно?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2010, 16:34
Привет! Вот еще темы с ответами:

метод половинного деления - C++
дана f(x). дан отрезок на котором расположены положительные корни дана точность E могу написать функцию, для нахождения одного корня...

Метод половинного деления - C++
Дана функция с промежутком. Нужно найти все корни на этом промежутке методом половинного деления (корней несколько). Один корень найти...

Метод половинного деления - C++
необходимо было написать программу, которая отделяет корни уравнения методом половинного деления с погрешностью 0,0001. первый корень...

Метод половинного деления - C++
Не пойму в чем ошибка, поскажите:wall: #include &lt;math.h&gt; #include &lt;iostream&gt; #include &lt;graphics.h&gt; using namespace std; const int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
20.09.2010, 16:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru