Страница 1 из 1

метод Ньютона для решения системы нелинейных уравнений

Добавлено: 27 мар 2013, 16:28
Manyak666
Здравствуйте! Нужно решить методом Ньютона систему уравнений с точностью 0.0001:
sin(x+y) - 1.2x = 0
x*x + y*y =1
Вот моя программа, она не запускается, помогите пожалуйста найти ошибку:

Код: Выделить всё

#include <iostream>
#include <math>
using namespace std;
 
#define eps 0.0001
 
double function1(double x, double y)
{
    return sin(x + y) - 1.2*x;
}
 
double function2(double x, double y)
{
    return x*x + y*y - 1;
}
 
double func11(double x, double y)
{
    return cos(x + y) - 1.2;
}
 
double func12(double x, double y)
{
    return cos(x + y);
}
 
double func21(double x, double y)
{
    return 2*x;
}
 
double func22(double x, double y)
{
    return 2*y;
}
 
void ober_matr(double a[2][2])
{
    double det, aa;
    det = a[0][0]*a[1][1] - a[0][1]*a[1][0];
    aa = a[0][0];
    a[0][0] = a[1][1]/det;
    a[1][1] = aa/det;
    aa = a[0][1];
    a[0][1] = -a[1][0]/det;
    a[1][0] = -aa/det;
}
 
void nuton(double x, double y)
{
    int i = 1;
    double a[2][2], dx, dy, b[2], norm;
    do
    {
        a[0][0] = func11(x, y);
        a[0][1] = func12(x, y);
        a[1][0] = func21(x, y);
        a[1][1] = func22(x, y);
        ober_matr(a);
        dx = -a[0][0]*function1(x, y) + -a[0][1]*function2(x, y);
        dy = -a[1][0]*function1(x, y) + -a[1][1]*function2(x, y);
        x = x + dx;
        y = y + dy;
        b[0] = function1(x, y);
        b[1] = function2(x, y);
        norm = sqrt(b[0]*b[0]+b[1]*b[1]);
        i++;
    }
    while (norm >= eps);
cout << x << endl << y << endl;
}
void main()
{
    double x, y;
    cout << "x = ";
    cin >> x ;
    cout << "y = ";
    cin >> y;
    nuton(x, y);
    cout << endl;
    system("PAUSE");
}
Заранее благодарю за помощь!

Re: метод Ньютона для решения системы нелинейных уравнений

Добавлено: 27 мар 2013, 18:24
Romeo
Не запускается или не компилируется? У меня даже не компилируется, так как инклюд файла math не существует, существует math.h.

После исправления ошибки, компилируется, запускается и даже что-то выдаёт.

Re: метод Ньютона для решения системы нелинейных уравнений

Добавлено: 28 мар 2013, 17:55
Manyak666
Спасибо! Заработало. А вы не могли бы сказать, правильно она работает или нет? А то в прошлый раз другую программу пришлось заново переписывать..

Re: метод Ньютона для решения системы нелинейных уравнений

Добавлено: 29 мар 2013, 15:10
Romeo
Нет, не могу. Я 10 лет, как окончил университет и метод Ньютона уже не помню :)

Re: метод Ньютона для решения системы нелинейных уравнений

Добавлено: 04 апр 2013, 16:44
Manyak666
Кто-нибудь, проверьте, пожалуйста, правильно ли работает программа? Завтра сдавать надо, хотелось бы, чтоб успешно сдалось))

Re: метод Ньютона для решения системы нелинейных уравнений

Добавлено: 18 апр 2013, 21:03
Manyak666
прошу проверить правильность программы