کلیدستان

نسخه‌ی کامل: خطای Undefined function 'int' هنگام استفاده از دستور int در متلب (MATLAB)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
من این کد نویسی انجام دادم ولی متاسفانه هر کاری می کنم نمیتونم خطای 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' 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