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

Реализация алгоритмов решения нелинейных уравнений - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 78, средняя оценка - 4.78
bambino
 Аватар для bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
01.03.2011, 17:28     Реализация алгоритмов решения нелинейных уравнений #1
Здраствуйте!
Передомной стоит задание решить уравнение(см. вложения, вариант 10) двумя методами:
1) Метод простых итераций
2) Метод хорд
Знаю что все эти методы давно реализованы и есть здесь, но сама проблема в том, что я не знаю куда в те коды вставлять данное уравнение.Если есть время, буду благодарен за помощь.
Миниатюры
Реализация алгоритмов решения нелинейных уравнений  
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bambino
 Аватар для bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
01.03.2011, 20:16  [ТС]     Реализация алгоритмов решения нелинейных уравнений #2
Апну темку, если что.
IrineK
Заблокирован
02.03.2011, 02:23     Реализация алгоритмов решения нелинейных уравнений #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Метод простых итераций

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include <math.h>
#include<conio.h>
using namespace std;
 
double fi(double x) 
{  return  (cosh(0.7*x)-9)/3.5;}
 
int main() {
        int n=0;
        double x=-2.0,y,b,eps=0.000001;
        do {
                y=fi(x);
                b=fabs(x-y);
                x=y;
                n++;
        }while (b>=eps && n<100);
                cout<<"Root x ="<<x<<"\n";
                cout<<"Iterations n= "<<n<<"\n";
        getch();
        return 0;
}
Дает Х = -1,96867 за n = 12 итераций.

Добавлено через 1 час 10 минут
Метод хорд

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
#include <iostream>
#include<conio.h>
#include <cmath>
using namespace std;
 
double f( double x ) 
{   return 3.5*x+9-cosh(0.7*x);}
 
double ddf( double x ) 
{   return -0.49*cosh(0.7*x);}
 
double choice (double left, double right)
{
    if(f(left)*ddf(left)>0) return left;
    if(f(right)*ddf(right)>0) return right;
}
 
int main() 
{
    int n=0;
    double a=-10.0,b=3.0, x, y, c, eps=0.00001;
    x = b;
    do {
        c = choice(a,b);        
        y= x - (f(x)*(x-c))/(f(x)-f(c));
                b=fabs(x-y);
                x=y;
                n+=1;
        }while (b>=eps);
                cout<<"Root x ="<<x<<"\n";
                cout<<"Iterations n="<<n<<"\n";
        getch();
        return 0;
}
Дает Х = -1,96853 за n = 150 итераций
Андрей213
0 / 0 / 0
Регистрация: 21.04.2014
Сообщений: 13
06.05.2014, 23:44     Реализация алгоритмов решения нелинейных уравнений #4
Как найти все корни?
у квадратных уравнений их же два
tegauss
30 / 24 / 24
Регистрация: 06.05.2014
Сообщений: 158
07.05.2014, 00:53     Реализация алгоритмов решения нелинейных уравнений #5
Андрей213, эти итерационные алгоритмы нуждаются в некоем начальном приближении ответа, и сходятся они к ближайшему от него решению. Чтобы получить n корней, нужно n раз запустить алгоритм, каждый раз задавая нужное начальное приближение.
rina1
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 3
22.12.2014, 22:47     Реализация алгоритмов решения нелинейных уравнений #6
Добавлено через 1 минуту
Цитата Сообщение от IrineK Посмотреть сообщение
double fi(double x)
{ *return *(cosh(0.7*x)-9)/3.5;}
в методе итераций как понять эту запись, соединили f1 и f2 ? как?
Yandex
Объявления
22.12.2014, 22:47     Реализация алгоритмов решения нелинейных уравнений
Ответ Создать тему
Опции темы

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