slm arkadaşlar,fortranda nxn tipindeki matrislerin çarpılması,toplanması,çıkarılması,transpozesi ve tersini nasıl buldurabilirim? bi fikri olan var mı? en azından nasıl bi mantık kullanmam gerektiğini sölerseniz sevinirim. şimdiden teşekkürler :super:
en sonunda matrisleri çarpmayı başardım. ama hala düzenli bi şekilde yazdıramadım,matris 2x2 lik bile olsa tüm elemanlarını satır sonuna kadar yazıyo :garip:
program deneme
dimension A(50,50),B(50,50),C(50,50)
write (*,*) 'Bu program girilen iki matrisi carpmanizi saglar.'
write (*,*) ' satir sayisi m ve sutun sayisi n olmak uzere,A matrisinin boyutlarini giriniz. '
read (*,*) m,n ! m satir sayisi,n sutun sayisi
write (*,*) 'A matsinin aij elemanlarini sirasiyla giriniz.'
read (*,*) ((A(i,j),j=1,n),i=1,m) ! 1. matrisi okuyoruz.
write (*,*) ' satir sayisi k ve sutun sayisi l olmak uzere,B matrisinin boyutlarini giriniz. '
read (*,*) k,l ! k satir sayisi,l sutun sayisi
write (*,*) 'B matsinin bij elemanlarini sirasiyla giriniz.'
read (*,*) ((B(i,j),j=1,l),i=1,n)
open(11,FILE='burak.txt') ! kayıt yapılacak dosyanın adı
if (k.NE.m) goto 30
write (*,*) 'A matrisi'
write (*,10) ((A(i,j),j=1,n),i=1,m)
10 format (6x,2f10.1)
write (*,*) 'B matrisi'
write (*,20) ((B(i,j),j=1,l),i=1,n)
20 format (6x,2f10.1)
call carpim (A,B,m,n,l,c)
write (*,*) 'Matrislerin carpimi:'
write (11,50) ((c(i,j),j=1,l),i=1,m) !buraya burak.txt dosyasina yazılmasını istediklerimizi yazıyoruz
write (*,50) ((c(i,j),j=1,l),i=1,m)
50 format (x,2f10.1)
goto 40
30 write (*,*) ' bu matrisler carpilamaz.'
40 stop
end
subroutine carpim (A,B,m,n,l,c)
dimension A(50,50),B(50,50),C(50,50)
do 10 i=1,m
do 10 j=1,l
C(i,j)=0
do 10 k=1,n
C(i,j)=C(i,j)+A(i,k)*B(k,j)
10 continue
return
end
bu da nxn tipindeki bi matrisin determinantını hesaplayan programın fortran kodları:
program determinant
dimension A(100,100),B(100,100)
write (*,*) 'Bu program maksimum 100x100 buyutundaki matrisin determinantini almanizi saglar'
write (*,*) '================================================= =============================='
write (*,*)
write (*,*) 'Lutfen A matrisinin boyutunu giriniz:'
read (*,*) n
deger=1
write (*,*) 'Lutfen A matrisinin elemanlarini giriniz:'
read (*,*) ((A(i,j),j=1,n),i=1,n)
write (*,*) ' A matrisi: '
write (*,*) '==========='
write (*,*) ((A(i,j),j=1,n),i=1,n)
write (*,*) '================================'
write (*,*) '================================'
do 30 i=1,(n-1)
do 30 j=(i+1),n
elmn=A(j,i)/A(i,i)
do 30 k=(i+1),n
A(j,k)=A(j,k)-elmn*A(i,k)
30 continue
do 40 L=1,n
deger=deger*A(L,L)
40 continue
write (*,*) 'A matrisinin determinanti:',deger
end
Forum Yazılımı : vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.