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


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

خطا

#1
 
کد پی‌اچ‌پی:
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

 
پاسخ

خطا

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

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

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

خطا

#3
بله دیدم که خروجی صفر است
ولی تابع به delta_phib وابسته است و نباید مشتق نسبت به آن صفر شود.چرا اینجوری می شود؟
 
پاسخ

خطا

#4
شیوه مشتق گیری که مشکلی ندارد. مثلا :

کد:
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 نیست).
 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

خطا

#5
خیییییییییییییییییییییییییییلی ممنونم
از اینکه وقت گذاشتید بسیار بسیار تشکر
پاسخ
 سپاس شده توسط admin ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


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