سئوالات و مشکلات در متلب (MATLAB)

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
بله متوجه شدم منظورتون این بود تابع رو اینلاین تعریف نکنم، همینکارو کردم ، منتها تو پست قبلی خواستم همه شو یجا بیارم. فایل تابع رو جدا تعریف کردم و دستخط هم منظورتون اینه دیگه:
کد:
clc;
clear;
close all;
startval=[0.15 0.09 0.19 0.03 0.02 0];
   
      [t,y]=ode15s(@fb1,0.2:0.1:0.8,startval);


 
plot(t,y(:,4))

به هر حال بازم ممنونم که وقت گذاشتید

بله؛ دقیقاً
 

irpersian20

عضو جدید
با درود
دوستان من یک تابع نوشتم. خوب ذخیره ام کردم.
حالا برای اجرا اون رو نمی شناسه. . دستور path مسیری که فایل میشه خوندش و نوشت رو میدونم و دستور pwd که از اونجا توابع و فایل ها رو فراخوانی میکنه. درسته؟
حالا این تابع ذخیره میکنم اما نمیتونه پیداش کنه مگر اینکه RUN رو ببزنم و خودش بگه بیا تغیر فولدر بده یا Add کن و من تائید کنم.
نمیدونم روند کار چجوریه..
چون من باید بروم با دستور cd درون یک فولدر ی از سیتسم و چند تا عکس رو بخونم بعدش به عنوان پارامتر پاس بدم به تابع.
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
با درود
دوستان من یک تابع نوشتم. خوب ذخیره ام کردم.
حالا برای اجرا اون رو نمی شناسه. . دستور path مسیری که فایل میشه خوندش و نوشت رو میدونم و دستور pwd که از اونجا توابع و فایل ها رو فراخوانی میکنه. درسته؟
حالا این تابع ذخیره میکنم اما نمیتونه پیداش کنه مگر اینکه RUN رو ببزنم و خودش بگه بیا تغیر فولدر بده یا Add کن و من تائید کنم.
نمیدونم روند کار چجوریه..
چون من باید بروم با دستور cd درون یک فولدر ی از سیتسم و چند تا عکس رو بخونم بعدش به عنوان پارامتر پاس بدم به تابع.

دو راه بیشتر ندارید؛ یا باید تابع مورد نظر در پوشه جاری باشه، یا باید آدرس اون پوشه رو (با استفاده از set path یا add path یا pathdef) به مسیرهای متلب اضافه کنید.
 

irpersian20

عضو جدید
با درود
ببخشید این دو تا خروجی شون فرق نداره ، پس چرا نقطه به نقطه حساب کرده؟
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
با درود
ببخشید این دو تا خروجی شون فرق نداره ، پس چرا نقطه به نقطه حساب کرده؟

احتمالاً ناوارد بوده.
دومی ضرب و تقسیم اسکالر با برداره؛ واضحه که نیازی به عملیات درایه به درایه نیست. کسی که مسلط به متلب باشه، دومی رو به کار نمی بره.
 

irpersian20

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

vr3c_vr.jpg9wtm_moshkela.jpg
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام
دوستان این ارور به خاطر عدم تناسب سایز هست؟
ولی نباید مشکلی باشه. من از یک قسمت از یک ماتریس دیگه خواستم سطر و ستون رو بکشم بیرون

مشاهده پیوست 256265مشاهده پیوست 256266

برای اینکه از متلب خواستید یک بردار سطری 165درایه ای رو به عنوان سطر اول، و یک بردار سطری 235درایه ای رو به عنوان سطر دوم در ماتریس B بریزه؛ روشنه که همچین کاری غیر ممکنه.
 

irpersian20

عضو جدید
برای اینکه از متلب خواستید یک بردار سطری 165درایه ای رو به عنوان سطر اول، و یک بردار سطری 235درایه ای رو به عنوان سطر دوم در ماتریس B بریزه؛ روشنه که همچین کاری غیر ممکنه.

راستش تازه فهمیدم. من اشتباه می نویسم کد رو کاملا.
ببخشید من در اصل میخواهم یک ماتریس 165 سطری و 235 ستونی داشته باشم. بدون حلقه for ممکن هست؟
 

Hadie89

عضو جدید
سلام

دوستان مثلا یک حلقه for داریم که در هر استپ یه ماتریسی رو حساب میکنه حالا اگه ما بخایم در هر استپ درایه اخر اون ماتریس رو ی جا دخیره کنیم چجوری باید بگیم به متلب؟ مثلا اینطوری که نمیشه:
کد:
for i=1:10;
[z,y]=ode45(@nwm2,[0 zmax],y0(i));
CH4(i)=y(:,1)+y(:,4);
CH4f(i)=0.5*CH4(i);
[COLOR=#ff0000]CH4ff(i)=CH4(i)(end,end);[/COLOR]
end
 
آخرین ویرایش:

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام

دوستان مثلا یک حلقه for داریم که در هر استپ یه ماتریسی رو حساب میکنه حالا اگه ما بخایم در هر استپ درایه اخر اون ماتریس رو ی جا دخیره کنیم چجوری باید بگیم به متلب؟ مثلا اینطوری که نمیشه:
کد:
for i=1:10;
[z,y]=ode45(@nwm2,[0 zmax],y0(i));
CH4(i)=y(:,1)+y(:,4);
CH4f(i)=0.5*CH4(i);
[COLOR=#ff0000]CH4ff(i)=CH4(i)(end,end);[/COLOR]
end

اون خط قرمز رو می تونید به صورت زیر اصلاح کنید.
کد:
CH4ff(i)=CH4(end);



خطوط 3 و 4 هم منطقاً باید غلط باشند!
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
راستش تازه فهمیدم. من اشتباه می نویسم کد رو کاملا.
ببخشید من در اصل میخواهم یک ماتریس 165 سطری و 235 ستونی داشته باشم. بدون حلقه for ممکن هست؟

کد:
B = A(82:246, 117:351);
 
آخرین ویرایش:

Hadie89

عضو جدید
اون خط قرمز رو می تونید به صورت زیر اصلاح کنید.
کد:
CH4ff(i)=CH4(end);



خطوط 3 و 4 هم منطقاً باید غلط باشند!
خیلی ممنون از پاسخگوییتون
بله خط 3و4 رو باید ب صورت ارایه سلولی ذخیره کنم تا بتونم ماتریس تولید شده رو در هر لوپ ذخیره کنم
 

Hadie89

عضو جدید
سلام
من میخوام 4 تا ODE رو با ODE45 حل کنم بین بازه 0تا 1 منتها میخام اینو ب ده قسمت تقسیم کنم و بیام محاسبات رو برای این ده قسمت تکرار کنم یعنی یبار بین 0 تا 0.1 ، یبار بین 0.1 تا 0.2 و الی اخر، چون میخام مثلا y اخری که در 0.1 بدست میارم شرط اولیه قسمت بعدیم باشه همچنین tspan هم باید تغییر کنه، خب پس یعنی باید از حلقه استفاد ه کنیم حالا من یه همچین کدی نوشتم
کد:
% main1


clc;
clear;
close all;


CH4=cell(1,10);
a=cell(1,10);
aa=cell(1,10);


for i=1:9
    A={[0 0.1],[0.1 0.2],[0.2 0.3],[0.3 0.4], [0.4 0.5],[0.5 0.6],[0.6 0.7],[0.7 0.8],[0.8 0.9],[0.9 1]};
aa{1,1}=[0.15 0 0 0.15 0 0];
[z,y]=ode45(@nwm2,A{1,i},aa{1,i});


CH4{i}=y(:,1)+y(:,4);


a{i}=0.5*CH4{i}(end,end);


aa{i+1}=[a(1,i) 0 0 a(1,i) 0 0];
end

من نمیدونم y , z هر استپ رو چطور ذخیره کنم که بعد خاستم خروجی بگیرم بتونم. مشکل بعدیم اینه که تا وقتی startval یا همون initial condition هارو ثابت میگگیرم ران میشه برنامه یعنی از تی اسپنم هم ایراد نمیگیره اما تا اونو تغیییر میدم با پیغام خطای زیر مواجه می شوم:

Undefined function 'minus' for input arguments of type 'cell'.​
من میدونم که این مشکل بخاطر اینه که aa ای که من تعریف میکنم این شکلیه مثلا بعد یکبار محاسبه:
کد:
aa{1,2}


ans = 


    [0.148236699326172]    [0]    [0]    [0.148236699326172]    [0]    [0]
یعدش اونجا که میخام بزارمش تو startval اودی ای 45 چون بصورت cell هستش قبول نمیکنه، چکار کنم تا این ب ماتریس تبدیل شه ضمن اینکه تو حلقه هم هست؟ میدونم دستور cell2mat برای اینکار هستش اما اینجا چطوری استفادش کنم
میشه راهنماییم کنید؟
در ضمن اگرم کلا برای اون هدفی که اولش گفتم همچین فکر و راه حلی اشتباهه یا پیشنهاد بهتری دارید بهم بگید ممنون میشم
 
آخرین ویرایش:

Hadie89

عضو جدید
ببخشید من مشکل قبل رو بصورت زیر اصلاح کردم :
کد:
for i=1:9
    A={[0 0.1],[0.1 0.2],[0.2 0.3],[0.3 0.4], [0.4 0.5],[0.5 0.6],[0.6 0.7],[0.7 0.8],[0.8 0.9],[0.9 1]};
aa{1,1}={0.15 0 0 0.15 0 0};
c=cell2mat(aa{1,i});
[z,y]=ode45(@nwm2,A{1,i},c);


CH4{i}=y(:,1)+y(:,4);


a{i}=0.5*CH4{i}(end,end);


aa{1,i+1}=[a(1,i) 0 0 a(1,i) 0 0];
end
الان سوالم اینه اون c تعریف کردم، چطوری مطمعن شم تو هر لوپ تغیییر میکنه؟
بازم احساس میکنم خیلی سخت حل کردم اگه پیشنهاد ساده تری دارید بگید
 

irpersian20

عضو جدید
سلام
دوستان من در مسیری هستم و حالا میخواهم هر چه در اون شاخه هست با یک کامند ، برام لیست بشهو چه دستوری هست؟
یعنی مثلا در فولدر ، عکس ها هستم و با دستور میخواهم لیست فایل های موجود در ان فولدر نمایش داده شود با احترام
 

آوای علم

مدیر تالار مشاوره
مدیر تالار
سلام
خدمت دوستان

من در برنامه نویسی متلب تازه وارد هستم اینها طبق فهمیده های خودم نوشتم میشه اگر ایرادی داره بگید
منظورم از برنامه 9 عدد بگیره بعد برای هر عدد فرمول های f,c,z,s,b را حساب کند حلقه دوم یک سیگما هست که از 1 تا بی نهایت بخاطر همین براش شرط نذاشتم و اینکه به ازای اعداد فرد بخاطر همین شمارنده 2 تایی کردم
برای هر عدد zچاپ کنه
منظورم از h(k) هر کدوم از این 9 عدد در ماتریس هست
قسمت اول فرمولz رادیکال هست که بصورت توان نوشتم چون متلب سیستمم باز نمیشه ...میشه برام درستش کنید....



PHP:
h=[.25 .275 .3;.325 .35 .375;.4 .425 .45;.475 .5 .525]

for(k=1;k<10;k++)
{

for(n=1;n=n+2)
{
s=4*sin(n*pi*(h(k))/2)*sinh(n*pi/400);
f=(n*pi)^2*2.55*cosh(n*pi/200);
b=s/f;
}
c=(h(k))/b;

z=(2.55)^(1/2)/(3*(10^8)*c);

disp(z)

}
این همین کد بالا هست اما حلقه دوم با یک تابع دیگه نوشتم فقط شرط اعداد فرد نداره
کدوم درست تر ؟
اگر دومی بهتره چه طوری شرط فرد براش بذارم
PHP:
h=[.25 .275 .3;.325 .35 .375;.4 .425 .45;.475 .5 .525]

for(k=1;k<10;k++)
{

syms n
b=symsum((4*sin(n*pi*(h(k))/2)*sinh(n*pi/400))/(((n*pi)^2)*2.55*8.85*(10^(-12))*cosh(n*pi/200)),1,Inf);
c=(h(k))/b;

z=(2.55)^(1/2)/(3*(10^8)*c);

disp(z)

}

 
آخرین ویرایش:

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام
من میخوام 4 تا ODE رو با ODE45 حل کنم بین بازه 0تا 1 منتها میخام اینو ب ده قسمت تقسیم کنم و بیام محاسبات رو برای این ده قسمت تکرار کنم یعنی یبار بین 0 تا 0.1 ، یبار بین 0.1 تا 0.2 و الی اخر، چون میخام مثلا y اخری که در 0.1 بدست میارم شرط اولیه قسمت بعدیم باشه همچنین tspan هم باید تغییر کنه، خب پس یعنی باید از حلقه استفاد ه کنیم حالا من یه همچین کدی نوشتم
کد:
% main1


clc;
clear;
close all;


CH4=cell(1,10);
a=cell(1,10);
aa=cell(1,10);


for i=1:9
    A={[0 0.1],[0.1 0.2],[0.2 0.3],[0.3 0.4], [0.4 0.5],[0.5 0.6],[0.6 0.7],[0.7 0.8],[0.8 0.9],[0.9 1]};
aa{1,1}=[0.15 0 0 0.15 0 0];
[z,y]=ode45(@nwm2,A{1,i},aa{1,i});


CH4{i}=y(:,1)+y(:,4);


a{i}=0.5*CH4{i}(end,end);


aa{i+1}=[a(1,i) 0 0 a(1,i) 0 0];
end

من نمیدونم y , z هر استپ رو چطور ذخیره کنم که بعد خاستم خروجی بگیرم بتونم. مشکل بعدیم اینه که تا وقتی startval یا همون initial condition هارو ثابت میگگیرم ران میشه برنامه یعنی از تی اسپنم هم ایراد نمیگیره اما تا اونو تغیییر میدم با پیغام خطای زیر مواجه می شوم:

Undefined function 'minus' for input arguments of type 'cell'.​
من میدونم که این مشکل بخاطر اینه که aa ای که من تعریف میکنم این شکلیه مثلا بعد یکبار محاسبه:
کد:
aa{1,2}


ans = 


    [0.148236699326172]    [0]    [0]    [0.148236699326172]    [0]    [0]
یعدش اونجا که میخام بزارمش تو startval اودی ای 45 چون بصورت cell هستش قبول نمیکنه، چکار کنم تا این ب ماتریس تبدیل شه ضمن اینکه تو حلقه هم هست؟ میدونم دستور cell2mat برای اینکار هستش اما اینجا چطوری استفادش کنم
میشه راهنماییم کنید؟
در ضمن اگرم کلا برای اون هدفی که اولش گفتم همچین فکر و راه حلی اشتباهه یا پیشنهاد بهتری دارید بهم بگید ممنون میشم

اوه اوه چرا اینکار عجیب رو کردید؟!!! این کار که حرفش رو زدید (منظورم توضیحتونه، نه برنامه اش) معنیش اینه که شما اصلاً نمی دونید روش عددی حل دستگاههای IVP چیکار میکنن.
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام
خدمت دوستان

من در برنامه نویسی متلب تازه وارد هستم اینها طبق فهمیده های خودم نوشتم میشه اگر ایرادی داره بگید
منظورم از برنامه 9 عدد بگیره بعد برای هر عدد فرمول های f,c,z,s,b را حساب کند حلقه دوم یک سیگما هست که از 1 تا بی نهایت بخاطر همین براش شرط نذاشتم و اینکه به ازای اعداد فرد بخاطر همین شمارنده 2 تایی کردم
برای هر عدد zچاپ کنه
منظورم از h(k) هر کدوم از این 9 عدد در ماتریس هست
قسمت اول فرمولz رادیکال هست که بصورت توان نوشتم چون متلب سیستمم باز نمیشه ...میشه برام درستش کنید....



PHP:
h=[.25 .275 .3;.325 .35 .375;.4 .425 .45;.475 .5 .525]

for(k=1;k<10;k++)
{

for(n=1;n=n+2)
{
s=4*sin(n*pi*(h(k))/2)*sinh(n*pi/400);
f=(n*pi)^2*2.55*cosh(n*pi/200);
b=s/f;
}
c=(h(k))/b;

z=(2.55)^(1/2)/(3*(10^8)*c);

disp(z)

}
این همین کد بالا هست اما حلقه دوم با یک تابع دیگه نوشتم فقط شرط اعداد فرد نداره
کدوم درست تر ؟
اگر دومی بهتره چه طوری شرط فرد براش بذارم
PHP:
h=[.25 .275 .3;.325 .35 .375;.4 .425 .45;.475 .5 .525]

for(k=1;k<10;k++)
{

syms n
b=symsum((4*sin(n*pi*(h(k))/2)*sinh(n*pi/400))/(((n*pi)^2)*2.55*8.85*(10^(-12))*cosh(n*pi/200)),1,Inf);
c=(h(k))/b;

z=(2.55)^(1/2)/(3*(10^8)*c);

disp(z)

}


اینها که برنامه متلب نیستند؛ احتمالاً برنامه به زبان C هستند.
 

irpersian20

عضو جدید
سلام
دوستان من در مسیری هستم و حالا میخواهم هر چه در اون شاخه هست با یک کامند ، برام لیست بشهو چه دستوری هست؟
یعنی مثلا در فولدر ، عکس ها هستم و با دستور میخواهم لیست فایل های موجود در ان فولدر نمایش داده شود با احترام
 

Hadie89

عضو جدید
اوه اوه چرا اینکار عجیب رو کردید؟!!! این کار که حرفش رو زدید (منظورم توضیحتونه، نه برنامه اش) معنیش اینه که شما اصلاً نمی دونید روش عددی حل دستگاههای IVP چیکار میکنن.
نگید توروخدا اینجوری خودمو میکشم؛ نه اخه دلیل داشت اینکارم . اگر فقط قرار بود این چهار تا اودی رو بین 0 تا 1 حل کنم که خب نیاز به اینهمه تیکه تیکه حل کردن نداشتم .

کد:
[COLOR=#800000]
[/COLOR][COLOR=#800000]این رو به این فرم برای فهمیدن صورت مساله برا شما نوشتم وگرنه تو متلب اینطوری ننوشتم
dy/dz=[(kbc(z)/ub(z)*sigmab(z))*(y(4)-y(1))-gamab*(k*P/R*T*ub(z)*rog)*y(1)[/COLOR]
[COLOR=#800000]     (kbc(z)/ub(z)*sigmab(z))*(y(5)-y(2))+gamab*(k*P/R*T*ub(z)*rog)*y(1)[/COLOR]
[COLOR=#800000]     (kbc(z)/ub(z)*sigmab(z))*(y(6)-y(3))+gamab*4*(k*P/R*T*ub(z)*rog)*y(1)[/COLOR]
[COLOR=#800000]     (kbe(z)/ue*(1-sigmab(z))*emf)*(y(1)-y(4))-((1-emf)/emf)*(k*P/R*T*ue*rog)*y(4)[/COLOR]
[COLOR=#800000]     (kbe(z)/ue*(1-sigmab(z))*emf)*(y(2)-y(5))+((1-emf)/emf)*(k*P/R*T*ue*rog)*y(4)[/COLOR]
[COLOR=#800000]     (kbe(z)/ue*(1-sigmab(z))*emf)*(y(3)-y(6))+4*((1-emf)/emf)*(k*P/R*T*ue*rog)*y(4)];[/COLOR]

 CH4=y(:,1)+y(:,4);
 
[COLOR=#0000ff]dr/dt=[(-k*Msolid/ros)*CH4];[/COLOR]
من اول با حل این چهارتا باید تغییرات CH4رو نسبت به z بدست بیارم بعد حالا هدف اصلی من بدست اوردن تغییرات r در طول z هست منتها من دیفرانسیل r به z رو ندارم اما در رایطه r , عبارت CH4 رو دارم که با z تغییر میکنه.ی راه این بود که جداگانه قسمت اولو حل کنم بعد بیام یه حلقه تعریف کنم ب تعداد numel CH4 یعد در هر لوپ اون r محاسبه شده رو ذخیره کنم تا بتونم در طول z ی تخمینی ازش داشته باشم:

کد:
% main2


clc;
clear;
close all;


zmax=1.1;
y0=[0.15 0 0 0.15 0 0]';


[z,y]=ode45(@nwm,[0 zmax],y0);


CH4=y(:,1)+y(:,4);
 tmax=10;
k=0.1;
d1=5*10^(-3);
x=zeros(1,numel(CH4));
d=zeros(1,numel(CH4));
ros=6.44;
Msolid=44;
for i=1:numel(CH4)
 rsolid=@(t,r)(-k*Msolid/ros)*CH4(i,1);
     r0=d(i);
     [t,r]=ode45(rsolid,[0 tmax],r0);
     d(i+1)=r(end,end);
     x(i)=1-(d(i+1)/d1)^3;
     
end
plot(x,z)
xlabel('z-height');
ylabel('X-conversion');
اما بعد ی فکر دیگه ب سرم زد که اگه بیام بازه بین صفر تا یک رو بشکنم و ی کار کنم که CH4 اخری که تو هر سکشن بدست میاد بشه شرط اولیه سکشن بعدی ممکنه دقیقتر باشه :(
اشتباه فکر کردم نه؟ شاید خودش اینو در نظر میگرفته :((((((((((((((((((
وای اره دیگه ode45 همون رانگ کاتاس ک اونم استپ ب استپ میره جلو و مقدار قبلی رم درنظر میگیره!!!!!! وای چقد من وقت گداشتم تو کار کردن با cell ها تا بتونم اون کار بقول شما عجیبو انجام بدم :(((((((((((((((((((((
حالا این برنامه م درسته؟ جوابش که منطقیه.
برای حل این پنج تا دستگاه استراتژی بهتری اگر دارید بهم میگید؟
 
آخرین ویرایش:

آوای علم

مدیر تالار مشاوره
مدیر تالار
اینها که برنامه متلب نیستند؛ احتمالاً برنامه به زبان C هستند.

خب فکر کردم میشه اینطوری هم نوشت

الان این برنامه چه طوره درسته؟

فقط دو تا مشکل داره نتایج به صورت سری نشون میده مثل این

PHP:
(6400000*5^(1/2)*51^(1/2)*symsum((((exp(-(pi*n*i)/8)*i)/2 - (exp((pi*n*i)/8)*i)/2)*(exp(-(pi*n)/400)/2 - exp((pi*n)/400)/2))/(n^2*(exp(-(pi*n)/200)/2 + exp((pi*n)/200)/2)), n, 1, Inf))/(27081*pi^2)
من می خوام فقط یک عدد نشون بده یک جا دیدم از دستور abs استفاده کرده

دومی مشکل این سیگما فقط میخوام به ازای اعداد فرد باشه یعنی nفقط فرد باشه چه کار کنم؟

فقط پروژه دارم میشه زودتر پاسخ بدین ....ممنون

PHP:
h=[.25 .275 .3;.325 .35 .375;.4 .425 .45;.475 .5 .525]
 
 
for k=1:12;
 
 
syms n
b=symsum((4*sin(n*pi*(h(k))/2)*sinh(n*pi/400))/(((n*pi)^2)*2.55*8.85*(10^(-12))*cosh(n*pi/200)),1,Inf);
c=(h(k))/b;
 
z=(2.55)^(1/2)/(3*(10^8)*c);
 
disp(z)
end
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
خب فکر کردم میشه اینطوری هم نوشت

الان این برنامه چه طوره درسته؟

فقط دو تا مشکل داره نتایج به صورت سری نشون میده مثل این

PHP:
(6400000*5^(1/2)*51^(1/2)*symsum((((exp(-(pi*n*i)/8)*i)/2 - (exp((pi*n*i)/8)*i)/2)*(exp(-(pi*n)/400)/2 - exp((pi*n)/400)/2))/(n^2*(exp(-(pi*n)/200)/2 + exp((pi*n)/200)/2)), n, 1, Inf))/(27081*pi^2)
من می خوام فقط یک عدد نشون بده یک جا دیدم از دستور abs استفاده کرده

دومی مشکل این سیگما فقط میخوام به ازای اعداد فرد باشه یعنی nفقط فرد باشه چه کار کنم؟

فقط پروژه دارم میشه زودتر پاسخ بدین ....ممنون

PHP:
h=[.25 .275 .3;.325 .35 .375;.4 .425 .45;.475 .5 .525]
 
 
for k=1:12;
 
 
syms n
b=symsum((4*sin(n*pi*(h(k))/2)*sinh(n*pi/400))/(((n*pi)^2)*2.55*8.85*(10^(-12))*cosh(n*pi/200)),1,Inf);
c=(h(k))/b;
 
z=(2.55)^(1/2)/(3*(10^8)*c);
 
disp(z)
end

اولیش احتمالاً به یه عبارت ساده قابل تبدیل نیست.
دومیش:

کد:
syms n
assume(n,'integer'), assumeAlso(n > 0)
m = 2*n - 1;


h=[.25 .275 .3;.325 .35 .375;.4 .425 .45;.475 .5 .525]


for k=1:12   
    b=symsum((4*sin(m*pi*(h(k))/2)*sinh(m*pi/400))/(((m*pi)^2)*2.55*8.85*(10^(-12))*cosh(m*pi/200)),1,Inf);
    c=(h(k))/b;
    
    z=(2.55)^(1/2)/(3*(10^8)*c);
    
    disp(z)
end
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام
دوستان من در مسیری هستم و حالا میخواهم هر چه در اون شاخه هست با یک کامند ، برام لیست بشهو چه دستوری هست؟
یعنی مثلا در فولدر ، عکس ها هستم و با دستور میخواهم لیست فایل های موجود در ان فولدر نمایش داده شود با احترام

دستور dir
 

irpersian20

عضو جدید
با درود
دوستان یک سوال بسیار مهم
من در متلب 2 تا حلقه فور تو در تو دارم.
حالا میخواهم بگم اگر شماره خانه بین 10 تا مثلا 100 بود . این رو بریز داخلش
اما p(i,j) که میزنم خوب طبیعتا محتویاتش رو چک میکنه من شماره خانه رو فقط میخوام چک کنم و کار به محتویاتش ندارم
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
با درود
دوستان یک سوال بسیار مهم
من در متلب 2 تا حلقه فور تو در تو دارم.
حالا میخواهم بگم اگر شماره خانه بین 10 تا مثلا 100 بود . این رو بریز داخلش
اما p(i,j) که میزنم خوب طبیعتا محتویاتش رو چک میکنه من شماره خانه رو فقط میخوام چک کنم و کار به محتویاتش ندارم

"شماره خانه" چی هست؟! تا حالا نشنیده بودم.
 

Similar threads

بالا