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


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
انتگرال با حدود بینهایت (در متلب)

انتگرال با حدود بینهایت (در متلب)

#2
سلام.
اگر کدهاتون زیاد نیستند، نیازی به پیوست کردن m-file نیست و کافی است کدها را در ارسال قرار بدهید (با گزینه مخصوص درج کد در ادیتور).
بنده کدها را ذکر می کنم :

کد پی‌اچ‌پی:
close all
clear all
Parameters and constants for wire
N
=10; % Number of atoms long the wire
M
=10;% Number of atoms long the right-lead
L
=10;% Number of atoms long the left-lead
tw
=.75
mu1=.45;
mu2=.25;
kT=0.025;
hbar=1.06e-34;
q=1.6e-19;

Nearest-neighbor hopping energy
t_LL
=1; %  hopping energy for left-lead
t_RL
=1; %  hopping energy for right-lead
t_LW
=.25;% hopping energy for wire-leftlead
t_WR
=.25; % hopping energy for wire-rightlead
Enn
=0; % on-site energy
eta
=1i*.001;% Small imaginary number
Hamiltoni

Hw
=zeros (N,N);
Hw=(tw*diag (ones (1,N-1),1))+(tw*diag (ones (1,N-1),-1))+(Enn*diag (ones (1,N),0));
H_RL=zeros (M,M);
H_RL=(t_RL*diag (ones (1,M-1),1))+(t_RL*diag (ones (1,M-1),-1));
H_LL=zeros (L,L);
H_LL=(t_LL*diag (ones (1,L-1),1))+(t_LL*diag (ones (1,L-1),-1));
H_LW=zeros (L,N);
H_LW (1,1)=t_LW;
H_WR=zeros (N,M);
H_WR (N,N)=t_WR;

Find DOS from the trace of imaginary Green function
%
TT=[];
%
E=[];
%
II=[];
  
%for 
V=0:.1:.6

syms  E 
   z
=(E+eta)*eye (N);
   
g_R=inv ((E+eta)*eye (M)-H_RL);
   
g_L=inv ((E+eta)*eye (L)-H_LL);
   
sigma_R=H_WR*g_R*H_WR';
   sigma_L=H_LW'
*g_L*H_LW;
   
gr=inv (z-Hw-sigma_R-sigma_L);
   
f1=1./(1+exp((E-mu1)./kT))
f2=1./(1+exp((E-mu2)./kT))
DO1=i*(sigma_L-sigma_L');
DO2=i*(sigma_R-sigma_R'
);
A2=(gr*DO2*gr');
tic
T=trace(DO1*A2)


 I=int((q./hbar)*T*(f1-f2),E,-100,100)

 toc
 %EE=[EE,E];
%%II=[II,I];

%end

%%plot(EE,II);
%xlabel ('
Energy (ev)')
%%%ylabel ('
Cuurent') 

به نظر می آید عبارت مورد نظر کمی پیچیده است و دستور int نمی تواند آن را کامل حل کند (یا حداقل خیلی طول می کشد). در این موارد می توان از دستورات مربوط به حل تقریبی انتگرال ها (حل عددی) مثل quad و quadl و ... استفاده نمود. در این زمینه، به help متلب مراجعه کنید.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ


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

پرش به انجمن:


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