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


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

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

#1
سلام و خسته نباشید.
خواهش میکنم کمکم کنید.برنامه پیوستی که براتون گذاشتم قسمت انتگرال گیریش جواب نمیده.حدود رو۱۰۰ گذاشتم ولی حالت کلی بینهایت رو میخوام.


فایل‌های پیوست

دانلود CUURENT.m

نام فایل CUURENT.m
نوع فایل .m
دفعات دانلود 322
اندازه 1.47 KB
ارسال کننده فایل موسوی
پاسخ

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

#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 کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

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

#3
سلام
من میخوام انتگرال دوگانه ای را محاسبه کنم که نتیجه آن به صورت پارامتری هست و عددی نیست ولی متلب پیغام خطا میده! کد برنامه خودم را در زیر قرار دادم. کسی میتونه به من کمک کنه؟
کد پی‌اچ‌پی:
CDF pdf of the power reserve costs
%اين برنامه ابتدا تابع چگالي تجمعي هزينه را محاسبه مي کند که به صورت تابعي
%با پارامتر Csr خواهد شد و سپس با مشتق گيري از آن تابع چگالي احتمال را
%محاسبه مي کند و در انتها آن را رسم مي کند.
syms c P Csr
z
=7.0092e-057*((c^44)*exp(-(c/0.2)))*exp(-((P^2)/200));
CDF=int(int(z,c,0,(Csr/P)+2.5),P,0,+inf);
Csr=-5:1:20;
PDF=diff(CDF,Csr);
plot(Csr,PDF
 
پاسخ
 سپاس شده توسط شماره مجازی امارات


پرش به انجمن:


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