کلیدستان

نسخه‌ی کامل: خطا
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
 
کد پی‌اچ‌پی:
h=6.63e-14q=1.60e-19TEMP=27k=8.617e-5Efo=0.6Efi=EfoVpi=3.033pi=3.1416m=19n=0n1=m;  n2=n;
      
      
kT=(k*(TEMP+273));
      
E1=Vpi*pi/sqrt(3*(power(n1,2)+n1*n2+power(n2,2)));
      
E2=(2*E1);
       
       for  
delta_phib=0:0.1:0.9
         Vds
=0.9
         
         
Coeffj=4*q/h;
         
J1 Coeffj*kT*(log(1+exp((E1-Efi-delta_phib)/kT))-log(exp(-Vds/kT)+exp((E1-Efi-delta_phib)/kT)));
         
J2 Coeffj*kT*(log(1+exp((E2-Efi-delta_phib)/kT))-log(exp(-Vds/kT)+exp((E2-Efi-delta_phib)/kT)));  
         
Jint J1+J2;
         
syms delta_phib Vds
         g
=diff(Jint,delta_phib)

         
figure(1)
         
hold on
         plot
(delta_phib,g)
         
       
end 

سلام.خسته نباشید
من برنامه زیر را نوشتم، میخواهم از تابع مورد نظر مشتق گرفته و شکل آنرا برایم بکشد و خطای زیر را میدهد و نمیدانم مشکل چیست.لطفا بهم کمک کنید

کد پی‌اچ‌پی:
Error using plot
Conversion to double from sym is not possible
.

Error in Isub2 (line 18)
         
plot(delta_phib,g

 
سلام.
متغیر delta_phib به صورت سمبلیک تعریف شده و بنابراین نمی توانیم از آن برای دستور plot استفاده کنیم، زیرا باید مقدار داشته باشد تا مقادیر آن بر روی محور افقی نمایش داده شوند.
در ضمن، من بررسی کردم، مقدار g در تمامی گام های حلقه برابر صفر می شود و مستقل از delta_phib خواهد بود (خودتون هم چک کنید).
دستور ezplot می تواند برای رسم یک عبارت بر حسب یک متغیر و در یک بازه مشخص به کار رود :

http://www.kelidestan.com/matlab/matlab-11.php

اما برای استفاده از آن، باید g را به صورت عبارتی از  delta_phib به دست آورید (عبارت را به دستور  ezplot بدهید) و سپس بازه مقادیر  delta_phib را هم مشخص کنید (البته اگر مستقل از  delta_phib نباشد، زیرا به نظر می آید که از آن مستقل است).
 
بله دیدم که خروجی صفر است
ولی تابع به delta_phib وابسته است و نباید مشتق نسبت به آن صفر شود.چرا اینجوری می شود؟
 
شیوه مشتق گیری که مشکلی ندارد. مثلا :

کد:
clear all
close all
clc

syms delta_phib
Jint=2*delta_phib

g=diff(Jint,delta_phib)

نتیجه اجرای کد متلب بالا :

کد:
Jint =

2*delta_phib


g =

2

.
.
.

بله پیدا کردم، شما درون حلقه، به delta_phib مقدار دادین (به عنوان متغیر حلقه)، بنابراین مشتق برابر صفر می شود (مقدار در تابع جایگذاری شده و بنابراین تابع دیگر بر حسب delta_phib نیست).
 
خیییییییییییییییییییییییییییلی ممنونم
از اینکه وقت گذاشتید بسیار بسیار تشکر