سلام دوستان عزیز
سوال والبته مشکلی دارم
چند مدتی هست که درگیر یک برنامه متلب هستم
دائما با error روبرو میشوم، و هر تلاشی کردم نتوانستم در رفعشان موفق شوم!
خواهش میکنم دوستان عزیز بهم کمک کنید
قسمتی از برنامه ام را که نتوانستن اجرا کنم اینجا میگذارم
باتشکر
سوال والبته مشکلی دارم
چند مدتی هست که درگیر یک برنامه متلب هستم
دائما با error روبرو میشوم، و هر تلاشی کردم نتوانستم در رفعشان موفق شوم!
خواهش میکنم دوستان عزیز بهم کمک کنید
قسمتی از برنامه ام را که نتوانستن اجرا کنم اینجا میگذارم
باتشکر
کد:
a0=1.42;
a1=3/2*a0*px+sqrt(3)/2*a0*py;
a2=3/2*a0*px-sqrt(3)/2*a0*py;
h=6.58479278e-16;
kp=k0*exp(-1*(a1*0+a2*0)*i)+k1*exp(-1*(a1*-1+a2*0)*i)+k2*exp(-1*(a1*0+a2*-1)*i)+k3*exp(-1*(a1*1+a2*-1)*i)+k4*exp(-1*(a1*1+a2*0)*i)+k5*exp(-1*(a1*0+a2*1)*i)+k6*exp(-1*(a1*-1+a2*1)*i)+k7*exp(-1*(a1*-1+a2*-1)*i)+k8*exp(-1*(a1*0+a2*-2)*i)+k9*exp(-1*(a1*1+a2*-2)*i)+k10*exp(-1*(a1*-2+a2*1)*i)+k11*exp(-1*(a1*-2+a2*0)*i)+k12*exp(-1*(a1*1+a2*1)*i)+k13*exp(-1*(a1*0+a2*2)*i)
+k14*exp(-1*(a1*-1+a2*2)*i)+k15*exp(-1*(a1*2+a2*-1)*i)+k16*exp(-1*(a1*2+a2*0)*i);
avo=6.0221415e23;
mass=-12/avo;
v=3.00e10;
M=[mass 0 0 0 0 0
0 mass 0 0 0 0
0 0 mass 0 0 0
0 0 0 mass 0 0
0 0 0 0 mass 0
0 0 0 0 0 mass];
d=gcd(n,m);
if mod((n-m),3*d)==0;
dr=3*d;
else
dr=d;
end
a=sqrt(3)*a0;
l=a*sqrt(n^2+m^2+n*m);
dt=1/pi;
rt=dt/2;
t1=(2*m+n)/dr;
t2=-(m+2*n)/dr;
T=sqrt(3)*1/dr;
nn=2*(n^2+m^2+n*m)/dr;
b1x=2*pi/(sqrt(3)*a);
b1y=2*pi/a;
b2x=2*pi/(sqrt(3)*a);
b2y=-2*pi/a;
q1x=1/nn*(-t2*b1x+t1*b2x);
q1y=1/nn*(-t2*b1y+t1*b2y);
q2x=1/nn*(m*b1x-n*b2x);
q2y=1/nn*(m*b1y-n*b2y);
Q2=sqrt(q2x^2+q2y^2);
refine=500;
counter=0;
qmin=0;
qmax=pi/T;
qgrid=(qmax-qmin)/(refine-1);
for jj=1:refine;
q=qmin+qgrid*(jj-1);
wavevec(jj,1)=q;
w1(jj,1)=q;
eigv1(jj,1)=q;
w2(jj,1)=q;
eigv2(jj,1)=q;
w3(jj,1)=q
eigv3(jj,1)=q;
w4(jj,1)=q
eigv4(jj,1)=q;
w5(jj,1)=q;
eigv5(jj,1)=q;
w6(jj,1)=q
eigv6(jj,1)=q;
end
for ii=0:(nn/2);
for jj=1:refine
q=qmin+qgrid*(jj-1);
qx=q/Q2*q2x+ii*q1x;
qy=q/Q2*q2y+ii*q1y;
kmmm=subs(kp,px,qx);
K=subs(kmmm,py,qy);
[v,w]=eig(K,M);
for mm=1:5
for mmm=(mm+1):6
if abs(w(mm,mm)) > abs(w(mmm,mmm))
swap=w(mm,mm);
w(mm,mm)=w(mmm,mmm);
w(mmm,mmm)=swap;
for xxx=1:6
swapv(xxx)=eigv(xxx,mm);
eigv(xxx,mm)=eigv(xxx,mmm);
eigv(xxx,mmm)=swapv(xxx);
end
end
end
end
for mm=1:6
sum=0;
for mmm=1:6
sum=sum+(abs(eigv(mmm,mm)))^2;
end
sum=sqrt(sum);
for mmm=1:6
eigv(mmm,mm)=eigv(mmm,mm)/sum;
end
end
w1(jj,(ii+2))=real(sqrt(w(1,1)))*h;
for mm=1:6
eigv1(jj,ii*6+mm+1)=abs(eigv(mm,1));
end
w2(jj,(ii+2))=real(sqrt(w(2,2)))*h;
for mm=1:6
eigv2(jj,ii*6+mm+1)=abs(eigv(mm,2));
end
w3(jj,(ii+2))=real(sqrt(w(3,3)))*h;
for mm=1:6
eigv3(jj,ii*6+mm+1)=abs(eigv(mm,3));
end
w4(jj,(ii+2))=real(sqrt(w(4,4)))*h;
for mm=1:6
eigv4(jj,ii*6+mm+1)=abs(eigv(mm,4));
end
w5(jj,(ii+2))=real(sqrt(w(5,5)))*h;
for mm=1:6;
eigv5(jj,ii*6+mm+1)=abs(eigv(mm,5));
end
w6(jj,(ii+2))=real(sqrt(w(6,6)))*h;
for mm=1:6
eigv6(jj,ii*6+mm+1)=abs(eigv(mm,6));
end
counter=counter+1;
percent=counter/(refine*(nn/2+1));
end
end