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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Фонарики http://www.cyberforum.ru/cpp-beginners/thread811077.html
«Одна голова хорошо, а две лучше. Одна лампочка хорошо, а две лучше!» - подумал Миша, и решил собрать фонарик с двумя лампочками. Теперь он хочет узнать, насколько фонарик с двумя лампочками лучше, чем фонарик с одной. Для этого Миша посветил фонариком на стену, и каждая из лампочек осветила на ней круг. Эффективность фонарика Миша хочет оценить через площадь освещенной части стены. Миша...
C++ нужно удалить с строки все чётные слова нужно удалить с строки все чётные слова. Не могу написать...:cry: http://www.cyberforum.ru/cpp-beginners/thread811070.html
Конструктор класса наследника C++
Я не могу понять свою ошибку к примеру если пишу так все нормально class one { public: one(); };
Вычислить значение выражения C++
Вычислить значение выражения при различных вещественных типах данных (float и double). Вычисления следует выполнять с использованием промежуточных переменных. Сравнить и объяснить полученные результаты. ((a - b)^4 - (a^4 - 4a^3*b))/(6a^2*b^2 - 4ab^3 +b^4) ; при а=100, b=0,001
C++ Написать программу вычисления сопротивления электрической цепи, со-стоящей из двух параллельно соединенных сопротивлений http://www.cyberforum.ru/cpp-beginners/thread811037.html
Написать программу вычисления сопротивления электрической цепи, со-стоящей из двух параллельно соединенных сопротивлений. Рекомендуемый вид экрана во время работы программы: >Вычисление сопротивления электрической цепи >при параллельном соединении элементов. >Введите исходные данные: >Величина первого сопротивления (Ом) > >Величина второго сопротивления (Ом) > >Сопротивление цепи: ...
C++ Проверка числовой строки В текстбоксе записана какая то строка. Нужно сделать проверку, является ли строка числовой. Если же в строке имеются буквы/символы, то нужно выделить цветом первую букву/символ в этой строке. p.s. строка является числовой, если она состоит из цифр, пробелов или знака "-". подробнее

Показать сообщение отдельно
RennarD
0 / 0 / 0
Регистрация: 17.01.2012
Сообщений: 12
18.03.2013, 00:26     Метод итераций для развязывания нелинейного уравнения
- развязать заданое уравнение с точностью е = е (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!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru