piszę program na rozkład Choleskiego w C++ używając Code::Blocks. Napisałam już wczytywanie macierzy (zakładam, że użytkownik jest na tyle inteligentny, że wprowadza macierz z twierdzenia Banachiewicza). Ale nie działa mi obliczanie elementów \(\displaystyle{ l_{ij}, l_{ii}}\) co powinnaś poprawić?
Kod: Zaznacz cały
#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
using namespace std;
int main()
{
int i,j,k,n,p;
double sum;
cout << "Podaj rozmiar macierzy A = "; //podanie rozmiaru
cin >> n;
p=n*n;
double * A = new double[p];
double * B = new double[p];
cout << "Podaj elementy macierzy A = "; //wczytanie macierzy
for(i = 0; i < n; i++)
for(j = 0; j < n; j++) cin >> A[i * n + j];
cout << endl;
//kontrolne wypisanie macierzy
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++) cout << A[i * n + j] << " ";
cout << endl;
}
//obliczanie elementow ?????????????????????????????????????/
for (i=0;i<n;i++){
for (j=i;i<n;j++){
for (sum=A[i * n + j];k=i+1;k++) sum=A[i * n + k]*A[j * n + k];
if(i==j) nerror("nie dziala");{
B[i]=sqrt(sum);
} else A[i*n+j] = sum/B[i];
}
//?????????????????????????????????????????????????????
system("pause");
return 0;
}