Soru sormatris yontemiyle kafes cozen bi-program
hikmet.541 tarafından 6 yıl önce soruldu

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);
5 Cevap
sayginer Yönetici tarafından 6 yıl önce cevaplandı

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.

hikmet.541 tarafından 6 yıl önce cevaplandı

end lerin hepsini en sona attım onla alakalı bir sorun olmuş olamaz demi örnekteki yapıda bir sorun var mı ???

hakkans Yönetici tarafından 6 yıl önce cevaplandı

Ö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.

hikmet.541 tarafından 6 yıl önce cevaplandı

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 ??

hakkans Yönetici tarafından 6 yıl önce cevaplandı

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