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

Нахождение комплексных корней методом Ньютона - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шифр Вернама. Дешифровка http://www.cyberforum.ru/cpp-beginners/thread853912.html
Помогите написать дешифратор для Шифра Вернама или укажите ошибку в моём дешифраторе: #include <iostream> #include <stdio.h> #include <conio.h> using namespace std; int main() {
C++ Динамические структуры. Составить программу, которая содержит информацию о книгах в библиотеке Составить программу, которая содержит информацию о книгах в библиотеке. Сведения о книгах включают: Номер УДК; Фамилию и инициалы автора; Название; Год издания; Количество экземпляров данной книги в библиотеке; Программа должна обеспечивать: Начальное формирование данных обо всех книгах в библиотеке в виде дво-ичного дерева; Добавление данных о книгах, вновь поступающих в... http://www.cyberforum.ru/cpp-beginners/thread853910.html
Выбор учебника для подготовки к олимпиаде АЦМ C++
Какой лучше подойдет для прочтения перед олимпиадой по программированию АЦМ?
Изменить указатель в функции C++
Совсем запутался. мне нужно что бы после выхода из функции указатель wsadr был изменен, и менять внутри переменные по указателю. char rl1 ; char *sadr =(char*) MapViewOfFile(sfilemp, FILE_MAP_READ, 0, 0, 0); char *wsadr = sadr; cr(&wsadr); //wsadr здесь должен быть изменен void cr(char **sadr) {
C++ Удаление элемента из vector http://www.cyberforum.ru/cpp-beginners/thread853889.html
Здорова! Пытаюсь удалить элемент из vector<string>, но чото ошибку выдает и я вообще не пойму что за ошибка. Вот код который ошибку выводит: //ydalenie elementov nachinayuchixc9 na a vector<string>::iterator It; for(It=vec.begin();It!=vec.end();++It) { if((*It)=='a') vec.erase(It);//ydal9et element na kotorui ykazuvaet iterator
C++ В неориентированном графе посчитать количество компонент связности 2. Компоненты связности В неориентированном графе посчитать количество компонент связности. В графе нет петель и кратных ребер. Формат входного файла Во входном файле записаны сначала два числа N и M, задающие соответственно количество вершин и количество ребер (1≤N≤100, 0≤M≤10000), а затем перечисляются ребра. Каждое ребро задается номерами вершин, которые оно соединяет. Формат выходного... подробнее

Показать сообщение отдельно
gaaalim
0 / 0 / 0
Регистрация: 27.04.2013
Сообщений: 9

Нахождение комплексных корней методом Ньютона - C++

02.05.2013, 07:17. Просмотров 1995. Ответов 5
Метки (Все метки)

Нужно решить уравнение с комплексной переменной z^n +1 = 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
#include <cmath>
using namespace std;
 
class Complex
{
private:
        double re, im;
public:
        Complex () {};
        Complex (double r)
        {
            re = r;
            im = 0;
        }
        Complex (double r, double i)
        {
            re = r;
            im = i;
        }
        Complex (const Complex &c)   // конструктор копирования
        {
            re = c.re;
            im = c.im;
        }
        ~Complex () {}
        Complex& operator = (Complex &c)
        {
            re = c.re;
            im = c.im;
            return (*this);
        }
        Complex& operator != (Complex &c)
        {
            re != c.re;
            im != c.im;
            return *this;
        }
        Complex& operator == (Complex &c)
        {
            re == c.re;
            im == c.im;
            return *this;
        }
        Complex& operator += (Complex &c)
        {
            re += c.re;
            im += c.im;
            return *this;
        }
        Complex& operator -= (Complex &c)
        {
            re -= c.re;
            im -= c.im;
            return *this;
        }
        Complex& operator *= (Complex &c)
        {
            re *= c.re;
            im *= c.im;
            return *this;
        }
        Complex& operator /= (Complex &c)
        {
            re /= c.re;
            im /= c.im;
            return *this;
        }
        Complex operator + (const Complex &c)
        {
            return *this;
        }
 
          // оператор вычитания
        Complex operator - (const Complex &c)
        {
            return *this;
        }
        Complex operator * (const Complex &c)
        {
            return Complex(re * c.re - im * c.im, re * c.im + im * c.re);
        }
        Complex operator / (const Complex &c)
        {
            Complex temp;
            double r = c.re * c.re + c.im * c.im;
            temp.re = (re * c.re + im * c.im) / r;
            temp.im = (im * c.re - re * c.im) / r;
            return temp;
        }
        friend ostream & operator<< (ostream &, const Complex &);
        friend istream & operator>> (istream &, Complex &);
        friend Complex powc (Complex f,int n);
        friend double abs (Complex c);
        friend Complex random (Complex c);
};

main
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
59
60
61
#include <iostream>
#include <cmath>
#include "Complex.h"
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
 
// перегрузка оператора <<
ostream& operator<< (ostream &out, const Complex &c)
{
    if(c.im<0)
        out << c.re << c.im << "i";
    else
        out << c.re << "+" << c.im << "i";
    return out;
}
 
// перегрузка оператора >>
istream& operator>> (istream &in, Complex &c)
{
  in >> c.re >> c.im;
  return in;
}
double abs (Complex c)
{
    return sqrt (c.re * c.re + c.im * c.im);
}
 
Complex random (Complex c)
{
    srand(time(NULL));
    c.re=rand()%20 -10;
    c.im=rand()%20 -10;
    return c;
}
Complex koren(int n,Complex xn,Complex e)
{
    Complex xn1;
    do
        {
            xn = xn1;
            Complex xn1 =  xn -  ((powc(xn,n) + Complex (1.0,0.0))/Complex(n,0)*powc(xn,n-1));
            cout << ((powc(xn,n) + Complex (1.0,0.0))/Complex(n,0)*powc(xn,n-1)) <<endl;
            cout << "Koren'=" << xn1  <<  endl;
        }
    while (abs(xn1 - xn) > abs(e));
}
Complex powc (Complex f,int n)
{
    return Complex(pow((f.re * f.re + f.im * f.im),n/2) * cos (n*f.re/sqrt(f.re * f.re + f.im * f.im)),((f.re * f.re + f.im * f.im),n/2) * sin (n*f.re/sqrt(f.re * f.re + f.im * f.im)));
}
int main ()
{
    int n=2;
    Complex xn=random(xn);
    Complex pogr (0.1,0.1);
    koren(n,xn,pogr);
    return 0;
}
Добавлено через 3 минуты
Метод Ньютона http://ru.wikipedia.org/wiki/Метод_Ньютона
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru