Матрица/Симпсон

Статус
В этой теме нельзя размещать новые ответы.
<!--quoteo--><div class='quotetop'>Цитата</div><div class='quotemain'><!--quotec-->Перевидите на русский пожалуйста. Особенно первое<!--QuoteEnd--></div><!--QuoteEEnd-->
Блин, взял человека абассакал :)
И так, вроде, по-русски написал...

1) Здесь идет прямой ход, метода Гаусса решения СЛАУ...Просто откидываем все примудрости решения уравнений, а также обратный ход метода Гаусса, и приступаем непосредственно к занулению элементов матрицы...
Немного теории (я взял матрицу 4x4 и работаю с 1-ой строкой ):
 
Это "чистяк"! Т.е. расчитывается, что пользователь проги будет адекватным юзером и пихать корректную инфу в алгоритм...

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->/*
&nbsp; &nbsp;for beta-test

&nbsp; &nbsp;2 &nbsp;4 &nbsp;3 &nbsp;2
&nbsp; &nbsp;5 &nbsp;1 &nbsp;2 &nbsp;3
&nbsp; &nbsp;4 &nbsp;2 &nbsp;1 &nbsp;3
&nbsp; &nbsp;4 &nbsp;2 &nbsp;3 &nbsp;1
*/

#include <iostream>
#include <conio>

int main()
&nbsp;{
&nbsp; &nbsp;///// n - stroka /////
&nbsp; &nbsp;///// m - stolbec /////
&nbsp; &nbsp;int n, m;
&nbsp; &nbsp;float M;

&nbsp; &nbsp;cout << "============" << endl;
&nbsp; &nbsp;cout << " Program Matrica &nbsp;" &nbsp;<< endl;
&nbsp; &nbsp;cout << "============" << endl;

&nbsp; &nbsp;cout << endl;
&nbsp; &nbsp;cout << "Enter size of the matrix:" << endl;
&nbsp; &nbsp;cin >> n >> m;

&nbsp; &nbsp;float a['n']['m'];

&nbsp; &nbsp;cout << endl << "Enter elements of the matrix:" << endl << endl;

&nbsp; &nbsp;for (int i = 1; i <= n; i++)
&nbsp; &nbsp; &nbsp;{
&nbsp; &nbsp; &nbsp; &nbsp;for (int j = 1; j <= m; j++)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cout << "a[" << i << "][" << j << "]: ";
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cin >> a[j];
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
&nbsp; &nbsp; &nbsp;}

&nbsp; &nbsp;cout << endl << endl << "Start-matrix:" << endl << endl;

&nbsp; &nbsp;for (int i = 1; i <= n; i++)
&nbsp; &nbsp; &nbsp;{
&nbsp; &nbsp; &nbsp; &nbsp;for (int j = 1; j <= m; j++)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cout << a[j] << " &nbsp;";
&nbsp; &nbsp; &nbsp; &nbsp;cout << endl;
&nbsp; &nbsp; &nbsp;}

//----------------------PEKLO ZDES!----------------------

&nbsp; &nbsp;for (int i = 1; i < n; i++)
&nbsp; &nbsp; &nbsp;{
&nbsp; &nbsp; &nbsp; &nbsp;///// j < (i+1) - ishem /////
&nbsp; &nbsp; &nbsp; &nbsp;///// mnozhiteli pod glavnoi /////
&nbsp; &nbsp; &nbsp; &nbsp;///// diaganaliu matrici /////
&nbsp; &nbsp; &nbsp; &nbsp;for (int j = 1; j < (i+1); j++)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///// M - mnozhitel /////
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///// elementa j stroki i+1 /////
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;M = -(a[i+1][j]/a[1][j]);

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///// zanulenie elementa j /////
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///// stroki i+1 /////
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (int mnozhj = j; mnozhj <= m; mnozhj++)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;a[i+1][mnozhj] += M*a[1][mnozhj];
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
&nbsp; &nbsp; &nbsp;}

//-------------------------------------------------------

&nbsp; &nbsp;cout << endl << endl << "Finish-matrix:" << endl << endl;

&nbsp; &nbsp;for (int i = 1; i <= n; i++)
&nbsp; &nbsp; &nbsp;{
&nbsp; &nbsp; &nbsp; &nbsp;for (int j = 1; j <= m; j++)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cout << a[j] << " &nbsp;";
&nbsp; &nbsp; &nbsp; &nbsp;cout << endl;
&nbsp; &nbsp; &nbsp;}

&nbsp; &nbsp;cout << endl << endl << "Press any key...";

&nbsp; &nbsp;getch();

&nbsp; &nbsp;return(0);
&nbsp;}<!--c2--></div><!--ec2-->
 
2)Цикл 4-ки и 2-ки там идет!
Решение достаточно простое: тебе самому смешно станет...
Объявляем где-нибудь
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->float p = 4;<!--c2--></div><!--ec2-->

А затем цикл
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->for (int i = 1; i < n; i++)
&nbsp;{
&nbsp; &nbsp;///// cikl 4-ki & 2-ki /////
&nbsp; &nbsp;p = 6 - p;
&nbsp;}<!--c2--></div><!--ec2-->

Где "n" - число столбцов(шагов) под функцией...Чем больше "n", тем точнее интеграл...

ЗЫ Можно конечно и побитовое деление "%" использовать, но это не то "пальто" :)
 
О! Большое спасибо! Все работает!

Voventus, я смотрю ты толковый чувак.
Не мог бы ты мне еще помочь диффур решить?!
А то блин все решил, а последний не срост.

y=2*x^2*y'*y*ln(y)-x*y'

^2 - возведение в квадрат
y' - производная от y по x
y=y(x)

Задача Коши:
Xo=3
Yo=1

Заранее спасибо!!!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху