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

Методы поиска корней уравнения на отрезке, одна маленькая ошибка в коде, подскажите что не так - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программирование с использованием файлов http://www.cyberforum.ru/cpp-beginners/thread551472.html
#include <iostream.h> #include <sstream> #include <conio.h> FILE *fl; typedef struct { char Number; int Time; int Rate; } Conversation;
C++ Программа не проходит тест на acmp.ru http://********/index.asp?main=task&id_task=446 На хоккейном стадионе в одном большом городе расположено большое прямоугольное табло. Оно имеет n строк и m столбцов (то есть состоит из n x m ячеек). Во время хоккейного матча это табло служит для отображения счета и времени, прошедшего с начала тайма, а в перерывах на нем показывают различную рекламу. В связи с этим возникла задача проверки... http://www.cyberforum.ru/cpp-beginners/thread551466.html
C++ Дириктория действующего файла; Содержание папки;
1) Как получить строку , или что-то типа того, содержащую путь к выполняемой программе или каталогу, где эта программа выполняется? Пример: выполняется программа "C://root/progs/a.exe", как внутри программы получить строку, которая написано в скобках? Или такую строку: "C://root/progs/", не важно. Аналог на php: $_SERVER; 2) Как получить что-нибудь вроде массива из имен всех файлов, лежащих в...
Обработка одномерных динамических массивов C++
1. Удалить из массива положительный элемент. 2. Вставить число 99 после второго элемента массива. 3. Удалить все элементы, кратные 3 или 8. 4. Вставить по одному элементу перед всеми элементами, кратными числу 17. 5. Вставить по одному элементу перед всеми нечетными элементами.
C++ В двумерном массиве определить количество строк, содержащих элементы равные -47 http://www.cyberforum.ru/cpp-beginners/thread551460.html
1. В двумерном массиве, элементами которого являются целые числа, подсчитать среднее арифмитическое элементов кратных 31. 2. В двумерном массиве определить кол-во строк, содержащих элементы равные -47. 3. В двумерном массиве для каждого столбца найти сумму положительных элементов, кратных 13 и записать данные в новый массив. 4. В двумерном массиве размерности (3х5) поменяйте местами...
C++ Поиск и замена в Memo Требуется организовать поиск в Memo через FindDialog, Однако получается найти и выделить только самое первое совпадение. Как перейти дальше и искать все совпадения до конца? int SelPos = Memo1->Lines->Text.Pos(FindDialog1->FindText); if (SelPos > 0) { Memo1->SetFocus(); Memo1->SelStart = SelPos - 1; Memo1->SelLength = FindDialog1->FindText.Length(); } подробнее

Показать сообщение отдельно
Assign_me_plz
5 / 5 / 0
Регистрация: 05.06.2011
Сообщений: 40
18.04.2012, 03:16     Методы поиска корней уравнения на отрезке, одна маленькая ошибка в коде, подскажите что не так
В общем, запрогал методы поиска корней на отрезке ( Хорд, касательных( Ньютона), итераций и бисекции ( деления отрезка пополам)). В конце выдает ошибку, что не так?
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <math.h>
 
 
using namespace std;
 
double polinom( double x)
{
    double t = 0.2*pow(x,4) - pow(x,3) - 7*pow(x,2) + 11*x-2;
    return t;
}
 
double polinomd(double x)
{
    double t = 0.8*pow(x,3)-3*pow(x,2)-14*x+11;
    return t;
}
 
double iteracg(double x)
{
    double t = ((-0.2)*pow(x,4) +pow(x,3) +7*pow(x,2) +2)/11;
    return t;
}
 
double iteracgd(double x)
{
    double t = x *((-0.8/11)*pow(x,3)+(3/11)*pow(x,2)+(7/11));
    return t;
}
 
double bisec( double a, double b, double Eps, double f(double))
{
    ofstream out("BisectionResult.txt",ios::app);
    double c,x_l = (a < b)?(a):(b), x_r = (a >= b)?(a):(b);
    int i=0;
    c = (x_l + x_r)/2;
    while ( (fabs(x_l-x_r) >= Eps ) || (fabs(f(c)) >= Eps ) )
    {
        i++;
        c = ( x_r + x_l ) / 2;  
        out << x_l << " " << x_r << " " << fabs(x_l-x_r) << " " << f(c) << endl;    
        if ( (f(x_l)*f(c)) <= 0) 
            x_r = c;
        else x_l = c;
    }
    out << i << endl;
    return c;
}
 
