function model=creatmodel() Npop=100; Nvar=8; D=unifrnd(0.0254,0.6096,[Npop,Nvar]); L=ones(1,Nvar).*1000; V=unifrnd(1.5,2.5,[Npop,Nvar]); CHW=130; Q=V.*(pi().*D.^2)./4; Hk=[Q./(0.2785.*CHW.*D.^(2.63))].^(1.851).*L; for i=1:Npop -Q(i,1)+Q(i,2)+Q(i,3)+0.028==0; -Q(i,2)+Q(i,7)+0.028==0; -Q(i,3)+Q(i,4)+Q(i,5)+0.033==0; -Q(i,4)-Q(i,7)+Q(i,8)+0.075==0; -Q(i,5)-Q(i,6)+0.092==0; -Q(i,8)+Q(i,6)+0.056==0; Hk(i,2)+Hk(i,7)-Hk(i,4)-Hk(i,3)==0; Hk(i,4)+Hk(i,8)+Hk(i,6)-Hk(i,5)==0; end model.D=D; model.L=L; model.Q=Q; model.V=V; model.Hk=Hk; end
merhaba yukarıda yazmış olduğum kod ile matlabda bir model matris oluşturmak istiyorum model oluşuyor fakat for döngüsü içindeki koşullar hiç dikkate alınmadan oluşuyor.
bunu daha başka nasıl yazabilirim.
Q ve Hk matrisinin yukarıda yazdığım koşulları sağlamasını istiyorum.
yardımcı olabilirseniz çok sevinirim. :) iyi günler
Hocam ben yanlış kodlamis olabilirim, söyle aciklim size yapmak istediğimi
100×8 lik rastgele bi D matrisi oluşturucam ama
Q ve Hk da D ye bağlı oldukları için rastgele seçilen D matrisi elemanları Q ve Hk esitliklerini de sağla sin.
Q(i,1)+Q(i,2)+Q(i,3)+0.028==0
Bu eşitlikte misal Q matrisinin her satırının
2. Ve 3. Sütünundaki elemanları topla 1. Sütünü çıkar 0.028
Ekleyince sıfır olsun diğer esitliklerde aynı şekilde
Bu eşitlikleri sağlayan D matrisi elemanları seçmek istiyorum.
Merhaba, sorunuzu biraz daha açıklayabilir misiniz?
Kodunuzun içerisinde for döngüsünden önce Q değişkeni 100×8 boyutunda double sayılar içeren bir array olarak oluşmaktadır.
for döngüsünün içerisinde,
-Q(i,1)+Q(i,2)+Q(i,3)+0.028==0;
bu satır ile eşitliğin doğru olup olmadığını kontrol edersiniz.
Örnek vererek açıklamam gerekirse;
-5+3+2+1==0;
bu kod satırı +1==0 olacağından bize boolean türünde false(0) değerini döndürürdü.
Fakat,
-5+3+2==0;
kod satırı olsaydı 0==0 olacağından bize boolean türünde true(1) değerini döndürürdü.
Temel amacım belirlenen aralıkta D matris elemanlarını olusturmak. O eşitlikleri sağlayan elemanlar olmalı. Onu
Ben çok hakim olmadığım için programa belki if le olur.
Sizin probleminiz belki birden çok bilinmeyenli denklem çözümüne uyarlanarak çözülebilir bunun için MATLAB symbolic toolbox kullanılabilir. Örnek vermem gerekirse;
x-2y+3z=7
2x+y+z=4
3x+2y-2z=-10
Bu 3 bilinmeyenli 3 denklem problemi MATLAB ile şu şekilde çözülür.
syms x y z [x,y,z]=solve(x-2*y+3*z==7,2*x+y+z==4,-3*x+2*y-2*z==-10)
Sizin sorunuz için belki şu şekilde uyarlanabilir,
-Q(i,1)+Q(i,2)+Q(i,3)+0.028==0;
Q(i,1)=x
Q(i,2)=y
Q(i,3)=z
Sorunuz matrix şeklinde olduğu için ek olarak lisans Lineer Cebir dersinin konusu olan Ax=b matrix çözümü symbolic toolbox kullanmadan MATLAB ile manuel olarak çözülebilir.