С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как рассчитать невязку в программе?? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить, какая цифра находится в заданной позиции в последовательности степеней десятки http://www.cyberforum.ru/cpp-beginners/thread276283.html
Ограничение времени: 1.0 секунды Ограничение памяти: 16 МБ Представим себе бесконечную последовательность цифр, составленную из записанных друг за другом возрастающих степеней десятки. Вот начало...
C++ ATOI конвертации, непонятная ошибочка кусок должен принимать чар в буффер, N нужно лишь для проверки #include <stdio.h> #include <stdlib.h> char *buffer1; int N; ... printf("Введите значение N"); scanf_s ("%s", &buffer1); http://www.cyberforum.ru/cpp-beginners/thread276272.html
C++ Ассемблеровские вставки в C++
Подскажите, пожалуйста, как в таких вставках в C++ сделтаь массив чисел (или строк) везде написано одно и то же, вот как здесь http://www.kolasc.net.ru/cdo/programmes/assembler/massiv.html но на...
многовымерние масиви C++
Элемент матрицы назовем седловой точки, если он является наименьшим в своей строке и одновременно крупнейшим в своем столбце или, наоборот, является крупнейшим в своей строке и наименьшим в своем...
C++ Вычислить сумму ряда http://www.cyberforum.ru/cpp-beginners/thread276261.html
Вычислить сумму ряда: S=3/2!+(5+9)/4!+(7+13+19)/6!+... N=2,4,6,8,10...(число стоящее в знаменателе-задается с экрана)! Код реализовать в Си. Заранее благодарен откликнувшимся. Добавлено через...
C++ Раздробить слово Дано слово: "write('a=c-b.vv" Как создать массивы: со словами {write,vv}, с переменными {a,b,c}, со знаками {(,',=,-,.}, подробнее

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

Как рассчитать невязку в программе?? - C++

14.04.2011, 13:31. Просмотров 1075. Ответов 2
Метки (Все метки)

#include <iostream.h>
#include <math.h>
#include <conio.h>
int sign(double x)
{
if (x < 0) return -1;
else return 1;
}

void main()
{
double dd = -2;
double q = -3.23;
const int n = 5;

double a[n][n] = {
{q, 1, 0, 0, 0},
{1, -2, 1, 0, 0},
{0, 1, -2, 1, 0},
{0, 0, 1, -2, 1},
{0, 0, 0, 1, q}
};
double b[n] = {0, dd, dd, dd, 0};
double x[n];

int d[n];
double delta, s[n][n];

for (int k = 1; k <= n; k++)
{
delta = a[k - 1][k - 1];
if (k != 1)
for (int i = 1; i <= k - 1; i++)
delta -= d[i - 1]*s[i - 1][k - 1]*s[i - 1][k - 1];

d[k - 1] = sign(delta);
s[k - 1][k - 1] = sqrt(fabs(delta));

for (int j = k + 1; j <= n; j++)
{
delta = a[k - 1][j - 1];
if (k != 1)
for (int i = 1; i <= k - 1; i++)
delta -= d[i - 1]*s[i - 1][k - 1]*s[i - 1][j - 1];

s[k - 1][j - 1] = delta/(s[k - 1][k - 1]*d[k - 1]);
}
}

double y[n];
y[0] = b[0]/(s[0][0]*d[0]);

for (int i = 2; i <= n; i++)
{
delta = b[i - 1];
for (int k = 1; k <= i - 1; k++)
delta -= d[k - 1]*y[k - 1]*s[k - 1][i - 1];
y[i - 1] = delta/(s[i - 1][i - 1]*d[i - 1]);
}

x[n - 1] = y[n - 1]/s[n - 1][n - 1];
for (i = n - 1; i >= 1; i--)
{
delta = y[i - 1];
for (int k = i + 1; k <= n; k++)
delta -= x[k - 1]*s[i - 1][k - 1];
x[i - 1] = delta/s[i - 1][i - 1];
}

for (k = 0; k < n; k++) cout << " " << x[k];
cout << endl;

return;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.