double chord( double a, double b, double Eps, double f(double))
{
    ofstream out("SecantResult.txt",ios::app);
    double x_l = ( f(a) < 0)?(a):(b), x_r = ( f(a) >= 0)?(a):(b), c, c1;
    int i=0;
    c = (x_l*f(x_r)-x_r*f(x_l))/(f(x_r)-f(x_l));
    c1 = b;
    while( fabs(c1 - c) >= Eps || fabs(f(c)) >= Eps)
    {
        i++;
        c1 = c;
        c = (x_l*f(x_r)-x_r*f(x_l))/(f(x_r)-f(x_l));    
        out << c << " " << fabs(c1 - c) << " " << fabs(f(c)) << endl;
        if ( f(x_l)*f(c) <= 0) x_r = c;
        else x_l = c;
    } 
    out << i << endl;
    return c;
}
 
double newton( double a, double b, double Eps, double f(double), double g(double))
{
    ofstream out("Newton'sResult.txt",ios::app);
    double x0 = (a+b)/2, x1;
    int i = 1;
    if ( g(x0) != 0) 
        x1 = x0 - f(x0)/g(x0);
    else
    {
        out << " g(x) = 0" << i << endl;
        return 0;
    }   
    while ( fabs(x1 - x0) >= Eps || fabs(f(x1)) >= Eps)
    {
        i++;        
        out << x1 << " " << fabs(x1 - x0) << " " << fabs(f(x1)) << endl; 
        x0 = x1;
        if ( g(x0) != 0) 
            x1 = x0 - f(x0)/g(x0);
        else 
        {
            out << " g(x) = 0 " << i << endl;
            return 0;       
        }
    }
    out << i << endl;
    return x1;
}
 
double iterac( double a, double b, double Eps, double g(double),double f(double))
{
    ofstream out("SimpleIterationResult.txt",ios::app);
    double x1, t, x_l = ( g(a) < 0)?(a):(b), x_r = ( g(a) >= 0)?(a):(b), x0 = (x_r+x_l)/2;
    int i = 0;
    t = 2/(f(x_l+0.01)+f(x_r-0.01));
    if (g(a) > g(b)) 
        t=-t;
    x1 = x0-t*g(x0);
    while ( fabs(x1 - x0) >= Eps || fabs(g(x1)) >= Eps)
    {
        i++;        
        out << x1 << " " << fabs(x1 - x0) << " " << fabs(g(x1)) << endl; 
        x0 = x1;
        x1 = x0-t*g(x0);
    }
    out << i << endl;
    return x1;
}
 
int main()
{
    double t1 = bisec ( -4.8, -4.7, 0.00001, polinom ),t5 = bisec ( 0.2, 0.3, 0.00001, polinom ), t9 = bisec ( 1.1, 1.2, 0.00001, polinom ), t13 = bisec ( 8.4, 8.5, 0.00001, polinom );
    double t2 = chord ( -4.8, -4.7, 0.00001, polinom ),t6 = chord ( 0.2, 0.3, 0.00001, polinom ), t10 = chord ( 1.1, 1.2, 0.00001, polinom ), t14 = chord (8.4, 8.5, polinom );
    double t3 = newton ( -4.8, -4.7, 0.00001, polinom, polinomd ),t7 = newton ( 0.2, 0.3, 0.00001, polinom, polinomd ), t11 = newton ( 1.1, 1.2, 0.00001, polinom, polinomd ), t15 = newton (8.4, 8.5, 0.00001, polinom, polinomd );
    double t4 = iterac ( -4.8, -4.7, 0.00001, iteracg, iteracgd ),t8 = iterac ( 0.2, 0.3, 0.00001, iteracg, iteracgd ), t12 = iterac ( 1.1, 1.2, 0.00001, iteracg, iteracgd ), t16 = iterac (8.4, 8.5, 0.00001, iteracg, iteracgd );
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru