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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
ForestG
34 / 34 / 3
Регистрация: 21.11.2009
Сообщений: 201
#1

Метод половинного деления...(непонятная функция) - C++

01.05.2010, 14:10. Просмотров 1423. Ответов 17
Метки нет (Все метки)

Программка, для реализации численного метода половинного деления СЛАУ

а^x-b - c - x = 0

а , b , c - вводятся!!!

Что то сколько не просмотрел уравнений нигде в уравнениях, я не увидел что бы "а" "b" "c" , были сразу в уравнении и что бы они еще и вводились

Что то не понятно!!!!!!!!!! Получаются, - "а" "b" "c" это переменные???

Я просто рассмотрел пример, но не понял как применить его к моему варианту...

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
#include <conio.h>
#include <math.h>
#include <iostream>
#define pi 3.14
 
using namespace std;
 
double f(double x)
{
  return   x*x-(cos(pi*x));
}
 
int main()
{
        int n=0;
        double a,b, c1,c,eps;
 
        cout<<"a = "; cin>>a;
        cout<<"b = "; cin>>b;
        cout<<"c = "; cin>>c1;
        
        cout<<"eps="; cin>>eps;
        
        do
        {
                c = (a + b ) / 2;
                
                if(f(c)*f(a)<=0)
                {
                    b=c;
                }
 
                else 
                {
                    a=c;
                }
 
                n+=1;
 
        }
 
        while( fabs(a - b) >= eps);
        {
                cout<<"c="<<c<<"\n";
                cout<<"n="<<n<<"\n";
        }
 
                _getch();
 
        return 0;
}
А еще вопрос,а для построения графика по идее мне нужно получить все решения (то есть корни)....
А то просто не понятно вот получу я 1-н корень, но это при условии если вообще решу уравнение, ну и вот и что график получится у меня точка ???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2010, 14:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод половинного деления...(непонятная функция) (C++):

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

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

Метод половинного деления в си++ - C++
Листинг программы метода половинного деления на си++ для функции:tgx-1/3(tgx)^3+1/5(tgx)^5-1/3=0?

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

Метод половинного деления - C++
Добрый вечер! значит так господа, помогите реализовать этакий метод вот в таком случае: вводится число и надо вычислить его корень...

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

17
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
01.05.2010, 16:04 #2
Цитата Сообщение от ForestG Посмотреть сообщение
а^x-b - c - x = 0
а , b , c - вводятся!!!
Что то сколько не просмотрел уравнений нигде в уравнениях, я не увидел что бы "а" "b" "c" , были сразу в уравнении и что бы они еще и вводились
Что то не понятно!!!!!!!!!! Получаются, - "а" "b" "c" это переменные???

т.е. ?
если у вас уравнение такого вида , например
11^x-8-21-x=0
То a=11 b=8 c=21
0
ForestG
34 / 34 / 3
Регистрация: 21.11.2009
Сообщений: 201
01.05.2010, 23:15  [ТС] #3
Извиняюсь, с формулой ошибся, а точнее не верно оформил а^(x-b) - c - x = 0
где (x-b) - это степень
0
CyBOSSeR
Эксперт С++
2307 / 1680 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 23:17 #4
ForestG, в чем проблема? Формула есть, коэффициенты вводятся, что не понятно то?
0
ForestG
34 / 34 / 3
Регистрация: 21.11.2009
Сообщений: 201
01.05.2010, 23:23  [ТС] #5
Да нет это понятно, единственное не разберусь, а, b, с как с ними работать...
Просто в коде который я нашел там просто формула x*x-(cos(pi*x)); - тут не видно никаких a,b ит.д....
И вот читал теорию, тоже не пойму, там сказано что нужно брать какой - то отрезок [a,b]- откуда его брать???? Произвольно или как-то еще...

Добавлено через 57 секунд
Блин что ж я такой тупой то

Добавлено через 2 минуты
Цитата Сообщение от ForestG Посмотреть сообщение
if(f(c)*f(a)<=0)
Мы тут функции возвращаем, a*b - верно???

Добавлено через 1 минуту
Ой с * а, прошу прощения, да же объяснить не могу по человечески
0
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
01.05.2010, 23:25 #6
Цитата Сообщение от ForestG Посмотреть сообщение
Мы тут функции возвращаем, a*b - верно???

тут мы проверяем меньше ли нуля или равно нулю произведение f(c)*f(a)
1
CyBOSSeR
Эксперт С++
2307 / 1680 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 23:27 #7
Цитата Сообщение от ForestG Посмотреть сообщение
Мы тут функции возвращаем, a*b - верно???
Во-первых здесь ничего не возвращается, здесь умножается значение функции при значении аргумента равному a на значение функции при значении аргумента равному b, далее проверяется меньше ли это произведение нуля.
1
ForestG
34 / 34 / 3
Регистрация: 21.11.2009
Сообщений: 201
01.05.2010, 23:39  [ТС] #8
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Во-первых здесь ничего не возвращается, здесь умножается значение функции при значении аргумента равному a на значение функции при значении аргумента равному b, далее проверяется меньше ли это произведение нуля.
Согласен, я просто косноязычный...

Добавлено через 2 минуты
Так отрезок в котором мы будем выполнять, вот эту операцию c = (a + b ) / 2;

Мы ведь задаем его верно!!! Кажется я начал вникать...
Ну при условии если это так!

Добавлено через 3 минуты
А вот еще вопрос, а корнями что у меня будет???
А и в добавок fabs(a - b) - это же как я понимаю какая -то встроенная функция???

