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

Нахождение корней уравнения - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 430, средняя оценка - 4.84
ScaleS
 Аватар для ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
07.12.2009, 00:56     Нахождение корней уравнения #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
28
29
30
31
32
#include <conio.h>
#include <math.h>
#include <iostream.h>
#define pi 3.14
double f(double x) {
 
    return   x*x-(cos(pi*x));
}
 
double fi(double x, double L) {
 
    return  x+L*f(x);
}
 
 
int main() {
    int n=0;
    double x,y,c,b,L=-0.35,eps;
    cout<<"x="; cin>>x;
    cout<<"eps="; cin>>eps;
    do {
        y=fi(x,L);
        b=fabs(x-y);
        x=y;
        n+=1;
    }
    while (b>=eps);
        cout<<"c="<<x<<"\n";
        cout<<"n="<<n<<"\n";
        getch();
    return 0;
}


Метод Ньютона
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
#include <conio.h>
#include <math.h>
#include <iostream.h>
#define pi 3.14
 
double f(double x) {
 
    return   x*x-(cos(pi*x));
}
 
double f1(double x) {
 
    return   2*x+(1/x);
}
 
double f2(double x) {
 
    return   2+(-1/(x*x));
}
 
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;
}


Метод половинного деления
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
#include <conio.h>
#include <math.h>
#include <iostream.h>
#define pi 3.14
 
double f(double x) {
 
    return   x*x-(cos(pi*x));
}
int main() {
    int n=0;
    double a,b,c,eps;
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    cout<<"eps="; cin>>eps;
    do {
        c=(a+b)/2;
        if (f(c)*f(a)<=0) b=c;
        else a=c;
 
        n+=1;
 
    }
    while (fabs(a-b)>=eps);
        cout<<"c="<<c<<"\n";
        cout<<"n="<<n<<"\n";
        getch();
    return 0;
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SakinT
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 72
13.01.2015, 19:24     Нахождение корней уравнения #41
Отыскать все корни нелинейного уравнения f(x) = 0 с точностью до 10-3.


как методом итерации и методом половинного деления решить эти уравнения?: x^3-3x^2+6x-5 = 0

3x+4x^3-12x^2-5=0

и показать отделение корней, т.е. найти интервал (a, b), на концах которого знаки f(x) разные.

Добавлено через 14 минут
Отыскать все корни нелинейного уравнения f(x) = 0 с точностью до 10-3.
10^-3 *(исправление)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rufus777
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 8
09.12.2015, 05:32     Нахождение корней уравнения #42
Выше был вопрос, про метод итераций для системы уравнений х) Такая же проблема и у меня, посмотреть хотя бы образец как выглядит это х) Если не трудно, помогите х) Спасибо)
Alex31115
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 41
04.01.2016, 07:47     Нахождение корней уравнения #43
Цитата Сообщение от ScaleS Посмотреть сообщение
double x,y,c,b,L=-0.35,eps;
А почему мы берем
C++ (Qt)
1
L=-0.35
? Как вообще оно выбирается? В методе итераций же вроде из уравнения http://www.cyberforum.ru/cgi-bin/latex.cgi?y(x)=0 получают уравнение http://www.cyberforum.ru/cgi-bin/latex.cgi?x=z(x) и по этому http://www.cyberforum.ru/cgi-bin/latex.cgi?x
смотрят что-то.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2016, 20:40     Нахождение корней уравнения
Еще ссылки по теме:

C++ нахождение корней квадратного уравнения
Нахождение корней уравнения C++
C++ Нахождение корней квадратного уравнения через дискриминант

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

Или воспользуйтесь поиском по форуму:
silencerus
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 3
03.12.2016, 20:40     Нахождение корней уравнения #44
Здравствуйте.
Интересует код по золотому сечению представленному тут. Написано, что код для нахождения корней уравнения, но ищется минимум(или максимум), а ведь это разные задачи. Может кто-нибудь предоставить код метода золотого сечения для нахождения корней уравнения?
Yandex
Объявления
03.12.2016, 20:40     Нахождение корней уравнения
Ответ Создать тему

Метки
метод дихотомии, метод золотого сечения, метод итераций, метод ньютона, метод половинного деления, метод фибоначчи, численные методы
Опции темы

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