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

Решение системы линейных уравнений с помощъю LU-разложения и обратной матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как програмировать на с++ под WM6? http://www.cyberforum.ru/cpp-beginners/thread19844.html
Кто-нибудь знает как програмировать на с++ под WM6? что надо сделать что-бы хотябы вот это заработало: #include <iostream> int main() { std::cout<<"Hello world!"<<std::endl; return 0; }
C++ Блокировка цифер на клавиатуре Помогите пожалуйста написать программу, которая будет реагировать на нажатие комбинации клавиш Ctrl+Shift+F3 и блокирует цифры на клавиатуре, а при повторном нажатии клавиш разблокирует. Буду благодарен за любую помощь. :) http://www.cyberforum.ru/cpp-beginners/thread19618.html
Презагрузка драйвера C++
У меня переодически летит драйвер на модем беспроводного соеденения ,живу с этим давно -уже должен свыкнутся ,но мне это надоело .Вместо того что-бы каждый раз вставать ,выдергивать и вставлять обратно модем ,хочу написать прогу (или строковое обращение) с помощью которой можно выгрузить а потом загрузить драйвер обратно (т.е. выполнить его перезагрузку) .Кто знает подскажите как это зделать в...
Эмулирование Клавиатуры C++
Столкнулся с проблемой написал программу через mouse_event и такж для клавы но в окне котором клава не пашет и мышь и окна этакие скрыто другим приложением.. Помогите написать драйвер для клавиатуры верней мне надо управлять клавиатурой на уровне драйвера(или ядра хз) (система Windows Xp) если возможно то мышкой тоже и как работать с прерываниями?,этих устройств может.
C++ Компилятор http://www.cyberforum.ru/cpp-beginners/thread19370.html
дайте ссылку на какой нибудь компилятор нормальный под висту пожалуста? у меня visual studio 2008 но работает както не так, то файл не найдет какойто там для компиляции, то еще чего то...может я не так проекты создаю, может что еще. dev c++ у меня вобще не компилирует, борланд то же самое. чтото мне кажется, что нормальный компилятор просто так не скачаешь из интернета):help:
C++ Записать в одну строку конкатенацию (соединение) всех строк из файла, разделенные пробелами Помогите сделать такую задачу в с++,записать в одну строку конкатинацию(соединение) всех строк разделенные пробелами,читать строки из файла,строку записать в файл,использовать библиотеки iostream,cstring,fstream.помогите подробнее

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

Решение системы линейных уравнений с помощъю LU-разложения и обратной матрицы - C++

27.12.2008, 11:03. Просмотров 2846. Ответов 0
Метки (Все метки)

помогите пожалуйста....Мне нужно решить систему линейних уравнений с помощью этих методов у меня есть коды, но компилятор все время видает ошибки.Буду очень признателна, если мне поможите разобраться в этих кодах....И матрицу Жакобиана я ищу в ручныю-это производние от функций

Код
#include "nrutil.h"
#include <iostream>
#define TINY 1.0e-20;
#define NRANSI
void LU::lubksb(float **a, int n, int *indx, float b[])
{
	int i,ii=0,ip,j;
		float sum;

		for (i=1;i<=n;i++) {
			ip=indx[i];
			sum=b[ip];
			b[ip]=b[i];
			if (ii)
				for (j=ii;j<=i-1;j++) sum -= a[i][j]*b[j];
			else if (sum) ii=i;
			b[i]=sum;
		}
		for (i=n;i>=1;i--) {
			sum=b[i];
			for (j=i+1;j<=n;j++) sum -= a[i][j]*b[j];
			b[i]=sum/a[i][i];
		}
}

void LU::ludcmp(float **a, int n, int *indx, float *d)
{
	int i,imax,j,k;
	float big,dum,sum,temp;
	float *vv;

	vv=vector(1,n);
	*d=1.0;
	for (i=1;i<=n;i++) {
		big=0.0;
		for (j=1;j<=n;j++)
			if ((temp=fabs(a[i][j])) > big) big=temp;
		if (big == 0.0) nrerror("Singular matrix in routine ludcmp");
		vv[i]=1.0/big;
	}
	for (j=1;j<=n;j++) {
		for (i=1;i<j;i++) {
			sum=a[i][j];
			for (k=1;k<i;k++) sum -= a[i][k]*a[k][j];
			a[i][j]=sum;
		}
		big=0.0;
		for (i=j;i<=n;i++) {
			sum=a[i][j];
			for (k=1;k<j;k++)
				sum -= a[i][k]*a[k][j];
			a[i][j]=sum;
			if ( (dum=vv[i]*fabs(sum)) >= big) {
				big=dum;
				imax=i;
			}
		}
		if (j != imax) {
			for (k=1;k<=n;k++) {
				dum=a[imax][k];
				a[imax][k]=a[j][k];
				a[j][k]=dum;
			}
			*d = -(*d);
			vv[imax]=vv[j];
		}
		indx[j]=imax;
		if (a[j][j] == 0.0) a[j][j]=TINY;
		if (j != n) {
			dum=1.0/(a[j][j]);
			for (i=j+1;i<=n;i++) a[i][j] *= dum;
		}
	}
	free_vector(vv,1,n);
}
#undef TINY
#undef NRANSI

Inverse of matrixe
float **a,**y,d,*col;
int i,j *index;
ludcmp(a,N,indx,&d);
for(j=1;j<=N;j++)
 {
    for (i=1;i<=N;i++)
        col[i]=0.0;
       col[j]=1.0;
       lubksb(a,N,indx,col);
       for(i=1;i<=N;i++) y[i][j]=col[i];
 }


#ifndef _NR_UTILS_H_
#define _NR_UTILS_H_

static float sqrarg;
#define SQR(a) ((sqrarg=(a)) == 0.0 ? 0.0 : sqrarg*sqrarg)

static double dsqrarg;
#define DSQR(a) ((dsqrarg=(a)) == 0.0 ? 0.0 : dsqrarg*dsqrarg)

static double dmaxarg1,dmaxarg2;
#define DMAX(a,b) (dmaxarg1=(a),dmaxarg2=(b),(dmaxarg1) > (dmaxarg2) ?\
        (dmaxarg1) : (dmaxarg2))

static double dminarg1,dminarg2;
#define DMIN(a,b) (dminarg1=(a),dminarg2=(b),(dminarg1) < (dminarg2) ?\
        (dminarg1) : (dminarg2))

static float maxarg1,maxarg2;
#define FMAX(a,b) (maxarg1=(a),maxarg2=(b),(maxarg1) > (maxarg2) ?\
        (maxarg1) : (maxarg2))

static float minarg1,minarg2;
#define FMIN(a,b) (minarg1=(a),minarg2=(b),(minarg1) < (minarg2) ?\
        (minarg1) : (minarg2))

static long lmaxarg1,lmaxarg2;
#define LMAX(a,b) (lmaxarg1=(a),lmaxarg2=(b),(lmaxarg1) > (lmaxarg2) ?\
        (lmaxarg1) : (lmaxarg2))

static long lminarg1,lminarg2;
#define LMIN(a,b) (lminarg1=(a),lminarg2=(b),(lminarg1) < (lminarg2) ?\
        (lminarg1) : (lminarg2))

static int imaxarg1,imaxarg2;
#define IMAX(a,b) (imaxarg1=(a),imaxarg2=(b),(imaxarg1) > (imaxarg2) ?\
        (imaxarg1) : (imaxarg2))

static int iminarg1,iminarg2;
#define IMIN(a,b) (iminarg1=(a),iminarg2=(b),(iminarg1) < (iminarg2) ?\
        (iminarg1) : (iminarg2))

#define SIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a))

#if defined(__STDC__) || defined(ANSI) || defined(NRANSI) /* ANSI */

void nrerror(char error_text[]);
float *vector(long nl, long nh);
int *ivector(long nl, long nh);
unsigned char *cvector(long nl, long nh);
unsigned long *lvector(long nl, long nh);
double *dvector(long nl, long nh);
float **matrix(long nrl, long nrh, long ncl, long nch);
double **dmatrix(long nrl, long nrh, long ncl, long nch);
int **imatrix(long nrl, long nrh, long ncl, long nch);
float **submatrix(float **a, long oldrl, long oldrh, long oldcl, long oldch,
	long newrl, long newcl);
float **convert_matrix(float *a, long nrl, long nrh, long ncl, long nch);
float ***f3tensor(long nrl, long nrh, long ncl, long nch, long ndl, long ndh);
void free_vector(float *v, long nl, long nh);
void free_ivector(int *v, long nl, long nh);
void free_cvector(unsigned char *v, long nl, long nh);
void free_lvector(unsigned long *v, long nl, long nh);
void free_dvector(double *v, long nl, long nh);
void free_matrix(float **m, long nrl, long nrh, long ncl, long nch);
void free_dmatrix(double **m, long nrl, long nrh, long ncl, long nch);
void free_imatrix(int **m, long nrl, long nrh, long ncl, long nch);
void free_submatrix(float **b, long nrl, long nrh, long ncl, long nch);
void free_convert_matrix(float **b, long nrl, long nrh, long ncl, long nch);
void free_f3tensor(float ***t, long nrl, long nrh, long ncl, long nch,
	long ndl, long ndh);

#else /* ANSI */
/* traditional - K&R */

void nrerror();
float *vector();
float **matrix();
float **submatrix();
float **convert_matrix();
float ***f3tensor();
double *dvector();
double **dmatrix();
int *ivector();
int **imatrix();
unsigned char *cvector();
unsigned long *lvector();
void free_vector();
void free_dvector();
void free_ivector();
void free_cvector();
void free_lvector();
void free_matrix();
void free_submatrix();
void free_convert_matrix();
void free_dmatrix();
void free_imatrix();
void free_f3tensor();

#endif /* ANSI */

#endif /* _NR_UTILS_H_ */
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru