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

Метод Ньютона для нелинейных систем. Нужно найти ошибку - C++

Восстановить пароль Регистрация
 
alexandrmironov
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 3
19.12.2013, 19:07     Метод Ньютона для нелинейных систем. Нужно найти ошибку #1
Здравствуйте!
Задача заключается в решении системы нелинейных уравнений методом Ньютона.
Система
2x^3 - y^2 -1=0;xy^3-y-4=0, начальное приближение x0=1,y0=1

Код программы:
Код
#include <iostream>
#include <math.h>
using namespace std;
 
#define eps 0.0001
 
double st(float a,int b){ for(int i=0;i<b; i++)	a*=a; return a;}
double function1(float x, float y){	 return (2*(st(x,3))-(st(y,2))-1);}
double function2(float x,float y){ return (x*(st(y,3))-y-4);}
double func11(float x,float y){ return (6*(st(x,2)));}
double func12(float x,float y){  return (-2*y);}
double func21(float x,float y){ return(st(y,3));}
double func22(float x,float y){ return (3*x*(st(y,2))-1);}
 
void main()
{
    double x, y;
    cout << "x = ";
    cin >> x ;
    cout << "y = ";
    cin >> y;
	
	 double a[2][2], dx, dy, b[2], norm;
	 norm=eps+1;
	 for(int i = 1;norm >= eps;i++){
   
    
    {
        a[0][0] = func11(x, y);
        a[0][1] = func12(x, y);
        a[1][0] = func21(x, y);
        a[1][1] = func22(x, y);

        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;

        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++;
	}}
   
cout << x << endl << y << endl;

  
}
/*В конце выдает ошибку*/ Выводит что-то непонятное. Прошу помощи.
[IMG=https://d2oawfjgoy88bd.cloudfront.net/5066df08e4b0113a9e156a7f/5066df88e4b0113a9e156aba/52b30a81888b9d1605ff32b2.png?Expires=1387551764&Signature=nHtliwoWl-yVoxWKJTlGFdxJaWCx6SVortthK7ri7PSLxOgZR-9I-CEIGP6y3blZx5r4KqR6Gz7V1Hx4p0lruernMicH1LFBxM4zcN1xjBPk~gPNu-CjJbLgY0EqQzqdriVDLixFiqcqEcMnh8pBj3IOpDHF9UP3wcQGuLVdeGzlADOKEAX0yhrcMfvz0RLn~4gMxRSP4OVvnM-W7NaMtjmwE4mNyACKNkxl31RvEyQ5SGAi1jhx435tw4xVtxPf5GZKXBCgnyPr3NXtyLpB-K26LwKUnyMEZy0Pa5YZF1xly8xBbpY37PpSW12ywybk0yMezqqcmP~4JR~flTmpeA__&Key-Pair-Id=APKAJHEJJBIZWFB73RSA]

Добавлено через 7 минут
http://take.ms/do4Mi
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2013, 19:07     Метод Ньютона для нелинейных систем. Нужно найти ошибку
Посмотрите здесь:

C++ метод Ньютона для системы двух уравнений
Решение систем нелинейных уравнений C++
C++ Решение нелинейных уравнений и систем
Метод Ньютона и итераций для нелинейного уравнения C++
метод Ньютона для решения системы нелинейных уравнений C++
C++ метод Ньютона для решения нелинейных уравнений: узнать количество итераций
C++ Решение системы из двух нелинейных уравнений методом Ньютона
C++ Решение системы нелинейных уравнений методом Ньютона (С/С++)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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