0 / 0 / 1
Регистрация: 08.11.2015
Сообщений: 2
1

Решение системы нелинейных уравнений

23.04.2016, 17:28. Показов 2964. Ответов 2

Никак не могу разобраться с написанием программы на с++, которая бы решала систему нелинейных уравнений https://www.cyberforum.ru/cgi-bin/latex.cgi?\left\{\begin{matrix}0,1-{x}^{2}+2yz-x=0;\\ -0,2+{y}^{2}-3xz-y=0;\\ 0,3-{z}^{2}-2xy-z=0\end{matrix}\right. методом Ньютона. И еще, желательно, с графическим интерфейсом. Помогите, пожалуйста, ребят!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2016, 17:28
Ответы с готовыми решениями:

Решение системы нелинейных уравнений
найти решения уравнения графическим методом и методом поиска решений {cos(y+0,5)+x=0,8; {...

Решение системы из четырех нелинейных уравнений c++
Нужно решить системы из четырех нелинейных уравнений. Метод не важен, главное результат. Известно...

Найти решение системы нелинейных уравнений
помогите пожалуйста с решением данной системы уравнений: sin(x1+x2)=1.5x1-0.2, x1^2+x2^2=1

Решение системы нелинейных уравнений методом ньютона
Доброго времени суток.В общем, нужно решить систему нелинейных уравнений методом ньютона: sin(x -...

2
Модератор
Эксперт С++
12401 / 9981 / 6006
Регистрация: 18.12.2011
Сообщений: 26,706
23.04.2016, 19:35 2
1.Из первого уравнения выразить y, из третьего - x.
2. Подставить x и y во второе уравнение
3. Решить уравнение относительно z методом Ньютона.
4. Подставить полученное z в 3-е уравнение. Получим линейную зависимость y(x)
5. Подставляем в 1 уравнение и решаем его относительно x.
1
0 / 0 / 1
Регистрация: 08.11.2015
Сообщений: 2
06.05.2016, 10:50  [ТС] 3
Лучший ответ Сообщение было отмечено nektoto как решение

Решение

Есть наработки программного кода, но работает неправильно. Помогите, пожалуйста, найти ошибки. Мне кажется, что-то не так с самим алгоритмом. Заранее спасибо!
Кликните здесь для просмотра всего текста

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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <vcl.h>
#include <iostream.h>
#include <math.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const int n=3;
int i,j;
double x,y,z,esp;
 
double f1(double x, double y, double z);
double f1(double x, double y, double z){
    return 0.1-pow(x,2)+2*y*z-x; }
double f2(double x, double y, double z);
double f2(double x, double y, double z){
    return -0.2+pow(y,2)-3*x*z-y;   }
double f3(double x, double y, double z);
double f3(double x, double y, double z){
    return 0.3-pow(z,2)-2*x*y-z;}
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
x=StrToFloat(Edit1->Text);
y=StrToFloat(Edit2->Text);
z=StrToFloat(Edit3->Text);
esp=StrToFloat(Edit4->Text);
 
double a[n][n], a1[n][n], b[n], det, invdet, f[n], K[n]; //a[3][3]-ìàòðèöà ßêîáè;
//a1[3][3]-îáðàòíàÿ ìàòðèöà; b[3]-ïðîèçâåäåíèå à1[3] íà f[3]; f[3]-ìàññèâ ôóíêöèé; K[3]-ìàññèâ ïåðåìåííûõ
double xk, yk, zk, xn, yn, zn, max; //èçìåíåíèå çíà÷åíèÿ ïåðåìåííûõ ïðè k=0,1,2..
int k=0; //êîë-âî èòåðàöèé
 
  //Ìàòðèöà ßêîáè
    {
        a[0][0]=(-2*x-1);
        a[0][1]=(2*z);
        a[0][2]=(2*y);
        a[1][0]=(-3*z);
        a[1][1]=(2*y-1);
        a[1][2]=(-3*x);
        a[2][0]=(-2*y);
        a[2][1]=(-2*x);
        a[2][2]=(-2*z-1);
 
     //Îïðåäåëèòåëü
     det=a[0][0]*a[1][1]*a[2][2]+a[0][1]*a[1][2]*a[2][0]+a[0][2]*a[1][0]*a[2][1]-
        a[0][2]*a[1][1]*a[2][0]-a[0][0]*a[1][2]*a[2][1]-a[0][1]*a[1][0]*a[2][2];
     invdet=1/det;
     //Îáðàòíàÿ ìàòðèöà
        for (i=0; i<n; i++){
         for (j=0; j<n; j++){
          a1[0][0]=a[1][1]*a[2][2]-a[1][2]*a[2][1]*invdet;
          a1[0][1]=-a[1][0]*a[2][2]+a[2][0]*a[1][2]*invdet;
          a1[0][2]=a[1][0]*a[2][1]-a[1][1]*a[2][0]*invdet;
          a1[1][0]=-a[0][1]*a[2][2]+a[0][2]*a[2][1]*invdet;
          a1[1][1]=a[0][0]*a[2][2]-a[0][2]*a[2][0]*invdet;
          a1[1][2]=-a[0][0]*a[2][1]+a[0][1]*a[2][0]*invdet;
          a1[2][0]=a[0][1]*a[1][2]-a[0][1]*a[1][1]*invdet;
          a1[2][1]=-a[0][0]*a[1][2]+a[0][2]*a[2][0]*invdet;
          a1[2][2]=a[0][0]*a[1][1]-a[0][1]*a[1][0]*invdet;
         }
        }
     //Ìàññèâ ôóíêöèé
        for (j=0; j<n; j++){
         f[0]=f1(x,y,z);
         f[1]=f2(x,y,z);
         f[2]=f3(x,y,z);
        }
     //Ìàññèâ ïåðåìåííûõ
        for (j=0; j<n; j++){
         K[0]=x;
         K[1]=y;
         K[2]=z;
        }
 
               do
                {
               for (i=0; i<n; i++){
                for (j=0; j<n; j++){
                 b[0]=a[0][0]*f[0]+a[0][1]*f[1]+a[0][2]*f[2];
                 b[1]=a[1][0]*f[0]+a[1][1]*f[1]+a[1][2]*f[2];
                 b[2]=a[2][0]*f[0]+a[2][1]*f[1]+a[2][2]*f[2];
                }
                }
                xk=K[0]-b[0];
                yk=K[1]-b[1];
                zk=K[2]-b[2];
 
                xn=xk-x;
                yn=yk-y;
                zn=zk-z;
                {
                 if (abs(xn)>abs(yn)){
                   if (abs(xn)>abs(zn))
                      max=xn;
                   else
                      max=zn;}
                 else {
                   if (abs(yn)>abs(zn))
                      max=yn;
                   else
                      max=zn;}
                   }
 
 
                 x=xk;
                 y=yk;
                 z=zk;}
                 while (abs(max)>=esp);
 
                 k++;
Edit5->Text=FloatToStr(xk);
Edit6->Text=FloatToStr(yk);
Edit7->Text=FloatToStr(zk);
Edit8->Text=FloatToStr(k);
}
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2016, 10:50
Помогаю со студенческими работами здесь

Решение системы нелинейных уравнений методом Ньютона (С/С++)
Здравствуйте! Помогите пожалуйста написать программу :cry: У меня есть система из 2х уравнений...

Решение системы из двух нелинейных уравнений методом Ньютона
Помогите,мне надо создать программу для решения системы из двух нелинейных уравнений методом...

Решение системы нелинейных уравнений методом Ньютона и итераций
Привет. Нужно решить снар на вчера. Гуглить пытался, но чёт не хватает навыков для использование...

Решение системы нелинейных уравнений методами Ньютона и простых итераций
Написать программу решения системы нелинейных уравнений {y^3-x^2=1; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru