Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako se mnoze matrice u C-u?

[es] :: C/C++ programiranje :: Kako se mnoze matrice u C-u?

[ Pregleda: 10031 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kUdtiHaEX
Beograd, Yugoslavia

Član broj: 3372
Poruke: 2598
*.vdial.verat.net

ICQ: 167621705
Sajt: www.webhost.co.yu


+4 Profil

icon Kako se mnoze matrice u C-u?24.05.2004. u 10:10 - pre 212 meseci
Ovo je glupo pitanje, znam, ali ne mogu nikako da nateram da se moje matrice pomnoze. Moram da izvrsim mnozenje matrica uz proveru da li se one mogu pomnoziti.
Internet ne cini ljude glupima. Internet cini ljudsku glupost dostupnijom (TM by me)

Webhost Hosting Services
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Kako se mnoze matrice u C-u?24.05.2004. u 10:20 - pre 212 meseci
A koje je pitanje u pitanju?

Gde je sors?

Vidovita Zorka je još uvek na odmoru, pa bi valjalo da nam daš malo materijala za razmišljanje.

f
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16227
*.dip.t-dialin.net



+7027 Profil

icon Re: Kako se mnoze matrice u C-u?24.05.2004. u 10:23 - pre 212 meseci
Ne mnoze se nikako :)

Cist C ne definise matrice kao tip, pa samim tim ni operacije nad matricama :)

Ono sto mozes da uradis je:

1. Da sam implementiras matricnu algebru
2. Da koristis neku od javno dostupnih implementacija

Ja sam odmah nasao nesto za C++

http://sourceforge.net/projects/ematrix/

A siguran sam da ima i za C, potrazi www.sourceforge.net


DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

igac
Banjaluka

Član broj: 415
Poruke: 562
*.etfbl.net.



+2 Profil

icon Re: Kako se mnoze matrice u C-u?24.05.2004. u 14:03 - pre 212 meseci
ili... uzmes linearnu algebru knjigu, procitas kako se mnoze matrice... ;))

prvo provjeris je a[ ]mxn i b[ ]nxp tj da je broj vrsta matrice a == broju kolona matrice b, pa onda mnozis po pravilu i stavljas sve u trecu matricu :]
"nice town, i'll take it..."
 
Odgovor na temu

mojsilo2003
Ivan Mojsilovic
Novi Sad

Član broj: 17984
Poruke: 12
212.200.107.*

Sajt: www.graficar.dzaba.com


Profil

icon Re: Kako se mnoze matrice u C-u?24.05.2004. u 23:54 - pre 212 meseci
Cao! Probaj sledece:

Code:

#define maxdim 10

typedef float TRealMatrica[maxdim][maxdim];
         .
         .
         . 
TRealMatrica A,B;                         
         .
         .
         .
void ProizvodMatrica(float (*A)[maxdim],float (*B)[maxdim],int NA,int NB)
{
TRealMatrica P;
int i,j,k;

clrscr();
if(NA != NB)
  {
    printf("\nGRESKA: Redovi moraju biti isti!");
  }
else
  {
    for(i=0;i<NA;i++)
      for(j=0;j<NA;j++)
    {   
          P[i][j]=0;
      for(k=0;k<NA;k++)
        P[i][j]=P[i][j]+A[i][k]*B[k][j];
    }
  }


ovo je algoritam za mnozenje kvadratnih matrica istih dimenzija pa ako pomaze...
Ja programiram C++
C++ programira mene!!
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
..-chandran.sbs.auckland.ac.nz



+3 Profil

icon Re: Kako se mnoze matrice u C-u?25.05.2004. u 00:25 - pre 212 meseci
A postoje i brzi algoritmi koji ti daju kompleksnost bolju od O(n^3).
 
Odgovor na temu

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1503
*.verat.net

ICQ: 60630914


+1 Profil

icon Re: Kako se mnoze matrice u C-u?25.05.2004. u 02:09 - pre 212 meseci
koliko se secam, to jos uvek nije zatvoreno poglavlje algebre. secam se povrsno strassen-ovih i laderman-ovih algoritama, ali se ne secam da je neko stavio tacku na slucaj optimizacija kod proizvoljnog n*m matricnog mnozenja, ili gresim?
 
Odgovor na temu

NetworkAdmin

Član broj: 4445
Poruke: 609
*.access-sa1.lsinter.net



Profil

icon Re: Kako se mnoze matrice u C-u?25.05.2004. u 07:29 - pre 212 meseci
http://www.netwood.net/~edwin/svmtl/

Eto dole nize imas i u ANSI C a i u f77
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Kako se mnoze matrice u C-u?25.05.2004. u 08:11 - pre 212 meseci
Gilbert Strang u svojoj (doduše vremešnoj) knjizi „Linearna algebra i primene“ govori o algoritmima koji su blizu 2.5 u eksponentu i primećuje da je najverovatnija donja granica 2 „pošto nijedan broj između sadašnje granice i 2 ne izgleda naročito posebno“. Takođe kaže da dotični algoritmi uglavnom nisu zanimljivi za svakodnevnu upotrebu. Zanimljiviji su algoritmi koji rade na matricama poznate strukture.

f
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.dialup.xtra.co.nz



+3 Profil

icon Re: Kako se mnoze matrice u C-u?25.05.2004. u 08:37 - pre 212 meseci
Da, trenutno najbolji algoritam ima vreme izvrsavanja O(n2.376). Pronadjen je 1990. godine.
Ali problem je sto izgleda da je klasican algoritam brzi jer ovde su obracali paznju samo na broj mnozenja (kao "teze" operacije od sabiranja) ali kada se radi sa float brojevima onda je mnozenje brze od sabiranja koliko mi je poznato jer se mnozenje float brojeva radi tako sto se posebno pomnoze mantise i posebno saberu eksponenti.

[Ovu poruku je menjao srki dana 26.05.2004. u 01:25 GMT]
 
Odgovor na temu

NetworkAdmin

Član broj: 4445
Poruke: 609
*.bbone.utic.net.ba.



Profil

icon Re: Kako se mnoze matrice u C-u?25.05.2004. u 11:01 - pre 212 meseci
interesantne su razne iterativne metode za rjesavanje dijagonalno dominantnih matrica koje imaju samo odredjeni broj non-null dijagonala. ali ovo je specijalni slucaj... doduse taj specijalni slucaj je primjenljiv na mnogim fizickim problemima kao recimo proracun toka fluida metodom konacnih volumena :)
 
Odgovor na temu

kUdtiHaEX
Beograd, Yugoslavia

Član broj: 3372
Poruke: 2598
*.vdial.verat.net

ICQ: 167621705
Sajt: www.webhost.co.yu


+4 Profil

icon Re: Kako se mnoze matrice u C-u?25.05.2004. u 13:54 - pre 212 meseci
Hvala na odgovorima, inace radio sam sledece:

Code:

#include <stdio.h>
#include <stdlib.h>

main() {
  int k,p,i,j,m,n,*a,*b,*c;
  
   printf("Mnozenje matrica se vrsi ako je broj kolona jedne matrice\njednak broju vrste druge matrice\n");
   printf("Unesite dimenzije prve matrice:\n");
   scanf("%d%d",&m,&n);
   printf("Unesite dimenzije druge matrice:\n");
   scanf("%d%d",&k,&p);
  while (m>0 && n>0 && n==k){ 
   a=(int*)malloc(m*n*sizeof(int));
   if (a==NULL) break;
 
   b=(int*)malloc(n*p*sizeof(int));
   if (b==NULL) break;
   
   printf("Unesite elemente prve matrice:\n");
   for (i=0;i<m;i++)
      for (j=0;j<n;j++) scanf("%d",&a[i*n+j]);
   printf("Uneta matrica je:\n");
   for (i=0;i<m;i++){
      for (j=0;j<n;j++) printf("%d ",a[i*n+j]);
      putchar('\n'); }
   
   printf("Unesite elemente druge matrice:\n");
   for (i=0;i<n;i++)
      for (j=0;j<p;j++) scanf("%d",&b[i*p+j]);
   printf("Uneta matrica je:\n");
   for (i=0;i<n;i++){
      for (j=0;j<p;j++) printf("%d ",b[i*p+j]);
      putchar('\n'); }
   
   c=(int*)malloc(m*p*sizeof(int));
   if (c==NULL) break;
   
   for (i=0;i<m;i++)
      for (j=0;j<n;j++)
            for (k=0;k<p;k++) c[k*p+i]=a[n*j+i]*b[p*k+j]; 
    
   printf("Proizvod matrica je:\n"); 
   for (i=0;i<m;i++){
      for (j=0;j<p;j++) printf("%d ",c[i*p+j]);
        putchar('\n'); }
   
  printf("\n\n");
   
   free(a); free(b); free(c);
   printf("Mnozenje matrica se vrsi ako je broj kolona jedne matrice\njednak broju vrste druge matrice\n");
   printf("Unesite dimenzije prve matrice:\n");
   scanf("%d%d",&m,&n);
   printf("Unesite dimenzije druge matrice:\n");
   scanf("%d%d",&k,&p);
 }
 

 


Ovaj algoritam za mnozenje matrica nije tacan ( u smislu dobijanja pogresnog rezultata, jer sam bio izmesao vrste i kolone matrica ali sam to ispravio, ispravljeni kod mi nije pri ruci sada).


Internet ne cini ljude glupima. Internet cini ljudsku glupost dostupnijom (TM by me)

Webhost Hosting Services
 
Odgovor na temu

medi
Banja Luka

Član broj: 10638
Poruke: 35
*.etfbl.net.



Profil

icon Re: Kako se mnoze matrice u C-u?28.05.2004. u 09:36 - pre 212 meseci
Pogriješio si ovdje:

for (i=0;i<m;i++)
for (j=0;j<n;j++)
for (k=0;k<p;k++)
c[k*p+i]=a[n*j+i]*b[p*k+j];

ali dobro to, nek neko da ideju za stepenovanje matrica !?
Jel samo množenje uzastopno ili postoji neki još jednostavniji način !?
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Kako se mnoze matrice u C-u?28.05.2004. u 09:46 - pre 212 meseci
Postoji više jednostavnijih načina za stepenovanje. Jedan bi bio recimo korišćenje dinamičkog programiranja gde se pamte međurezultati A, A2, A4, što se može svesti na pamćenje samo jednog međurezultata pa se stepenovanje sa n može obaviti u koraka.

Druga mogućnost bi bila korišćenje Kejli-Hamiltonove teoreme, mada je to verovatno korisno samo za matrice poznate strukture. Sigurno postoji još neki štos.

f
 
Odgovor na temu

medi
Banja Luka

Član broj: 10638
Poruke: 35
*.etfbl.net.



Profil

icon Re: Kako se mnoze matrice u C-u?28.05.2004. u 18:54 - pre 212 meseci
Sviđa mi se ovo sa pamćenjem međurezltata, pokušaću uraditi na taj način. Ako neko ima još neku ideju za brže i jednostavnije stepenovanje matrica neka javi!

Hvala!
 
Odgovor na temu

[es] :: C/C++ programiranje :: Kako se mnoze matrice u C-u?

[ Pregleda: 10031 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.