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

Метод итераций для развязывания нелинейного уравнения - C++

Восстановить пароль Регистрация
 
RennarD
0 / 0 / 0
Регистрация: 17.01.2012
Сообщений: 12
18.03.2013, 00:26     Метод итераций для развязывания нелинейного уравнения #1
- развязать заданое уравнение с точностью е = е (i – 1) / 10^(-3), і = 1, 2, ..., 4; e0 = 0.01 методом итераций.
Прикинул немного,но расчет кривой получается.
Корни уравнения должны быть
{~(-2.999999683),~(-1.39681),~0.412779}
Буду очень благодарен,если кто-то ткнет мой глупый нос в мои глупые ошибки.

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
#define _USE_MATH_DEFINES
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
double derivative(double x)
   {
     x=(-3*log(x+3)-3.7)/(0.6*pow(x,3));
 
     return x;
   }
 
int main()
   {
     double a=-3.2, b=-2.85, eps=0.1;
     double x1,x0,q;
     printf("\n     eps   | k |        X    \n\n");
      double q1=-5/3*(3/(pow(a,3)*(a+3))-3*(log(a+3)+3.7)/pow(a,4));
      double q2=-5/3*(3/(pow(b,3)*(b+3))-3*(log(b+3)+3.7)/pow(b,4));
     if (fabs(q1) < fabs(q2))
          q=fabs(q1);
     else q=fabs(q2);
     for (int i=0; i<=6; i++)
        {
          x1=(a+b)/2;
          int k=0;
          do
             {
               x0=x1;
               x1=derivative(x0);
               k++;
             }
          while (fabs(x1-x0)>=eps*(1-q)/q);
          printf(" %0.7f  %d    %0.10e\n",eps,k,x1);
          eps/=10;
        }
 
     double x2=a;
     int k;
     printf("\n   X0        k    \n\n");
     eps=pow(10,-30);
     while (x2<=b)
        {
          x1=x2;
          k=0;
          do
             {
               x0=x1;
               x1=derivative(x0);
               k++;
             }
          while (fabs(x1-x0)>=eps*(1-q)/q);
          printf("  %0.2f       %d\n",x2,k);
          x2+=0.03;
        }
 
     getch();
   }
Добавлено через 1 час 36 минут
Да,и совсем забыл дописать: исходное уравнение
0.6*x^4 + 3ln(x+3) - 3.7=0

Добавлено через 5 часов 30 минут
Need help!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2013, 00:26     Метод итераций для развязывания нелинейного уравнения
Посмотрите здесь:

Решение нелинейного уравнения методом простых итераций C++
Решение нелинейного уравнения. Метод хорд и касательных C++
Метод Ньютона и итераций для нелинейного уравнения C++
C++ метод итераций для уравнения
C++ Решение нелинейного уравнения методом итераций в с++
Метод простых итераций для одного уравнения C++
C++ Решение нелинейного уравнения в общем виде, ввод с клавиатуры, метод дихотомии
C++ Решение нелинейного уравнения методом простых итераций

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RennarD
0 / 0 / 0
Регистрация: 17.01.2012
Сообщений: 12
20.03.2013, 00:01  [ТС]     Метод итераций для развязывания нелинейного уравнения #2
Проблема актуальна.
По косточкам разбирать не надо,если кто может,просто прогляньте.
Yandex
Объявления
20.03.2013, 00:01     Метод итераций для развязывания нелинейного уравнения
Ответ Создать тему
Опции темы

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