Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2014, 18:36   #1
slevin_45
Новичок
Джуниор
 
Регистрация: 04.03.2014
Сообщений: 1
По умолчанию решение СЛАУ методом квадратного корня. найти ошибку в коде.

решение СЛАУ методом квадратного корня.Выводит неверные корни.Вот блок-схема и формулы рассчёта массивов d и s
Код:
#include<iostream>
#include<math.h>
using namespace std;
int main (void)
{
	double a[6][6],b[6],x[6],y[6],delta,delta2=0,delta3=0,del2,del3,delta4=0,del4,s[6][6],d[6],H;
	int i,j,n,k;
	cout<<"vvedite poryadok matrici";
	cin>>n;
	n=n+1;
	a[1][1]=-4.88; a[1][2]=1;  a[1][3]=0;a[1][4]=0; a[1][5]=0;
	a[2][1]=1;     a[2][2]=-2; a[2][3]=1; a[2][4]=0;a[2][5]=0;
	a[3][1]=0;     a[3][2]=1;  a[3][3]=-2;a[3][4]=1; a[3][5]=0;
	a[4][1]=0;      a[4][2]=0;  a[4][3]=1; a[4][4]=-2;a[4][5]=1;
	a[5][1]=0;      a[5][2]=0;  a[5][3]=0; a[5][4]=1; a[5][5]=-4.88;
	b[1]=0;b[2]=-8;b[3]=-8;b[4]=-8;b[5]=0;
	for(k=1;k<n;k++)//нахождение элементов S и d;
	{
		for(i=1;i<=k-1;i++)
		{
			del2=d[i]*pow(fabs(s[i][k]),2);
			delta2=delta2+del2;
		}
		if((a[k][k]-delta2)>0)
			d[k]=1;
			if((a[k][k]-delta2)<0)
				d[k]=-1;
				s[k][k]=pow(fabs(a[k][k]-delta2),1/2);
				for(j=k+1;j<n;j++)
				{
					for(i=1;i<k-1;i++)
					{
						del4=d[i]*s[i][k]*s[i][j];
						delta4=delta4+del4;
					}
					s[k][j]=(a[k][j]-delta4)/(s[k][k]*d[k]);
				}
	}
	for(k=1;k<n;k++)
	{
		delta=a[k][k];
		if(k!=1)
		{
			for(i=1;i<k-1;i++)
			{
				delta=delta-d[i]*pow(s[i][k],2);
			}
		}
		if(delta>0)
		d[k]=1;
		if(delta<0)
			d[k]=-1;
			s[k][k]=pow(fabs(delta),1/2);
				for(j=k+1;j<n;j++)
				{
					delta=a[k][j];
					if(k!=1)
					{
						for(i=1;i<k-1;i++)
						{
							delta=delta-d[i]*s[i][k]*s[i][j];
						}
					}
					s[k][j]=delta/(s[k][k]*d[k]);
				}
	}
	y[1]=b[1]/(s[1][1]*d[1]);
	for(i=2;i<n;i++)
	{
		delta=b[i];
		for(k=1;k<i-1;k++)
		{
			delta=delta-d[k]*y[k]*s[k][i];
		}
		y[i]=delta/(s[i][i]*d[i]);
	}
	x[n-1]=y[n-1]/s[n-1][n-1];
	for(i=n-2;i>=1;i--)
	{
		delta=y[i];
		for(k=i+1;k<n;k++)
		{
			delta=delta-x[k]*s[i][k];
		}
		x[i]=delta/s[i][i];
	}
	cout<<endl;
	for(i=1;i<n;i++)
	{
		cout<<x[i];
		cout<<endl;
	}
	cout<<"nevyazka";
	 for(i=1;i<n;i++)
				  {
                      double z=0;
                        for(int j=1;j<n;j++)
                        {
                        z=z+(a[i][j]*x[j]);
                        }
							H=fabs(b[i]-z);
							cout<<endl;
							 cout<<"Nevyazka"<<H;
	 }
	system("pause");
	return(0);
}
Изображения
Тип файла: jpg Безымянный.jpg (34.4 Кб, 124 просмотров)

Последний раз редактировалось slevin_45; 04.03.2014 в 18:53. Причина: недописал.
slevin_45 вне форума Ответить с цитированием
Старый 04.03.2014, 19:45   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,152
По умолчанию

можно лишь посоветовать на листочке просчитать алгоритм, а потом пошагово смотреть, где начинаются различия между тем, что должно быть и тем, то есть на самом деле.
Smogg вне форума Ответить с цитированием
Старый 06.03.2014, 10:59   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Один дурацкий вопрос: а почему вы сделали программу не точно по представленной блок-схеме, а переставили местами расчеты конкретных величин? В итоге и сами потерялись, и нам задачу только усложнили. Я честно пытался полчаса вникнуть в решение, однако большую часть времени потратил только на сопоставление блоков схемы с кусками кода вместо того, чтобы искать непосредственно проблему.

Это не претензия, упаси боже, простой интерес.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа решение СЛАУ методом квадратного корня (MQ) на языке "C". smilikys Помощь студентам 0 15.11.2013 16:23
СЛАУ методом квадратного корня C++ Dmitry_Web Помощь студентам 4 27.05.2012 21:20
решение слу методом квадратного корня dmitrialenitchev Общие вопросы C/C++ 1 03.10.2011 00:08
Обращение матрицы методом разложения её на произведение двух треугольных(найти ошибку в коде) Monomah Общие вопросы C/C++ 0 20.02.2011 18:35