0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 15
1

Метод половинного деления

22.10.2019, 22:27. Показов 419. Ответов 1
Метки clr (Все метки)

Есть функция 2 - log10(x) которая строится с точность 0,001 на графике

Ниже предоставлен код который выполняет метод половинного деления, проблема заключается в том, что код все время выдает ошибку, какие бы значения я не задавал, что неправильный интервал значений,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
         {
y11=f(xn);;y22=f(xk);
if (y11*y22<0) 
{
n=0; x=xn;
do 
{
y=f(x);
x1 = (xn + xk ) / 2;
y111=f(x1); n++;
if ((y*y111)<=0) xk=x1;
else xn=x1;
}
while( fabs(xk-xn)>eps);
}
else
{
MessageBox::Show( "Будь-ласка, змініть інтервал пошуку, немає коренів", "Помилка введення даних", MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
}
label6->Text = Convert::ToString (x1);
label7->Text = Convert::ToString (n);
         }
Ниже объявление переменных, и конвертация текста из текстбоксов

C++
1
2
3
int n = 0;
double x,x1,xn,xk,eps,y,y111,y11,y22, a, b, c, x0, x2;
#include<math.h>
C++
1
2
3
xn = Convert::ToDouble(textBox1->Text);
xk = Convert::ToDouble(textBox2->Text);
eps = Convert::ToDouble(textBox3->Text);
Вот как я задаю функцию
C++
1
2
3
4
double f (double x)
{
return 2 - log10(x);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2019, 22:27
Ответы с готовыми решениями:

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

Метод половинного деления
Нужно написать код для решения заданного уравнения методом половинного деления. Получилось так. В...

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

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

1
Мозгоправ
1730 / 1024 / 468
Регистрация: 01.10.2018
Сообщений: 2,137
Записей в блоге: 2
24.10.2019, 02:39 2
entropiya, проверять на валидность надо входные данные, а не результаты работы функции. Кстати, вам повезло, что вы вводили допустимые значения xn, xk и eps, а то ещё получили бы исключение на логарифме отрицательного числа.

С кодом, надеюсь, разберётесь.
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
double f(double x)
{
    return 2 - log10(x);
}
 
int main(void) {
    //--------------------------------------------------------
    int n = 0;
    double x, x1, xn, xk, eps, y, y111, y11, y22, a, b, c, x0, x2;
 
    //--------------------------------------------------------
    cout << "enter xn, xk, eps: ";
    cin >> xn >> xk >> eps;
    //--------------------------------------------------------
 
    if (xn <= 0.0 || xk <= 0.0 || eps <= 0.0)
    {
        //MessageBox::Show("Будь-ласка, змініть інтервал пошуку, немає коренів", "Помилка введення даних", MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
        cout << "Illegal data" << endl;
        return 1;
    }
 
    y11 = f(xn);
    y22 = f(xk);
    n = 0; x = xn;
    do
    {
        y = f(x);
        x1 = (xn + xk) / 2;
        y111 = f(x1); n++;
        if ((y * y111) <= 0) xk = x1;
        else xn = x1;
    } while (fabs(xk - xn) > eps);
 
    //label6->Text = Convert::ToString(x1);
    cout << "x1 = " << x1 << endl;
    //label7->Text = Convert::ToString(n);
    cout << "n = " << n << endl;
    //--------------------------------------------------------
    return 0;
}
И, да, в процесс вычислений не вникал. Это вы уж сами.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2019, 02:39

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

Метод половинного деления
необходимо было написать программу, которая отделяет корни уравнения методом половинного деления с...

Метод половинного деления
Методом половинного деления найти решение следующих нелинейных уравнений с точностью e=0.01...

Метод половинного деления
Нужно решить код методом половинного деления. ответ неправильный выдается. Может кто-то подсказать,...

Метод половинного деления
Помогите мне! У меня не вычисляет корень вообще #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru