انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خطا در کد متلب

خطا در کد متلب

#1
سلام دوستان عزیز
سوال والبته مشکلی دارم
چند مدتی هست که درگیر یک برنامه متلب هستم
دائما با 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
 
پاسخ


پیام‌های این موضوع
خطا در کد متلب - توسط par_sed - ۱۳۹۲/۰۷/۱۱, ۱۲:۰۱ ب.ظ
RE: خطا در کد متلب - توسط admin - ۱۳۹۲/۰۷/۱۲, ۱۱:۳۸ ق.ظ
RE: خطا در کد متلب - توسط par_sed - ۱۳۹۲/۰۷/۱۴, ۱۱:۴۶ ب.ظ
RE: خطا در کد متلب - توسط admin - ۱۳۹۲/۰۷/۱۵, ۰۶:۲۵ ق.ظ
RE: خطا در کد متلب - توسط par_sed - ۱۳۹۲/۰۷/۱۵, ۰۵:۰۵ ب.ظ
RE: خطا در کد متلب - توسط par_sed - ۱۳۹۲/۰۷/۱۵, ۰۵:۳۰ ب.ظ
RE: خطا در کد متلب - توسط admin - ۱۳۹۲/۰۷/۱۵, ۱۱:۵۸ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان