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

Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд) - C++

Восстановить пароль Регистрация
 
wertrix
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 49
27.10.2010, 15:30     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд) #1
Вот такая задача:
Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (решение с помощью метода хорд).
Уравнение такое: x^4-x^3-2.5
A=1; B=2; E=10;
Пожалуйста, прошу помощи.

Добавлено через 23 часа 33 минуты
не понимаю совсем как работают эти фунции...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2010, 15:30     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд)
Посмотрите здесь:

нахождение корня на интервале C++
C++ Нахождение корня методом хорд
Решение нелинейного уравнения. Метод хорд и касательных C++
C++ найти все корни уравнения на заданном интервале [a;b] с заданной точностью
Использование стандартных функций (найти все корни уравнения на заданном интервале [a;b] с заданной точностью) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mary-lavina
1 / 1 / 0
Регистрация: 31.12.2009
Сообщений: 9
27.10.2010, 16:39     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд) #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
double f(double x){
        return x^4-x^3-2.5;
}
void metod_hord(){
        double a=1; b=2; E=10;
        do {
                c=a-(f(a)*(b-a))/(f(b)-f(a));
            double r=(b-a)/2;
            if ((fabs(f(c)))<=E || r<=E)
                break;
            else{
                if (f(a)*f(c)<0)
                                b=c;
                else
                    a=c;}
        }while((b-a)/2>E);
        c=a-(f(a)*(b-a))/(f(b)-f(a));
}
Только я както сомневаюсь, что погрешность E=10 - уж слишком много, может быть 10^(-5)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
27.10.2010, 16:40     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд) #3
mary-lavina,
C++
1
return x^4-x^3-2.5;
ВТФ? Побитовое XOR между x и 4, x и 3???
В С/C++ ^ - побитовое исключающее или, а не степень
mary-lavina
1 / 1 / 0
Регистрация: 31.12.2009
Сообщений: 9
27.10.2010, 17:08     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд) #4
Lavroff,
забыла исправить, тупо скопировала из вопроса...мой косяк
C++
1
return pow(x, 4)-pow(x, 3)-2.5;
wertrix
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 49
27.10.2010, 17:55  [ТС]     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд) #5
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
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
 
using namespace std;
 
double f(double x)
{
    return pow(x, 4)-pow(x, 3)-2.5;
}
void method_hord()
{
    double a=1, b=2, E=10, c;
    do
    {
        c=a-(f(a)*(b-a))/(f(b)-f(a));
        double r=(b-a)/2;
        if ((fabs(f(c)))<=E || r<=E)
            break;
            else
            {
                if (f(a)*f(c)<0)
                b=c;
                    else
                        a=c;
            }
    }
    while((b-a)/2>E);
        c=a-(f(a)*(b-a))/(f(b)-f(a));
        cout << "\n" << c;
}
fatal error LNK1120: 1 неразрешенных внешних элементов
1>
1>СБОЙ построения.
где ошибка?
mary-lavina
1 / 1 / 0
Регистрация: 31.12.2009
Сообщений: 9
27.10.2010, 18:48     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд) #6
Да, в консоли не работает, попробуй сделай простейшую форму (1 кнопка, 1 лейбл)
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
static double a, b, c;
static double E=0.000001;
double f(double x)
{
        return pow(x, 4)-pow(x, 3)-2.5;
}
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
a=1, b=2;
 
        do
        {
                c=a-(f(a)*(b-a))/(f(b)-f(a));
                double r=(b-a)/2;
                if ((fabs(f(c)))<=E || r<=E)
                        break;
                        else
                        {
                                if (f(a)*f(c)<0)
                                b=c;
                                        else
                                                a=c;
                        }
        }
        while((b-a)/2>E);
                c=a-(f(a)*(b-a))/(f(b)-f(a));
                label1->Text=String::Concat("x=", Convert::ToString(c));
}
Так всё работает
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
27.10.2010, 18:53     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд) #7
wertrix, а где main? Вобщем и библиотеки хорошо бы лишние убрать. mary-lavina, оригинальный способ исправления ошибок линковки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2010, 21:28     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд)
Еще ссылки по теме:

C++ Линейное уравнение у = Ах + В.Реализовать метод Root()— вычисление корня линейного уравнения
C++ Найти значение корня на заданном интервале с заданной точностью
C++ Найти корень уравнения на интервале [a,b] с заданной пользователем точностью

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

Или воспользуйтесь поиском по форуму:
mary-lavina
1 / 1 / 0
Регистрация: 31.12.2009
Сообщений: 9
27.10.2010, 21:28     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд) #8
KuKu,
лёгких путей не ищем)) 0
А серьёзно спасибо, что исправили, а то моя невнимательность меня когда-нибудь погубит(((
Yandex
Объявления
27.10.2010, 21:28     Отыскание корня уравнения f(x)=0 на интервале (A,B) с точностью Е (метод хорд)
Ответ Создать тему
Опции темы

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