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

метод Эйткена-Стеффенсона - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
fits
3 / 3 / 1
Регистрация: 08.12.2012
Сообщений: 47
26.04.2013, 23:26     метод Эйткена-Стеффенсона #1
помогите пожалуйста!

9. Создать набор функций для вычисления с точностью ε =10-5 значения корня уравнения F(x)=0 на интервале [a, b] методом Эйткена-Стеффенсона. Имя конкретной функции F(x) передать вызываемой подпрограмме как параметр. Полагается, что F(a)*F(b)<0, т.е корень находится на отрезке [a,b].

Указание. Метод обеспечивает решение уравнения F(x)=0 по следующему алгоритму.

1. Задаем начальное приближение xn= x0 (x0 [ a , b ])

2. Находим первое приближение x1 = F(x0) и второе приближение

x2 = F(x1).

3. Вычисляем xn+1 =(x0x2 - x12)/(x0 - 2x1+x2).

4. Проверяем условия | xn+1 - xn| > ε , x0 - 2 x1 +x2 0. Если эти условия

соблюдаются, идём к п.1., т.е задаем для xn новое значение xn+1 , в про-тивном случае останавливаем счёт и получаем x = xn+1.

1. Рассмотреть вариант:

x-Sinx-0.3=0

a=1, b=2 ОТВЕТ: x=1.171229

2. Рассмотреть вариант:

3.94x3-11.8x2-1.56x+18.67=0

a=1.8, b=2 ОТВЕТ: x=1.94
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2013, 23:26     метод Эйткена-Стеффенсона
Посмотрите здесь:

Объясните метод Эйткена C++
метод деления отрезка пополам и метод итерации C++
Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) C++
C++ Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя)
C++ Производный класс: метод возведения в произвольную степень, и метод для вычисления логарифма числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cyberbrain1000
 Аватар для cyberbrain1000
23 / 23 / 3
Регистрация: 15.04.2013
Сообщений: 62
27.04.2013, 09:55     метод Эйткена-Стеффенсона #2
вот для второй функции
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
#include <stdio.h>
#include <math.h>
 
// x = x + 3.94*x*x*x-11.8*x*x-1.56*x+18.67
double f(double x)
{
  //return sin(x) +.3;
  return 3.94*x*x*x-11.8*x*x-0.56*x+18.67;
}
 
double Solve(double x, double epsilon)
{
  double x1,x2,xold,tmp;
  do
  {
    xold=x;
    x1=f(x);
    x2=f(x1);
    tmp=x-2*x1+x2;
    x=(x*x2-x1*x1)/tmp;
  } while (fabs(xold-x)>epsilon && tmp!=0);
  return x;
}
 
int main()
{
  printf("3.94*x*x*x-11.8*x*x-0.56*x+18.67, [a; b]=[1.8; 2.0]");
  printf("\nnx0 = %f",Solve(1.9, 1e-5));
}
fits
3 / 3 / 1
Регистрация: 08.12.2012
Сообщений: 47
28.05.2013, 20:01  [ТС]     метод Эйткена-Стеффенсона #3
скажи ,пожалуйста,почему при вызове функции интервал начинается с 1.9 а по условию 1.8?
cyberbrain1000
 Аватар для cyberbrain1000
23 / 23 / 3
Регистрация: 15.04.2013
Сообщений: 62
29.05.2013, 10:26     метод Эйткена-Стеффенсона #4
исправь на 1.8
fits
3 / 3 / 1
Регистрация: 08.12.2012
Сообщений: 47
04.06.2013, 20:37  [ТС]     метод Эйткена-Стеффенсона #5
тогда ответ не совпадает
cyberbrain1000
 Аватар для cyberbrain1000
23 / 23 / 3
Регистрация: 15.04.2013
Сообщений: 62
05.06.2013, 08:22     метод Эйткена-Стеффенсона #6
в условии задачи написано:
>1. Задаем начальное приближение xn= x0 (x0 [ a , b ])
то есть можно взять любым из интервала, так что 1.9 подходит
Yandex
Объявления
05.06.2013, 08:22     метод Эйткена-Стеффенсона
Ответ Создать тему
Опции темы

Текущее время: 09:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru