caly kod juz napisałem, wraz z redukcja macierzy, i zostalo mi tylko wykonanie mnozenia, ale nie do konca rozumiem tutaj twój kod,
Jak masz kod to go pokaż i wyjaśnij czemu masz problem z mnożeniem.
W C++ https://godbolt.org/z/K4q1r9Ks4 (disclaimer: pewnie pomiszałem k1
i k2
)
void mnozenieMacierzy(double **macierz, double *wektor, int w_macierzy,int k_macierzy, int pasmo)
{
//macierz to moja macierz
// wektor to moj wektor
// w_macierzy to ilosc wierszy macierzy
// k_macierzy to ilosc kolumn mojej macierzy
// pasmo to dlugosc pasma mojej macierzy
double* wynik = (double*)malloc(sizeof(double) * w_macierzy);
if (!wynik)
{
bledy();
exit(10);
}
int i,j;
for (i = 0; i < w_macierzy; i++)
wynik[i] = 0;
for (i = 0; i < w_macierzy; i++)
{
for (j = 0; j < k_macierzy; j++)
{
int ii = i + ((pasmo - 1) / 2 + 1);
if (0 <= ii && ii < w_macierzy)
{
wynik[i] += macierz[i][j] * wektor[ii];
}
}
}
for (i = 0; i < w_macierzy; i++)
{
printf("%lf\n", wynik[i]);
}
if (macierz)
{
for (i = 0; i < w_macierzy; i++)
{
if (macierz[i])
{
free(macierz[i]);
}
}
free(macierz);
macierz = NULL;
}
if (wynik)
free(wynik);
wynik = NULL;
if (wektor)
free(wektor);
wektor = NULL;
}
to funkcja do mnozenia mojej macierzy(zredukowanej) przez wektor, próbowałem zaimplementować to co mi napisałeś, ale nie wychodzi