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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввод массива как с клавиатуры, так и из файла http://www.cyberforum.ru/cpp-beginners/thread1151754.html
Мое задание предполагает что массив будет вводиться на усмотрение пользователя либо с клавиатуры, либо из файла. Как это реализовать по отдельности знаю, а как сделать выбор из двух способов - нет. ...
C++ Error: a function-definition is not allowed here before '{' token| Всем привет. Вот переписал код из учебника под названием "Дирк Хенкеманс и Марк Ли программирование на c++". Код из игры под название "Приключение в пещере" (стр. 119) Вот собстенно код: ... http://www.cyberforum.ru/cpp-beginners/thread1151748.html
C++ Как использовать данные из файла заранее созданного?
Начал изучать файлы, и здесь не знаю, например занес массив чисел в файл закрыл файл и теперь я хочу икористаты эти числа для Других действий например сумму их или что-то как мне эти числа...
Функция сортировки при создания multimap'a C++
Вот кусочек кода: #include <iostream> #include <algorithm> #include <map> #include <functional> using namespace std; bool compare (const pair<string, double>& a, const pair<string, double>&...
C++ Посчитать количество слов в списке, начинающихся и оканчивающихся одной и той же буквой http://www.cyberforum.ru/cpp-beginners/thread1151732.html
Реализуйте односвязный список строк. Напишите функции для подсчета количества слов в списке, начинающихся и оканчивающихся одной и той же буквой. напишите код плиз)
C++ Найти числа до 9999 у которых из 4 цифр совпадает 3 найти числа в интервале n<=9999 если из 4 цифр совпадает 3.Например 4111 , 3393 ,4414 заранее спасибо ! подробнее

Показать сообщение отдельно
andreyananas
22 / 22 / 9
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2

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

20.04.2014, 21:29. Просмотров 272. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru