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

Метод итераций - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Почему произведение всегда равно 0? http://www.cyberforum.ru/cpp-beginners/thread1113729.html
#include <iostream> #include <ctime> using namespace std; int main() { setlocale(LC_ALL, "rus"); srand(time(0)); const int n = 3, m = 5; int a; for (int i = 0; i<n; i++)
C++ Определить функции итератора, вне класса Есть класс, к примеру очередь Queue, и есть итератор этого класса, объявленный внутри класса, как его public член. Я хочу определить функции итератора, вне класса. Так вот, как это сделать, особенно если мне надо чтобы функция оперировала, к примеру возвращала, класс итератор. Короче отвратительно объяснил, но вот реализация самого класса(кстати тоже отвратительная, но как мог :) ) : 1)... http://www.cyberforum.ru/cpp-beginners/thread1113727.html
C++ При запуске проверить, установлен ли фреймворк
люди,помогите,пишу на платоформе НЕТ,посоветуйте какойто код что поможет сделать следующее: прога при запуске проверяет установлен ли фрамеворк,если да то запускает основную программу если нет то запускает другую зарание благодарен!!!
C++ Движение шарика по законам геометрической оптики
Нужна помощь форумучан. Суть в заголовке. Нужно сделать что бы шарик отскакивал от стенок по закона геометрической оптики. Появится этот шар должен по щелчку мыши. Буду благодарен за помощь . Аналогия этому игра "арканойд"
C++ Определить, можно ли заполнить бочку используя ведра только один раз http://www.cyberforum.ru/cpp-beginners/thread1113714.html
Дана бочка, ёмкостью b и N штук разного объёма V вёдер. МОжно ли заполнить бочку используя ведра только один раз
C++ Создать два новых массива, в один из которых поместить положительные элементы массива, а в другой отрицательные и нулевые элементы Написать программу , которая вводит с клавиатуры массив из N вещественных чисел , создает два новых массива , в один из которых помещает положительные элементы массива , а в другой отрицательные и нулевые элементы,и выводит результат пользователю ; затем вводит с клавиатуры строку длиной не более 200 символов , ищет в ней самое короткое слово и выводит его пользователю подробнее

Показать сообщение отдельно
dogg12
 Аватар для dogg12
58 / 24 / 6
Регистрация: 21.02.2011
Сообщений: 532
07.03.2014, 22:45     Метод итераций
x*x*x+2*x+6*(log(2+10*sqrt(3)))=0
отрезок: [-3;-2]
Это сама задача, вот код программы:
У меня такой вопрос, решабильно ли данное уравнение методом итераций, по заданию оно должно решатся. Но у меня получается, что в данном уравнении данный метод не сходится. Подскажите, что не так.
P.здавал похожую тему в разделе "Численные методы", но там люди не сильно сильны в программировании, поэтому решил продублировать тему здесь.
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
66
67
68
69
#include <stdio.h>
#include <conio.h>
#include <math.h>
//Вычисление значения функции F(x)=0
double f(double x)
{   
        return x*x*x+2*x+6*(log(2+10*sqrt(3)));
}
 
 
//Вычисление значения первой производной функции F'(x)=0
double f1(double x)
{     
        return 3*x*x+2;
}
 
//Вычисление значения второй производной функции F''(x)=0
double f2(double x)
{ 
        return 6*x;
}
 
//Вычисление эквивалентной функции для метода итераций
double fe(double x,double lambda)
{
    return x-lambda*f(x);
}
 
//Вычисление первой производной эквивалентной функции для метода итераций
double fe1(double x,double lambda)
{
    return 1-lambda*f1(x);
}
//Поиск корня методом итерации
int iterac(double a, double b, double e, double *x,double lambda)
{
int n=0;
double x0=(b+a)/2.0,fx,last;
//Проверка сходимости
if(fabs(fe1(a,lambda))>=1||fabs(fe1(b,lambda))>=1) return -1;
fx=x0;
do
  {
  last=fx;
  fx=fe(last,lambda);
  n++;
  }
  while(fabs(fx-last)>e);
*x=fx;
return n;
}
 
int main()
{
    int it;     //кол-во точек и итераций
    double e,x;
    printf("e = ");
    scanf("%lf",&e);    //ввод погрешности вычислений
    printf("Metod iteracii.\n");
    it=iterac(-3.0,-2.0,e,&x,1/f1(1.5));
    if(it==-1) printf("Metod ne shoditsya.\n");
    else
    {
        printf("x=%lf\t%d iteraciy\t\n",x,it);
    }
 
    getch();        //пауза
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru