کلیدستان

نسخه‌ی کامل: خطای Not enough input arguments
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان
من برای حل 12 تا معادله دیفرانسیل مرتبه 1 معمولی یک تابع نوشتم ،چندین بار هم تمام روابط را چک کردم منتها هر بارهمین اررور  را می دهد،از دوستان کسی می دونه مشکل از کدوم قسمتش می باشد؟ خیلی ممنون

function df = deriv(t,f,u)

T10=300;   T20=300;   F10=5;  F20=10;   Fr=1.9;    Fp=0;   F1=4.99;% selected by myself
CA10=4;    CA20=3;    V1=1;      V2=0.5;    V3=1;          F2=9.99;% selected by myself
E1=5*10^4;            E2=5.5*10^4;    K1=3*10^6;            K2=3*10^6;
deltaH1=-5*10^4;      deltaH2=-5.3*10^4;     Hvap=5;    CP=0.231;  R=8.314;    ROO=1000;
alphaA=2;  alphaB=1;  alphaC=1.5; alphaD=3;  MWA=50;    MWB=50;    MWC=50;     MWD=18;
Q1=3*10^5; Q2=3*10^5; Q3=3*10^5; 

XD=1-((MWA*f(10))/ROO)-((MWB*f(11))/ROO)-((MWC*f(12))/ROO);
K=((alphaA*f(10))*MWA/ROO)+((alphaB*f(11))*MWB/ROO)+((alphaC*f(12))*MWC/ROO)+(alphaD*XD*ROO);
CAr=(alphaA*f(10))/K;
CBr=(alphaB*f(11))/K;
CCr=(alphaC*f(12))/K;
Frm=(Fr/MWD)*(((ROO-f(10)*MWA-f(11)*MWB-f(12)*MWC)+(f(10)+f(11)+f(12))*MWD));

df = zeros (12,1);
df(1,1) = (F10/V1)*(T10-f(1))+(Fr/V1)*(f(9)-f(1))-(deltaH1/(ROO*CP))*K1*((exp(-E1/(R*f(1)))*f(2)))-((deltaH2/(ROO*CP))*K2*(exp(-E2/(R*f(1)))*f(2)))+(Q1/(ROO*CP*V1));
df(2,1) = (F10/V1)*(CA10-f(2))+(Fr/V1)*(CAr-f(2))-(K1*(exp(-E1/R*f(1)))*f(2))- K2*(exp(-E2/(R*f(1)))*f(2));
df(3,1) = (-F10/V1)*f(3)+(Fr/V1)*(CBr-f(3))+(K1*exp(-E1/(R*f(1)))*f(2));
df(4,1) = (-F10/V1)*f(4)+(Fr/V1)*(CCr-f(4))+(K2*exp(-E2/(R*f(1)))*f(2));
df(5,1) = (F1/V2)*(f(1)-f(5))+(F20/V2)*(T20-f(5))+((-deltaH1/(ROO*CP))*K1*(exp(-E1/R*f(5)))*f(6))+((-deltaH2/(ROO*CP))*K2*(exp(-E2/(R*f(5)))*f(6)))+(Q2/(ROO*CP*V2));
df(6,1) = (F1/V2)*(f(2)-f(6))+(F20/V2)*(CA20-f(6))-(K1*(exp(-E1/(R*f(5)))*f(6))-K2*(exp(-E2/R*f(5)))*f(6));
df(7,1) = (F1/V2)*(f(3)-f(7))-((F20/V2)*f(7))+(K1*exp(-E1/(R*f(5)))*f(6));
df(8,1) = (F1/V2)*(f(4)-f(8))-((F20/V2)*f(8))+(K2*(exp(-E2/R*f(5)))*f(6));
df(9,1) = (F2/V3)*(f(5)-f(9))-((Hvap*Frm)/(ROO*CP*V3))+(Q3/(ROO*CP*V3));
df(10,1) = (F2/V3)*(f(6)-f(10))-(Fr/V3)*(CAr-f(10));
df(11,1) = (F2/V3)*(f(7)-f(11))-(Fr/V3)*(CBr-f(11));
df(12,1) = (F2/V3)*(f(8)-f(12))-(Fr/V3)*(CCr-f(12));
end
(۱۳۹۴/۱۲/۱۲, ۱۱:۴۸ ق.ظ)صفیان نوشته: [ -> ]سلام دوستان
من برای حل 12 تا معادله دیفرانسیل مرتبه 1 معمولی یک تابع نوشتم ،چندین بار هم تمام روابط را چک کردم منتها هر بارهمین اررور  را می دهد،از دوستان کسی می دونه مشکل از کدوم قسمتش می باشد؟ خیلی ممنون

function df = deriv(t,f,u)

T10=300;   T20=300;   F10=5;  F20=10;   Fr=1.9;    Fp=0;   F1=4.99;% selected by myself
CA10=4;    CA20=3;    V1=1;      V2=0.5;    V3=1;          F2=9.99;% selected by myself
E1=5*10^4;            E2=5.5*10^4;    K1=3*10^6;            K2=3*10^6;
deltaH1=-5*10^4;      deltaH2=-5.3*10^4;     Hvap=5;    CP=0.231;  R=8.314;    ROO=1000;
alphaA=2;  alphaB=1;  alphaC=1.5; alphaD=3;  MWA=50;    MWB=50;    MWC=50;     MWD=18;
Q1=3*10^5; Q2=3*10^5; Q3=3*10^5; 

XD=1-((MWA*f(10))/ROO)-((MWB*f(11))/ROO)-((MWC*f(12))/ROO);
K=((alphaA*f(10))*MWA/ROO)+((alphaB*f(11))*MWB/ROO)+((alphaC*f(12))*MWC/ROO)+(alphaD*XD*ROO);
CAr=(alphaA*f(10))/K;
CBr=(alphaB*f(11))/K;
CCr=(alphaC*f(12))/K;
Frm=(Fr/MWD)*(((ROO-f(10)*MWA-f(11)*MWB-f(12)*MWC)+(f(10)+f(11)+f(12))*MWD));

df = zeros (12,1);
df(1,1) = (F10/V1)*(T10-f(1))+(Fr/V1)*(f(9)-f(1))-(deltaH1/(ROO*CP))*K1*((exp(-E1/(R*f(1)))*f(2)))-((deltaH2/(ROO*CP))*K2*(exp(-E2/(R*f(1)))*f(2)))+(Q1/(ROO*CP*V1));
df(2,1) = (F10/V1)*(CA10-f(2))+(Fr/V1)*(CAr-f(2))-(K1*(exp(-E1/R*f(1)))*f(2))- K2*(exp(-E2/(R*f(1)))*f(2));
df(3,1) = (-F10/V1)*f(3)+(Fr/V1)*(CBr-f(3))+(K1*exp(-E1/(R*f(1)))*f(2));
df(4,1) = (-F10/V1)*f(4)+(Fr/V1)*(CCr-f(4))+(K2*exp(-E2/(R*f(1)))*f(2));
df(5,1) = (F1/V2)*(f(1)-f(5))+(F20/V2)*(T20-f(5))+((-deltaH1/(ROO*CP))*K1*(exp(-E1/R*f(5)))*f(6))+((-deltaH2/(ROO*CP))*K2*(exp(-E2/(R*f(5)))*f(6)))+(Q2/(ROO*CP*V2));
df(6,1) = (F1/V2)*(f(2)-f(6))+(F20/V2)*(CA20-f(6))-(K1*(exp(-E1/(R*f(5)))*f(6))-K2*(exp(-E2/R*f(5)))*f(6));
df(7,1) = (F1/V2)*(f(3)-f(7))-((F20/V2)*f(7))+(K1*exp(-E1/(R*f(5)))*f(6));
df(8,1) = (F1/V2)*(f(4)-f(8))-((F20/V2)*f(8))+(K2*(exp(-E2/R*f(5)))*f(6));
df(9,1) = (F2/V3)*(f(5)-f(9))-((Hvap*Frm)/(ROO*CP*V3))+(Q3/(ROO*CP*V3));
df(10,1) = (F2/V3)*(f(6)-f(10))-(Fr/V3)*(CAr-f(10));
df(11,1) = (F2/V3)*(f(7)-f(11))-(Fr/V3)*(CBr-f(11));
df(12,1) = (F2/V3)*(f(8)-f(12))-(Fr/V3)*(CCr-f(12));
end
سلام
دوست عزیز شما در داده ها f را تعریف نکردید بعد در قسمت xd استفاده کردید. به همین علت این اخطار رو بهتون میده با تعیین مقدار برای f مشکل حل میشه. پیشنهاد می کنم ابتدای هر برنامه دستور clear all,clc رو قرار بدید و کمی مرتب بنویسید تا به راحتی مشکل برنامه رو پیدا کنید.
موفق باشید
کد پی‌اچ‌پی:
function df gghghhggh(~,f,~)
T10=300  T20=300  F10=5 F20=10  Fr=1.9   Fp=0  F1=4.99;% selected by myself
CA10
=4   CA20=3   V1=1     V2=0.5   V3=1         F2=9.99;% selected by myself
E1
=5*10^4           E2=5.5*10^4   K1=3*10^6           K2=3*10^6;
deltaH1=-5*10^4     deltaH2=-5.3*10^4    Hvap=5   CP=0.231 R=8.314   ROO=1000;
alphaA=2 alphaB=1 alphaC=1.5alphaD=3 MWA=50   MWB=50   MWC=50    MWD=18;
Q1=3*10^5Q2=3*10^5Q3=3*10^5;f(10)=1;f(11)=2;f(12)=1

XD=1-((MWA*f(10))/ROO)-((MWB*f(11))/ROO)-((MWC*f(12))/ROO);
K=((alphaA*f(10))*MWA/ROO)+((alphaB*f(11))*MWB/ROO)+((alphaC*f(12))*MWC/ROO)+(alphaD*XD*ROO);
CAr=(alphaA*f(10))/K;
CBr=(alphaB*f(11))/K;
CCr=(alphaC*f(12))/K;
Frm=(Fr/MWD)*(((ROO-f(10)*MWA-f(11)*MWB-f(12)*MWC)+(f(10)+f(11)+f(12))*MWD));

df zeros (12,1);
df(1,1) = (F10/V1)*(T10-f(1))+(Fr/V1)*(f(9)-f(1))-(deltaH1/(ROO*CP))*K1*((exp(-E1/(R*f(1)))*f(2)))-((deltaH2/(ROO*CP))*K2*(exp(-E2/(R*f(1)))*f(2)))+(Q1/(ROO*CP*V1));
df(2,1) = (F10/V1)*(CA10-f(2))+(Fr/V1)*(CAr-f(2))-(K1*(exp(-E1/R*f(1)))*f(2))- K2*(exp(-E2/(R*f(1)))*f(2));
df(3,1) = (-F10/V1)*f(3)+(Fr/V1)*(CBr-f(3))+(K1*exp(-E1/(R*f(1)))*f(2));
df(4,1) = (-F10/V1)*f(4)+(Fr/V1)*(CCr-f(4))+(K2*exp(-E2/(R*f(1)))*f(2));
df(5,1) = (F1/V2)*(f(1)-f(5))+(F20/V2)*(T20-f(5))+((-deltaH1/(ROO*CP))*K1*(exp(-E1/R*f(5)))*f(6))+((-deltaH2/(ROO*CP))*K2*(exp(-E2/(R*f(5)))*f(6)))+(Q2/(ROO*CP*V2));
df(6,1) = (F1/V2)*(f(2)-f(6))+(F20/V2)*(CA20-f(6))-(K1*(exp(-E1/(R*f(5)))*f(6))-K2*(exp(-E2/R*f(5)))*f(6));
df(7,1) = (F1/V2)*(f(3)-f(7))-((F20/V2)*f(7))+(K1*exp(-E1/(R*f(5)))*f(6));
df(8,1) = (F1/V2)*(f(4)-f(8))-((F20/V2)*f(8))+(K2*(exp(-E2/R*f(5)))*f(6));
df(9,1) = (F2/V3)*(f(5)-f(9))-((Hvap*Frm)/(ROO*CP*V3))+(Q3/(ROO*CP*V3));
df(10,1) = (F2/V3)*(f(6)-f(10))-(Fr/V3)*(CAr-f(10));
df(11,1) = (F2/V3)*(f(7)-f(11))-(Fr/V3)*(CBr-f(11));
df(12,1) = (F2/V3)*(f(8)-f(12))-(Fr/V3)*(CCr-f(12));
end 
سلام
خیلی ممنون از وقتی که گذاشتید و راهنمایی فرمودید،منتها نمیدونم مقادیر f(10)=1;f(11)=2;f(12)=1; را بر چه اساسی این مقادیر قرار دادید،چون مقادیر (f(10);f(11);f(12 می بایستی از حل معادلات 10 و 11 و 12 بدست بیابد،و مشکل بعدی ایجاد شده این بود که حتی با قرار دادن همین مقادیری که شما فرمودید و اجرای دستور ode45 به صورت ([f]=ode45(@deriv,[-18 18],[370;3.32;0.17;0.04;435;2.75;0.45;0.11;435;2.88;0.50;0.12,~] خطای Maximum recursion limit of 500 reached اتفاق می افتد که نمیدونم چطور برطرفش کنم... Sad
(۱۳۹۴/۱۲/۱۴, ۰۱:۳۴ ب.ظ)صفیان نوشته: [ -> ]سلام
خیلی ممنون از وقتی که گذاشتید و راهنمایی فرمودید،منتها نمیدونم مقادیر f(10)=1;f(11)=2;f(12)=1; را بر چه اساسی این مقادیر قرار دادید،چون مقادیر (f(10);f(11);f(12 می بایستی از حل معادلات 10 و 11 و 12 بدست بیابد،و مشکل بعدی ایجاد شده این بود که حتی با قرار دادن همین مقادیری که شما فرمودید و اجرای دستور ode45 به صورت  ([f]=ode45(@deriv,[-18 18],[370;3.32;0.17;0.04;435;2.75;0.45;0.11;435;2.88;0.50;0.12,~] خطای  Maximum recursion limit of 500 reached اتفاق می افتد که نمیدونم چطور برطرفش کنم... Sad

سلام 
خواهش می کنم
اون مقادیر  فرضی هستند یعنی یک عدد گذاشتم تا ایرادش رفع بشه.لطفا فایل برنامه ایی که نوشتید رو ارسال کنید. چیزی که اینجا هست متاسفانه بهم ریختس.
موفق باشید