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

Методом касательных вычислить с погрешностью e(1>e>0) корень уравнения

11.04.2012, 01:04. Показов 1582. Ответов 4
Метки нет (Все метки)

Всем доброго времени суток!
Помогите найти ошибки и вдохнуть в программу жизнь

Методом касательных вычислить с погрешностью e(1>e>0) корень уравнения x^3-2x^2+x-3=0
при начальном приближении 2.2

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

Подогнал листинг под учебные стандарты, и получил вот такую штуку:

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
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#include <conio.h>      //библиотека подключения функции getch()
#include <iostream.h> //библиотека для cin и cout
#include <malloc.h>    //библиотека для динамического выделения памяти
#include <fstream.h>   //библиотека для ввода/вывода в файл
#include <windows.h> //библиотека используется в функции RUS
#include <math.h>       //библиотека математических функций
#include <ctype.h>      // библиотека проверки принадлежности символов
#include <stdlib.h>      // библиотека некоторых стандартных функций
#include <string.h>      // библиотека функций работы со строками
//
char bufRus[256];
//---------------------------------------------------------------------------
char* RUS(const char*text) //функция поддержки русского языка
{
CharToOem(text,bufRus);
return bufRus;
}
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
cout<<RUS("***Расчетно графическая работа, задание 14*** \n");
 
 
 
double f(double x) {
 
    return    x^3-2x^2+x-3;
}
 
double f1(double x) {
 
    return   3*x^2-4*x+1;
}
 
double f2(double x) {
 
    return   6*x-4;
}
 
int main() {
    int n=0;
    double a,b,c,eps;
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    cout<<"eps="; cin>>eps;
    if(f(a)*f2(a)>0) c=a;
    else c=b;
    do {
        c=c-f(c)/f1(c);
        n+=1;
    }
    while (fabs(f(c))>=eps);
        cout<<"c="<<c<<"\n";
        cout<<"n="<<n<<"\n";
        getch();
    return 0;
}
 
 
 
 
cout<<RUS("\nНажмите любую клавишу для завершения программы ...\n");
getch();
return 0;
}
//---------------------------------------------------------------------------
при запуске выдает ошибку
[C++ Error] Unit1.cpp(29): E2141 Declaration syntax error

на строчку
double f(double x)

помогите, пожалуйста, разрешить данную проблему, и в общем полностью довести программу до ума и вдохнуть в нее жизнь

Заранее огромнейшее человеческое СПАСИБО!
да хранит Вас Господь Бог!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2012, 01:04
Ответы с готовыми решениями:

Найти корень уравнения методом хорд и методом касательных
На языке программирования DEV C++ 5.8.2 Метод Хорда и Касательный X^3+3x^2-24x-3=0 На отрезке...

Найти корень уравнения методом касательных
Найти корень уравнения методом касательных x^2-1/2=0

Найти корень уравнения y=f(x)=0 методом касательных
Добрый день. Помогите пожалуйста, нужно распечатать значение функции в точке х1. В моем варианте...

Найти корень уравнения методом касательных
Помогите пожалуйста! Нужно найти корень уравнения cos(x/2)*sin(x) + 1 = 0 методом касательных. ...

4
1179 / 892 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
11.04.2012, 03:22 2
У Вас 2 функции main. Так делать нельзя.
0
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 5
11.04.2012, 22:48  [ТС] 3
Toshkarik, а какую функцию убирать?? Первая она шаблонная, а вторая вообщем то пустая...я в замешательстве((

помогите довести программу до ума((
0
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 10
11.04.2012, 22:57 4
Кинуть все в первый main, не?
0
1179 / 892 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
11.04.2012, 23:20 5
Что значит шаблонная? Oo main не может быть шаблонной. Просто подправил все под одну main, не проверял.
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
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#include <conio.h>      //библиотека подключения функции getch()
#include <iostream.h> //библиотека для cin и cout
#include <malloc.h>    //библиотека для динамического выделения памяти
#include <fstream.h>   //библиотека для ввода/вывода в файл
#include <windows.h> //библиотека используется в функции RUS
#include <math.h>       //библиотека математических функций
#include <ctype.h>      // библиотека проверки принадлежности символов
#include <stdlib.h>      // библиотека некоторых стандартных функций
#include <string.h>      // библиотека функций работы со строками
//
char bufRus[256];
//---------------------------------------------------------------------------
char* RUS(const char*text) //функция поддержки русского языка
{
CharToOem(text,bufRus);
return bufRus;
}
//---------------------------------------------------------------------------
#pragma argsused
 
 
double f(double x) {
 
    return    x^3-2x^2+x-3;
}
 
double f1(double x) {
 
    return   3*x^2-4*x+1;
}
 
double f2(double x) {
 
    return   6*x-4;
}
 
int main() {
    cout<<RUS("***Расчетно графическая работа, задание 14*** \n");
    int n=0;
    double a,b,c,eps;
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    cout<<"eps="; cin>>eps;
    if(f(a)*f2(a)>0) c=a;
    else c=b;
    do {
        c=c-f(c)/f1(c);
        n+=1;
    }
    while (fabs(f(c))>=eps);
        cout<<"c="<<c<<"\n";
        cout<<"n="<<n<<"\n";
 
    cout<<RUS("\nНажмите любую клавишу для завершения программы ...\n");
    getch();
    return 0;
}
Добавлено через 2 минуты
Да и у вас куча ошибок.

Цитата Сообщение от Toshkarik Посмотреть сообщение
while (fabs(f(c))>=eps);
Бесконечный цикл во первых, во вторых даже если бы с ним все было бы хорошо то выводился бы только
Цитата Сообщение от Toshkarik Посмотреть сообщение
cout<<"c="<<c<<"\n";
в цикле, второй оператор
Цитата Сообщение от Toshkarik Посмотреть сообщение
cout<<"n="<<n<<"\n";
вывелся бы один раз после цикла, то есть там пропущены фигурные скобки. Дальше даже не смотрел.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2012, 23:20
Помогаю со студенческими работами здесь

Найти корень уравнения методом касательных
На с++ помогите, пожалуйста

Методом касательных с точностью вычислить корень уравнения tg x - x = 0. Начальное приближение к корню равно 4.67
Методом касательных с точностью вычислить корень уравнения tg x - x = 0. Начальное приближение к...

Найти корень нелинейного уравнения F(x)=0 методом касательных (метод Ньютона). Крайние значения предела ([a,b]) содержащий корень и погрешность (\epsi
Найти корень нелинейного уравнения F(x)=0 методом касательных (метод Ньютона). Крайние значения...

С погрешностью 0.001 уточнить методом дихотомии корень уравнения
Проблема. Я прописала модуль с подпрограммой, подключила к главному Но теперь мне необходимо...


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

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

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