matris yöntemiyle kafes çözen bi program yazıyorum fakat kombinasyon denemelerinde sıkıntı yaşıyorum switch case döngüsünde sorun yok ancak if else if döngüsündeki kombinasyonu çağıramıyorum hep ilk kombinasyonu çağırıyor program nerede hata yapmış olabilirim ..!!
if ‘x=1’ if’y=2′ Global_K1=[a1+a4+a5+a2,-a2,-b1,-a4,-b4,0,-b5; -a2,a3+a2,b2+b3,-a3,-b3,0,0; -b2,b2+b3,c2+c3,-b3,-c3,0,0; -a4,-a3,-b3,a7+a4+a3,b3+b4+b7,-a7,-b7; -b4,-b3,-c3,b3+b4+b7,c3+c4+c7,-b7,-c7; 0,0,0,-a7,-b7,a6+a7+a5,b5+b6+b7; -b5,0,0,-b7,-c7,b5+b6+b7,c5+c6+c7].*EA./L; disp(‘7×7 lik Global K Matrisi ‘) disp(Global_K1) disp(‘F KUVVETLERİNİ GİRİNİZ?’); F1=input(‘F1X=’); F2=input(‘F2Y=’); F3=input(‘F3X=’); F4=input(‘F4Y=’); F5=input(‘F5X=’); F6=input(‘F6Y=’); F7=input(‘F7X=’); F8=input(‘F8Y=’); F9=input(‘F9X=’); F10=input(‘F10Y=’); F=[F3;F5;F6;F7;F8;F9;F10]; disp(‘F MATRİSİ’); disp(F); disp(‘ d deplasman sonuçları ‘ ) A=inv(Global_K1); d=A*F; disp(d); elseif’y=3′ if’z=2′ Global_K2=[ a1+a4+a5+a2,b1+b4+b2+b5,-a2,-a4,-b4,0,-b5; b1+b4+b2+b5,c1+c4+c2-c5,-b2,-b4,-c4,0,0; -a2,-b2,a3+a2,-a3,-b3,0,0; -a4,-b4,-a3,a7+a4+a3,b3+b4+b7,-a7,-b7; -b4,-c4,-b3,b3+b4+b7,c3+c4+c7,-b7,-c7; 0,0,0,-a7,-b7,a6+a7+a5,b5+b6+b7; -b5,0,0,-b7,-c7,b5+b6+b7,c5+c6+c7].*EA./L; disp(‘7×7 lik Global K Matrisi ‘) disp(Global_K2) disp(‘F KUVVETLERİNİ GİRİNİZ?’); F1=input(‘F1X=’); F2=input(‘F2Y=’); F3=input(‘F3X=’); F4=input(‘F4Y=’); F5=input(‘F5X=’); F6=input(‘F6Y=’); F7=input(‘F7X=’); F8=input(‘F8Y=’); F9=input(‘F9X=’); F10=input(‘F10Y=’); F=[F3;F4;F5;F7;F8;F9;F10]; disp(‘F MATRİSİ’); disp(F); disp(‘ d deplasman sonuçları ‘ ) A=inv(Global_K2); d=A*F; disp(d); elseif’z=3′ if’q=2′ Global_K3=[ a1+a4+a5+a2,b1+b4+b2+b5,-a2,-b1,-a4,0,-b5; b1+b4+b2+b5,c1+c4+c2-c5,-b2,0,-b4,0,0; -a2,-b2,a3+a2,b2+b3,-a3,0,0; -b2,0,b2+b3,c2+c3,-b3,0,0; -a4,-b4,-a3,-b3,a7+a4+a3,-a7,-b7; 0,0,0,0,-a7,a6+a7+a5,b5+b6+b7; -b5,0,0,0,-b7,b5+b6+b7,c5+c6+c7].*EA./L; disp(‘7×7 lik Global K Matrisi ‘) disp(Global_K3) disp(‘F KUVVETLERİNİ GİRİNİZ?’); F1=input(‘F1X=’); F2=input(‘F2Y=’); F3=input(‘F3X=’); F4=input(‘F4Y=’); F5=input(‘F5X=’); F6=input(‘F6Y=’); F7=input(‘F7X=’); F8=input(‘F8Y=’); F9=input(‘F9X=’); F10=input(‘F10Y=’); F=[F3;F4;F5;F6;F7;F9;F10]; disp(‘F MATRİSİ’); disp(F); disp(‘ d deplasman sonuçları ‘ ) A=inv(Global_K3); d=A*F; disp(d); elseif’q=3′ if’t=2′ Global_K4=[ a1+a4+a5+a2,b1+b4+b2+b5,-a2,-b1,-a4,-b4,0; b1+b4+b2+b5,c1+c4+c2-c5,-b2,0,-b4,-c4,0; -a2,-b2,a3+a2,b2+b3,-a3,-b3,0; -b2,0,b2+b3,c2+c3,-b3,-c3,0; -a4,-b4,-a3,-b3,a7+a4+a3,b3+b4+b7,-a7; -b4,-c4,-b3,-c3,b3+b4+b7,c3+c4+c7,-b7; 0,0,0,0,-a7,-b7,a6+a7+a5].*EA./L; disp(‘7×7 lik Global K Matrisi ‘) disp(Global_K4) disp(‘F KUVVETLERİNİ GİRİNİZ?’); F1=input(‘F1X=’); F2=input(‘F2Y=’); F3=input(‘F3X=’); F4=input(‘F4Y=’); F5=input(‘F5X=’); F6=input(‘F6Y=’); F7=input(‘F7X=’); F8=input(‘F8Y=’); F9=input(‘F9X=’); F10=input(‘F10Y=’); F=[F3;F4;F5;F6;F7;F8;F9]; disp(‘F MATRİSİ’); disp(F); disp(‘ d deplasman sonuçları ‘ ) A=inv(Global_K4); d=A*F; disp(d);
Muhtemelen if-else döngünüzün ilk şartını yazarken sorun yaşıyor olabilirsiniz. Elde ettiğiniz her değer ilk döngüye giriyor/ ilk şartı sağlıyor ve sonra program bitiyor tahminimce.
end lerin hepsini en sona attım onla alakalı bir sorun olmuş olamaz demi örnekteki yapıda bir sorun var mı ???
Öncelikle kodu Matlab dili ile yazıp yazmadığınızı sormak istiyorum; zira if şartlarını kesme işaretleri içinde belirtmişsiniz ki Matlab'da böyle bir şey yaparsanız string tanımlamış oluyorsunuz. Ayrıca, eşitlik kontrolü yapmak isterseniz bir tane = kullanmak yerine iki tane eşittir işareti, yani == kullanmanız gerekiyor.
end lerin hepsini en sona atmanız demek bütün if leri iç içe yazmanız demektir. Yani kodunuz mesela if a==3 şartı sağlandıktan sonra if b==2 şartının sağlanıp sağlanmadığını kontrol edecektir; end lerin hepsini en sona yazmazsanız a==3 şartının sağlanıp sağlanmadığı kontrol edilir, sonra b==2 şartının sağlanıp sağlanmadığı kontrol edilir (a==3 şartının sağlanıp sağlanmadığına bakılmaksızın).
Kodunuzu bu haliyle tam anlayamadım, şartların ne ifade ettiğini açıklarsanız daha fazla yardımcı olabiliriz.
matlab dilinde yazıyorum evet if şartları switch case lere bağlı x y z q ve t diye 5 adet switch case döngüsü var ve her döngüde 1 2 3 diye 3 adet case var bundan aldığım sonuçtan yola çıkarak if döngüsü kurdum programı çalıştırdığımda switch case de sıkıntı çıkmıyor ama if döngüsünde ki ilk şartı alıyor her farklı denememe rağmen ?
dediğiniz gibi x==1 gibi yazdım end leri sona attım bu sefer if ifadesini hiç yazmamışım gibi davranıyor program ??
x, y, z, q ve t'nin değerlerine göre programın farklı davranışlar sergilemesini istiyorsunuz anladığım kadarıyla. Genel olarak şu şekilde bir yapı gerekiyor bunun için (değerleri rastgele koydum):
if x==2 %x 2 ise yapılacaklar elseif y==3 %y 3 ise yapılacaklar elseif z==4 %z 4 ise yapılacaklar elseif q==5 %q 5 ise yapılacaklar elseif t==6 %t 6 ise yapılacaklar end
Bu yapıda x 2 ise belli işlemler yapılacak. Değilse, y'nin 3 olup olmadığı kontrol edilecek. O da 3 değilse z'ye bakılacak şeklinde devam edecek. Ama mesela z 4 ise z şartının altındakiler (diğer elseif e kadar) yapılacak ve program bitecek. Yazdığınızı tam anlayamadım ama iç içe şartlar da gerekebilir gibi görünüyor. Böyle bir durumda if-end yerleşimi şu şekilde olmalı:
if x==1 if y==2 %x 1 VE y 2'ye eşitse yapılacaklar elseif y==3 %x 1 ve y 3'e eşitse yapılacaklar end elseif x==2 if y==2 %x ve y 2'ye eşitse yapılacaklar elseif y==3 %x 2'ye, y 3'e eşitse yapılacaklar end end