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


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خطای Undefined function 'int' هنگام استفاده از دستور int در متلب (MATLAB)

خطای Undefined function 'int' هنگام استفاده از دستور int در متلب (MATLAB)

#1
سلام
من این کد نویسی انجام دادم ولی متاسفانه هر کاری می کنم نمیتونم خطای undefined......حین ران کردن برطرف کنم.
امکانش هست یه نگاهی به کد بندازید؟
با تشکر

کد:
clc;
clear;
syms r
format short
disp('Shaft ')
disp('infinity element of shaft')    
disp('M....')
disp('inputs')
f = input(' f(x) = ');
g = input(' g(x) = ');
disp('   ')
T0 = input(' T0 = ');
L = input(' lenght = ');
disp('   ')
r2 = input(' r2 = ');
r1 = input(' r1 = ');
m = input(' number of elements = ');
eps = L/m;
r=r2-eps*(r2-r1);
J=0.5*pi*r^4
disp('   ')
E = input(' E = ');
v = input(' V = ');
G = E/2*(1-v);
eps = L/m;
T = T0*eps/G*J;
for i=1:m
   k11(i)=int(f/eps+g*eps*(1-r)^2,r,0,1);
   k12(i)=int(-f/eps+g*eps*(1-r)*r,r,0,1);
   k21(i)=k12(i);
   k22(i)=int(f/eps+g*eps*r^2,r,0,1);
   F1(i)=int(-P*eps*(1-r),r,0,1);
   F2(i)=int(-P*eps*r,r,0,1);
end



k = zeros(m+1,m+1);
F = zeros(1,m+1);
for i=1:m
   k(i,i)=k11(i);
   k(i,i+1)=k12(i);
   k(i+1,i)=k21(i);
   k(i+1,i+1)=k22(i);
   for j=1:m-1
       k(j+1,j+1)=k22(j)+k11(j+1);
   end
end


for i=1:m
   F(1,i)=F1(i);
   F(1,m+1)=F2(m);
   for j=1:m-1
       F(1,j+1)=F2(j)+F1(j+1);
   end
end


DD = k(2:m,2:m);
RR = F';
SS=k(2:m);

FF=F(2:m);
NN=FF';

UU=DD\FF';

disp('* answer *')


u=[0;UU;0];
i=0:eps:L;
disp('      x         y')
disp('  ___________________')
disp([i' u])
پاسخ

خطای Undefined function 'int' هنگام استفاده از دستور int در متلب (MATLAB)

#2
سلام.
کد شما خطای زیر را ایجاد می کند :

کد:
Undefined function 'int' for input arguments of type 'double'.

Error in Untitled5 (line 28)
  k11(i)=int(f/eps+g*eps*(1-r)^2,r,0,1);


این خطا زمانی ایجاد می شود که تنها یک عدد به ورودی دستور int داده شود، مثل کد زیر :

کد:
int(2)

یا مثلا کد زیر :

کد:
int(4,0,1)

در واقع وقتی تنها یک عدد در انتگرال قرار می گیرد (دستور int برای انتگرال گیری است)، ورودی را به جای symbolic ، از نوع double تشخیص می دهد و خطا می گیرد، پس باید عدد را به نوع symbolic تبدیل کنیم (با دستور sym) :

کد:
int(sym(4),0,1)

کد متلب بالا به درستی اجرا می شود.
بنابراین شما هم از دستور sym به همین شکل در پرانتز دستور int استفاده نمایید.

برای سایر دوستان تذکر می دهم که برای آشنایی با دستور int ، کلید شماره 42 را بخوانند.

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


پرش به انجمن:


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