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

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

Войти
Регистрация
Восстановить пароль
 
andreyananas
22 / 22 / 9
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
#1

Программа по вычислению корней нелинейных уравнений - C++

20.04.2014, 21:29. Просмотров 274. Ответов 0
Метки нет (Все метки)

Нужна помощь с программой по вычислению корней нелинейных уравнений.\

Суть задачи научится пользоваться указателем на функцию.

Вообщем есть две функции в каких нужно найти корни методом половинного деления (дихотомии).
http://www.cyberforum.ru/cgi-bin/latex.cgi?\cos \frac{t}{x}-2\sin \frac{1}{x}+\frac{1}{x}=0,     x\in [a;b]

http://www.cyberforum.ru/cgi-bin/latex.cgi?\sin(\ln (x))-\cos(\ln (x))+t\ln(x)=0 http://www.cyberforum.ru/cgi-bin/latex.cgi?, x\in [a;b]



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
#include <iostream>
#include <windows.h>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
double fun1 (double, double);
double fun2 (double, double);
double otvet_X ( double (*unf)(double, double), double, double, double, double);
 
int main()
{
    SetConsoleOutputCP(1251);
    double t(0.0), a(0.0), b(0.0), eps(0.0), x(0.0);
    char con;
    do
    {
        system("cls");
        cout << "\n Программа по вычислению корней нелинейных уравнений: " << endl;
        cout << " 1) cos(T/x)-2*sin(1/x)+1/x=0, x Є [a;b] " << endl;
        cout << " 2) sin(log(x))-cos(log(x))+T*log(x)=0, x Є [a;b] " << endl;
        cout << " (методом половинного деления)" << endl;
        cout << "\n Введите T: ";
        cin >> t 
        cout << " Введите начало отрезка, на котором осуществляется поиск корня (a): ";
        cin >> a
        cout << " Введите конец отрезка, на котором осуществляется поиск корня (b): ";
        cin >> b
        cout << " Введите точность (eps): ";
        cin >> eps
        double (*ukazatel_f)(double, double); //указатель на функцию
        ukazatel_f=fun1;
        x=otvet_X(ukazatel_f, a, b, eps, t);
        cout << "\n\n Cos(" << t << "/x)-2*Sin(1/x)+1/x=0, x Є [" << a << ";" << b << "] " << endl;
        cout << " корень x=" << x << endl;
        ukazatel_f=fun2;
        x=otvet_X(ukazatel_f, a, b, eps, t);
        cout << "\n Sin(log(x))-Cos(log(x))+" << t << "*log(x)=0, x Є [" << a << ";" << b << "] " << endl;
        cout << " корень x=" << x << endl;
        cout << "\n\n Для продолжения программы введите - y: " << endl;
        cout << " для завершения программы введите любой символ... " << endl;
        cin >> con;
    }
    while(con=='y');
    return 0;
}
 
double fun1 (double x, double T)
{
    return (cos(T/x)-2*sin(1.0/x)+1.0/x);
}
 
double fun2 (double x, double T)
{
    return (sin(log(x))-cos(log(x))+T*log(x));
}
 
double otvet_X (double (*unf)(double, double), double B, double E, double eps, double T)
{ double x;
  while (fabs(E-B)>eps)
  {   x=(B+E)/2.0;
      ((*unf)(B,T)*(*unf)(x,T) > 0) ? (B=x) : (E=x);
  }
  return x;
}
Добавлено через 4 минуты
Вообщем в ответе какая то ерунда, иногда показывает одинаковые корни в двух функциях(
---------------
Еще при некоторых вводах, онлайн калькулятор показывает - нету корней или х=0
Как сделать, что бы программа видела такие моменты?

Добавлено через 13 часов 12 минут
ап хелп ми)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2014, 21:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа по вычислению корней нелинейных уравнений (C++):

В С++ программа по вычислению функций - C++
Задали в универе сделать В С++ программу, а я никогда с ним не сталкивался, но так вот,напишите,кто может: &quot;написать программі на языке С++...

программа по вычислению последовательности чисел - C++
Очень прошу помочь начинающей программистке:curtsy: Задача заключается в написании программы, которая сосчитает вводную...

Программа по вычислению значения выражения - C++
Здравствуйте, как можно написать код по решению этого примера? Остановился на этом моменте и не могу понять как возвести в степень и...

Программа по вычислению Ряда Тейлора - C++
Условие: Составить алгоритм и написать программу, которая вычисляет и выводит на экран в виде таблицы значения функции, заданной с...

Ввод нелинейных уравнений - C++
Пишу курсовую работу на тему : &quot;Решение нелинейных уравнений методом Ньютона&quot; , в общем написал сам алгоритм метода Ньютона , но функции и...

Решение нелинейных уравнений - C++
Реализуйте алгоритмы методов нахождения корней нелинейного уравнения заданного согласно варианту и вычислите все его корни в заданном...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2014, 21:29
Привет! Вот еще темы с ответами:

Решение нелинейных уравнений - C++
Нужно две программы по блок схемам на картинках , которые решают данное уравнение x^3+3x^2+6x-1=0 двумя способами: 1.Методом хорд ...

Система нелинейных уравнений - C++
Имеется задача \begin{cases} f_1(\overline x)=0\\ f_2(\overline x)=0\\ ...\\ f_n(\overline x)=0\\ \end{cases} где...

Система нелинейных уравнений - C++
Добрый день, помогите решить систему m*x^2+m*y^2+m*z^2-1=0 a1*x + a2*y + a3*z=0 b1*x + b2*y + b3*z=0 где m, a1-a3, b1-b3...

Решение нелинейных уравнений - C++
Нужно решить нелинейное уравнение комбинированным методом хорд и касательных в общем виде.Помогите, пожалуйста...


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

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

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