Форум программистов, компьютерный форум, киберфорум
Наши страницы

Найти корни уравнений ax^3+bx^2+cx=0 и y^3-ay^2-b=0, используя процедуру. Есть ли у этих уравнений совпадающие корни? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка оператора присваивания http://www.cyberforum.ru/cpp-beginners/thread1096195.html
Задание простое: по заданному классу составить простую программу с использованием динамической памяти. class Cow { char name; char* chobby; double weight; public: Cow(); Cow(const...
C++ Считать из файла и записать массив вопрос в комментарии, подскажите пожалуйста #include <iostream> using namespace std; struct book { string name; int year; string author; int id; } http://www.cyberforum.ru/cpp-beginners/thread1096194.html
Определить каких положительных чисел больше в последовательности, кратных или не кратных 5? C++
С клавиатуры вводится последовательность чисел.Количество чисел заранее не известно,но может быть очень большим.Числа последовательности находятся от -120 до 100.Определить каких положительных чисел...
Сравнить длину эллипса и окружности C++
Здраствуйте, помогите пожалуйста, должно быть два класса эллипс - базовый, окружность - клас-наследник, необходимо сравнить длину даных фигур. #include <iostream> #include <locale> #include...
C++ Чапаеву нужно переплыть реку С++ http://www.cyberforum.ru/cpp-beginners/thread1096177.html
Чапаеву нужно переплыть реку Урал шириной B метров.Его скорость в стоячей воде V1 м,скорость реки V2.Под каким углом ему надо плыть,чтобы "не снесло",и сколько времени займет переправа?
C++ Сформировать двунаправленный список. Удалить из него Элементы, с одинаковыми ключевыми полями Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить из него Элементы, с одинаковыми ключевыми полями. Добавить элемент после... подробнее

Показать сообщение отдельно
HighPredator
5545 / 1858 / 346
Регистрация: 10.12.2010
Сообщений: 5,444
Записей в блоге: 2
16.02.2014, 18:19
Можно было и нагуглить...
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
/* Cubic equation solution. Real coefficients case.
 
   int Cubic(double *x,double a,double b,double c);
   Parameters:
   x - solution array (size 3). On output:
       3 real roots -> then x is filled with them;
       1 real + 2 complex -> x[0] is real, x[1] is real part of 
                             complex roots, x[2] - non-negative 
                             imaginary part.
   a, b, c - coefficients, as described 
   Returns: 3 - 3 real roots;
            1 - 1 real root + 2 complex;
            2 - 1 real root + complex roots imaginary part is zero 
                (i.e. 2 real roots). 
*/
 
#include <math.h>   /* for sqrt(), fabs(), pow(), cos(), acos(). */
#define M_PI (3.141592653589793)
#define M_2PI (2.*M_PI)
 
int Cubic(double *x,double a,double b,double c) {
  double q,r,r2,q3;
  q=(a*a-3.*b)/9.; r=(a*(2.*a*a-9.*b)+27.*c)/54.;
  r2=r*r; q3=q*q*q;
  if(r2<q3) {
    double t=acos(r/sqrt(q3));
    a/=3.; q=-2.*sqrt(q);
    x[0]=q*cos(t/3.)-a;
    x[1]=q*cos((t+M_2PI)/3.)-a;
    x[2]=q*cos((t-M_2PI)/3.)-a;
    return(3);
  }
  else {
    double aa,bb;
    if(r<=0.) r=-r;
    aa=-pow(r+sqrt(r2-q3),1./3.); 
    if(aa!=0.) bb=q/aa;
    else bb=0.;
    a/=3.; q=aa+bb; r=aa-bb; 
    x[0]=q-a;
    x[1]=(-0.5)*q-a;
    x[2]=(sqrt(3.)*0.5)*fabs(r);
    if(x[2]==0.) return(2);
    return(1);
  }
}
С алголиста.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.