Добавлено через 1 минуту
Цитата Сообщение от ForestG Посмотреть сообщение
Во-первых здесь ничего не возвращается, здесь умножается значение функции при значении аргумента равному a на значение функции при значении аргумента равному b, далее проверяется меньше ли это произведение нуля.
Причем меньше либо равно

Добавлено через 3 минуты
Ну ладно вы наверное устали от моего бреда спасибо за внимание...
0
CyBOSSeR
Эксперт С++
2307 / 1680 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 23:39 #9
Насколько я понял, в твоем случае имеет место функция:
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}^{\left(x-b \right)}-c-x
a, b, и c являются коэффициентами и вводятся пользователем. Они являются константными.
Также пользователь вводит значения начала и конца отрезка, на котором тебе необходимо найти такое значение x при котором значение функции равно нулю.
Вот вся задача.
0
ForestG
34 / 34 / 3
Регистрация: 21.11.2009
Сообщений: 201
01.05.2010, 23:52  [ТС] #10
По идее так они и есть ...
1. a,b,c - константы а = 3, b =1, c =2
2. А вот задавать интервал, думаю да, так как я не понял теорию, а вот корней у меня будет много по идее или корень должен быть один, в теории по моему написано 1, но я тогда вообще не пойму зачем тогда интервал брать???
Я когда увидел это уравнение я подумал, что его ребенок решит, думал зачем тут интервал брать и там кучу проверок делать...
Тупо подставил а = 3, b =1, c =2 и нашел дурацкий x, т.е Корень, а в теории все по другому...
И что самое интерсное мне даже училка, не удосужилась объяснить, почему именно так...

Добавлено через 2 минуты
Лучше подскажите, что с корнями то делать, я просто еще и график буду делать по ним.... А вот опять вопрос... х - то понятно а вот Y - какое значение будет принимать??????

Добавлено через 2 минуты
Просто тупо все значения заданного отрезка ведь так???

Добавлено через 48 секунд
Я конечно понимаю, с этими вопросами мне к учителям, а не к вам.... В принципе можете игнорировать...
0
CyBOSSeR
Эксперт С++
2307 / 1680 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 23:55 #11
Цитата Сообщение от ForestG Посмотреть сообщение
а вот корней у меня будет много по идее или корень должен быть один
На заданном интервале значений может быть и несколько, а может и вообще не быть.
Цитата Сообщение от ForestG Посмотреть сообщение
х - то понятно а вот Y - какое значение будет принимать??????
У тебя есть формула, подставляешь в нее коэффициенты и нужный тебе x, получаешь y.
0
ForestG
34 / 34 / 3
Регистрация: 21.11.2009
Сообщений: 201
02.05.2010, 00:06  [ТС] #12
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
У тебя есть формула, подставляешь в нее коэффициенты и нужный тебе x, получаешь y.
Не понял почему коэффиценты (т.е а , b , c) ???

Добавлено через 6 минут
Нет все же я склоняюсь что Y - должен принимать все значения заданного интервала!!! Не знаю почему, но мне так кажется, т.к мы X - ищем на интервале правильно, значит и Y должен принимать значения этого интервала???
Надо мне опять в школу...

Добавлено через 54 секунды
Может хоть кто нибудь переубедит меня плз....
0
CyBOSSeR
Эксперт С++
2307 / 1680 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
02.05.2010, 00:10 #13
ForestG, еще раз...
У функции есть три коэффициента a, b, и c, данные коэффициенты константы.
Аргументом функции является x. Если тебе необходимо узнать значение функции при некотором x, ты подставляешь в функцию заданные коэффициенты и интересующий тебя x.
1
ForestG
34 / 34 / 3
Регистрация: 21.11.2009
Сообщений: 201
02.05.2010, 00:16  [ТС] #14
Ага все согласен Отдельное спс, за стойкость...

Добавлено через 59 секунд
Я вот тут немного переделал прогу...
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
#include <conio.h>
#include <math.h>
#include <iostream>
 
using namespace std;
 
double f(double x)
{
  return  pow(3, x - 1) - 2;
}
 
int main()
{
 
 
        int n=0;
        double a,b,c,eps;
 
        cout<<"a = "; cin>>a;
        cout<<"b = "; cin>>b;
        cout<<"c = "; cin>>c;
        
        cout<<"eps="; cin>>eps;
        
        do
        {
                c = (a + b ) / 2;
                
                if(f(c)*f(a)<=0)
                {
                    b=c;
                }
 
                else 
                {
                    a=c;
                }
 
                n+=1;
 
        }
 
        while( fabs(a - b) >= eps);
        {
                cout<<"c="<<c<<"\n";
                cout<<"n="<<n<<"\n";
        }
 
                _getch();
 
        return 0;
}
Добавлено через 1 минуту
А вот тут "n" - это же количество корне я прав? А "с" - это и есть мои корни да???

Добавлено через 1 минуту
Цитата Сообщение от ForestG Посмотреть сообщение
cout<<"c = "; cin>>c;
- только вот это мне вообще не нужно
0
CyBOSSeR
Эксперт С++
2307 / 1680 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
02.05.2010, 00:21 #15
Цитата Сообщение от ForestG Посмотреть сообщение
А вот тут "n" - это же количество корне я прав? А "с" - это и есть мои корни да???
n - это количество делений за которое было получен корень. с - это найденный корень.
1
02.05.2010, 00:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2010, 00:21
Привет! Вот еще темы с ответами:

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

Метод половинного деления - C++
Методом половинного деления найти решение следующего нелинейного уравнения с точностью е=0,01; e=0,001; e=0,0001; e=0,00001; e=0,000001. ...

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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