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

(هادی)

کاربر فعال تالار ریاضی ,
سلام خدمت شما


یک مسئله هست که باید با روش نیوتون - رافسون حل بشه در کلیات حل این روش مشکل ندارم
اما طبق فایل ضمیمه عکس شماره دو و عکس شماره 3..... 4 معادله تعریف شده که باید با روش نیوتون حل بشه

اول اینکه چون یک دستگاه 4 معادله ای با 4 مجهول باید روش نیوتون با ماتریس حل کنیم این شاید خیلی مشکل نباشه
اما مشکل من اینه در این 4 معادله از درایه های ماتریس حدسی استفاده کرده که در بعضی معادله ها همه درایه ها نیست چه طوری یک ماتریس حدس بزنیم بعد این معادله ها در متلب بر حسب درایه بنویسیم
و دوم اینکه متغیر زمانی هستن tp ,چه طوری برحسب زمانی بنویسم و مشکل مهم تر لحظات قبل هم مثل tp-1در این 4 معادله هست این یکیو دیگه چه کنم:confused:

مشکل اخر این مجهولات متغیرهای اندیسی هستن چه طوری د رمتلب با اندیس بنویسم هر چی امتحان کردم جلوش میاد:confused:

عکس 1


عکس 2

عکس 3
عکس 5
عکس 4

سلام
تا اونجایی که من متوجه شدم، فقط شرط اولیه توی این روش حدس زده میشه. یعنی یک بردار چهارتایی. اون ماتریس 4 در چهار که مشتق تابع F نسبت به بردار V هست رو باید دونه دونه حساب کند و توی ماتریس قرار بدید

مورد دوم اینکه هم tp هست هم tp-1 معنیش اینه که لحظه tp به لحظه tp-1 وابسته هست. پس شما فرض می کنید مقادیرتون در لحظه tp-1 و قبل از اون معلوم هست، و فقط مقادیر در لحظه tp مجهول هستند. اون موقع یک دستگاه 4 معادله 4 مجهولی برای مقادیر در لحظه tp خواهید داشت.
وقتی که در لحظه tp به دست آوردید، سراغ زمان های بعدی tp+1 ، tp+2 و ... می روید

با این حساب الگوریتم شما دو مرحله و دو حلقه داخل همدیگه داره. یک حلقه بیرونی روی زمان هست. و حلقه داخلی برای حل نیوتون در هر لحظه نوشته میشه
ضمنا متلب اندیس (به معنای زیرنویس) نمیشناسه.
 

آوای علم

مدیر تالار مشاوره
مدیر تالار
سلام
تا اونجایی که من متوجه شدم، فقط شرط اولیه توی این روش حدس زده میشه. یعنی یک بردار چهارتایی. اون ماتریس 4 در چهار که مشتق تابع F نسبت به بردار V هست رو باید دونه دونه حساب کند و توی ماتریس قرار بدید

مورد دوم اینکه هم tp هست هم tp-1 معنیش اینه که لحظه tp به لحظه tp-1 وابسته هست. پس شما فرض می کنید مقادیرتون در لحظه tp-1 و قبل از اون معلوم هست، و فقط مقادیر در لحظه tp مجهول هستند. اون موقع یک دستگاه 4 معادله 4 مجهولی برای مقادیر در لحظه tp خواهید داشت.
وقتی که در لحظه tp به دست آوردید، سراغ زمان های بعدی tp+1 ، tp+2 و ... می روید

با این حساب الگوریتم شما دو مرحله و دو حلقه داخل همدیگه داره. یک حلقه بیرونی روی زمان هست. و حلقه داخلی برای حل نیوتون در هر لحظه نوشته میشه
ضمنا متلب اندیس (به معنای زیرنویس) نمیشناسه.
ممنون
خب در 4 معادله از درایه های ماتریس استفاده شده اونها چه طوری فراخوانی کنم!

بعد حقله در حوزه زمان مگر داریم؟
 

(هادی)

کاربر فعال تالار ریاضی ,
ممنون
خب در 4 معادله از درایه های ماتریس استفاده شده اونها چه طوری فراخوانی کنم!

بعد حقله در حوزه زمان مگر داریم؟

خواهش می کنم
منظورم یک همچین چیزی هست:
چهارتا معادله داریم به نام F که هر کدام تابعی از اون چهارتا متغیر هست. از اون معادله ها که نسبت به این متغیرها مشتق بگیرید یک ماتریس میشه مثل J.
اون موقع یک همچین حلقه ای می نویسیم

for tp = 1:N
...
end

داخل این حلقه، حل نیوتون رافسون رو می نویسیم. یعنی ابتدا ماتریس J و مقادیر F رو به دست می آوریم و بعد طبق الگوریتم نیوتون، معادله رو حل می کنیم
 

آوای علم

مدیر تالار مشاوره
مدیر تالار
ببخشید الان این 4 معادله بخواهیم به صورت ماتریسی بنویسیم چه طوری بنویسم

اخه زمانهاش TP,TP-1اینطوری هست یعنی فرق دارن
 

meytim

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


یک مسئله هست که باید با روش نیوتون - رافسون حل بشه در کلیات حل این روش مشکل ندارم
اما طبق فایل ضمیمه عکس شماره دو و عکس شماره 3..... 4 معادله تعریف شده که باید با روش نیوتون حل بشه

اول اینکه چون یک دستگاه 4 معادله ای با 4 مجهول باید روش نیوتون با ماتریس حل کنیم این شاید خیلی مشکل نباشه
اما مشکل من اینه در این 4 معادله از درایه های ماتریس حدسی استفاده کرده که در بعضی معادله ها همه درایه ها نیست چه طوری یک ماتریس حدس بزنیم بعد این معادله ها در متلب بر حسب درایه بنویسیم
و دوم اینکه متغیر زمانی هستن tp ,چه طوری برحسب زمانی بنویسم و مشکل مهم تر لحظات قبل هم مثل tp-1در این 4 معادله هست این یکیو دیگه چه کنم:confused:

مشکل اخر این مجهولات متغیرهای اندیسی هستن چه طوری د رمتلب با اندیس بنویسم هر چی امتحان کردم جلوش میاد:confused:

عکس 1


عکس 2

عکس 3
عکس 5
عکس 4

راه ساده ترش اینه که شما دستگاه معادلات دیفرانسیل 1، "2، "3 و 4 رو با استفاده از روشهای عددی حل معادلات دیفرانسیل حل کنید. در این صورت شما نیاز به 4 تا شرط اولیه دارید (شاید هم 6 تا؛ دقیق بهش فکر نکردم).
بنابراین برای حل به روشی که توی اون پیوستها اومده هم اون شرایط اولیه رو دارید؛ یعنی برای لحظه 0 مقادیر اون متغیرهای حالت رو دارید؛ پس در هر گام، مجهولها فقط در زمان tp هستند؛ چون همه چیز در یک گام قبلش رو دارید.
 

آوای علم

مدیر تالار مشاوره
مدیر تالار
راه ساده ترش اینه که شما دستگاه معادلات دیفرانسیل 1، "2، "3 و 4 رو با استفاده از روشهای عددی حل معادلات دیفرانسیل حل کنید. در این صورت شما نیاز به 4 تا شرط اولیه دارید (شاید هم 6 تا؛ دقیق بهش فکر نکردم).
بنابراین برای حل به روشی که توی اون پیوستها اومده هم اون شرایط اولیه رو دارید؛ یعنی برای لحظه 0 مقادیر اون متغیرهای حالت رو دارید؛ پس در هر گام، مجهولها فقط در زمان tp هستند؛ چون همه چیز در یک گام قبلش رو دارید.

خب مشکل اینه حتما باید با روش نیوتون حل بشه بخاطر همین نمیدونم چه طوری ماتریس این روش بنویسم یعنی همون F چون فقط شامل مجهولات نیست لحظات قبل هم دارد
 

meytim

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

من میگم شما لحظه صفر رو دارید. اگه اینطور نیست یه جای کار ایراد داره.
با این فرض که لحظه صفر رو دارید، توی اون معادله ها مجهولها فقط در لحظه یک گام بعد از لحظه صفر هستند. به همین صورت هر گام که می رید جلو، گام قبلی رو دارید؛ پس مشکلی ندارید.
 

mitra*

کاربر بیش فعال
کاربر ممتاز
بچه ها من تعداد نامعینی عدد دارم که میخوام توی یه چیزی ذخیره بشه بعد از بین اون ها ماکسیممش رو بهم بده چیکار باید بکنم؟
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
بچه ها من تعداد نامعینی عدد دارم که میخوام توی یه چیزی ذخیره بشه بعد از بین اون ها ماکسیممش رو بهم بده چیکار باید بکنم؟

همه اعداد رو بریز توی یه بردار و بعدش از دستور max استفاده کن:

کد:
>> x = [1.2 3.354 2.1 -1 sqrt(12) 1]


x =


    1.2000    3.3540    2.1000   -1.0000    3.4641    1.0000


>> xmax = max(x)


xmax =


    3.4641
 

mitra*

کاربر بیش فعال
کاربر ممتاز
همه اعداد رو بریز توی یه بردار و بعدش از دستور max استفاده کن:

کد:
>> x = [1.2 3.354 2.1 -1 sqrt(12) 1]


x =


    1.2000    3.3540    2.1000   -1.0000    3.4641    1.0000


>> xmax = max(x)


xmax =


    3.4641

اخه من نمیدونم چندتا عدد دارم چطور ابعاد بردارم رو معرفی کنم؟
 

Hadie89

عضو جدید
سلام
دوستان من کد زیر رو نوشتم ولی نمیدوونم چرا با حدس اولیه های مختلف کانورژ نمیشه. بنظرتون باید از نیوتن رافسون یا fsolve برم؟ آخه از fsolve که بخام برم اونجایی که باید شرط cd چک بشه یکم سخت میکنه کارو.میشه راهنماییم کنید؟


کد:
clc;
clear;


emf=emfreductionofironoxide;
T=973; %k
R=8.314;
C=72; %k
T0=293.85; %k
g=9.81; %m/s^2
beta=(75*((1-emf)^2))/(2*(emf^3));
mu0=8.76*10-6; %kg/ms
muH2=mu0*((T0+C)/(T+C))*(T/T0)^1.5; %kg/ms
muH2O=0.00013*0.1; %kg/ms
mug=1/((0.85/muH2)+(0.15/muH2O)); %kg/ms 
dp=0.5*(10^-2);
rog=(((1.5*1.033*10^5)/(T*R))*(0.85*2+0.15*18))*10^(-3); %kg/m^3
ros=5.242*10^3; 
Ar=((dp^3)*rog*(ros-rog)*g)/mug^2;






new=53;
omega=(2*(beta^2)*(1-(tanh(beta))/beta))/(2*(beta^2)+3*(1-(tanh(beta))/beta));
i=1;
lam=0.5;
 while  lam>10^-6
   Rep=new;
    w=log10(Rep);
if  Rep>0.1 && Rep<=7
Cd=(24*omega*(1+0.1315*((Rep)^(0.82-0.05*w))))/Rep;


else if Rep>7 && Rep<120
 Cd=(24*omega*(1+0.0853*((Rep)^(1.093-0.105*w))))/Rep;


    end
 end
ut=((4*dp*(ros-rog)*9.8)/(3*rog*Cd))^0.5;
Repp=(dp*(ut)*(rog))/mug;
new=Repp;
lam=abs(new-Rep);
i=i+1 ;
 end
 
 alpha=emf^(-4.7);
 Remf=(Ar/(0.75*alpha*Cd))^0.5;
umf=(((Remf)*mug)/(dp*rog))
 
آخرین ویرایش:

meytim

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

1. ابعاد لازم نیست تعریف کنی؛ الآن تو این مثالی که من گذاشتم، مگه ابعاد تعریف کردم؟
2. شاید هدف شما اینه که به شیوه فرترن یه دونه یه دونه عدد وارد کنی و سر آخر مثلاً یه * وارد کنی و برنامه بفهمه که ورود داده ها تموم شده، و بعدش ماکزیمم رو پیدا کنه. در این صورت می تونی از حلقه while و دستور input استفاده کنی و کارت رو انجام بدی.
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام
دوستان من کد زیر رو نوشتم ولی نمیدوونم چرا با حدس اولیه های مختلف کانورژ نمیشه. بنظرتون باید از نیوتن رافسون یا fsolve برم؟ آخه از fsolve که بخام برم اونجایی که باید شرط cd چک بشه یکم سخت میکنه کارو.میشه راهنماییم کنید؟


کد:
clc;
clear;


emf=emfreductionofironoxide;
T=973; %k
R=8.314;
C=72; %k
T0=293.85; %k
g=9.81; %m/s^2
beta=(75*((1-emf)^2))/(2*(emf^3));
mu0=8.76*10-6; %kg/ms
muH2=mu0*((T0+C)/(T+C))*(T/T0)^1.5; %kg/ms
muH2O=0.00013*0.1; %kg/ms
mug=1/((0.85/muH2)+(0.15/muH2O)); %kg/ms 
dp=0.5*(10^-2);
rog=(((1.5*1.033*10^5)/(T*R))*(0.85*2+0.15*18))*10^(-3); %kg/m^3
ros=5.242*10^3; 
Ar=((dp^3)*rog*(ros-rog)*g)/mug^2;






new=53;
omega=(2*(beta^2)*(1-(tanh(beta))/beta))/(2*(beta^2)+3*(1-(tanh(beta))/beta));
i=1;
lam=0.5;
 while  lam>10^-6
   Rep=new;
    w=log10(Rep);
if  Rep>0.1 && Rep<=7
Cd=(24*omega*(1+0.1315*((Rep)^(0.82-0.05*w))))/Rep;


else if Rep>7 && Rep<120
 Cd=(24*omega*(1+0.0853*((Rep)^(1.093-0.105*w))))/Rep;


    end
 end
ut=((4*dp*(ros-rog)*9.8)/(3*rog*Cd))^0.5;
Repp=(dp*(ut)*(rog))/mug;
new=Repp;
lam=abs(new-Rep);
i=i+1 ;
 end
 
 alpha=emf^(-4.7);
 Remf=(Ar/(0.75*alpha*Cd))^0.5;
umf=(((Remf)*mug)/(dp*rog))

1. به طور کلی در روشهای عددی هیچ تضمینی وجود نداره که یک رویه با هر حدس اولیه ای به جواب مورد نظر شما همگرا بشه.
2. واسه چی چک کردن شرط cd کار رو سخت میکنه؟! به همین صورت که اینجا نوشتی، توی اون تابعی که می خوای به fsolve معرفی کنی هم بنویس.
 

Hadie89

عضو جدید
1. به طور کلی در روشهای عددی هیچ تضمینی وجود نداره که یک رویه با هر حدس اولیه ای به جواب مورد نظر شما همگرا بشه.
2. واسه چی چک کردن شرط cd کار رو سخت میکنه؟! به همین صورت که اینجا نوشتی، توی اون تابعی که می خوای به fsolve معرفی کنی هم بنویس.

آخه باید تو هر مرحله اون مجهولی رو که بدس میاره چک کنه ببینه تو کدوم محدوده رینولدزه، تا cd رو حساب کنه، اینو چطوری بفهمونم بهش
 

Hadie89

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

آنه...

عضو جدید
سلام
من یک برنامه در متلب نوشتم موقع اجرا این خطاها ظاهر میشه
ممنون میشم راهنمایی بفرمایین:








 

(هادی)

کاربر فعال تالار ریاضی ,
سلام
یه سوال ، وقتی که من میام با دستور ode45 یه دستگاه معادله دیفرانسیل رو حل میکنم پلات میگیرم بعد حالا مثلا یه پارامتر رو تغییر میدم میخام همه نمودارا رو هلدآن کنم، مشکل پیدا میکنم با این مساله که تعداد تقسیم بندی ها در هر مورد متفاوته و دست من نیست واسه همین نمیتونم همه رو تو ی نمودار بکشم، چیکار کنم؟
سلام
اینکه تقسیم بندی ها تفاوت بکنه، مشکلی در پلات کردن روی همدیگه ایجاد نمیکنه.
مثلا اگه T1 و X1 جواب معادله اول و T2 و X2 جواب معادله دوم باشند:
a [T1, X1] = ode45(...) a
a [T2, X2] = ode45(...) a
اون موقع می تونید اونها رو روی هم رسم کنید
plot(T1, X1), hold on, plot(T2, X2) a
 

(هادی)

کاربر فعال تالار ریاضی ,
سلام
من یک برنامه در متلب نوشتم موقع اجرا این خطاها ظاهر میشه
ممنون میشم راهنمایی بفرمایین:








سلام. مشکل دوم و چهارم یک مقدار درد سر داره ولی دو تای دیگه ساده تر هست

مورد اول: وقتی دو تا ماتریس رو با هم ترکیب می کنید مراقب باشید که ابعاد اونها با هم جور باشه.
مثلا توی این مورد شما باید تعداد سطرهای Am قبلی و jstar با هم برابر باشه

مورد سوم هم همین داستان رو داره. مراقب باشید ابعاد بردارها دقیقا یکی باشه

دو تای دیگه مشکل حافظه است. توی کارهای معمولی کمتر این مشکل پیش میاد.
شاید ابعاد ماتریس هاتون بیش از حد بزرگه
 

meytim

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

توی پست قبلی هم گفتم؛ معادله یا معادله ها رو توی تابعی که می خواید به fsolve معرفی کنید بنویسید. یعنی یک mفایل جدا از برنامه اصلی. حالا توی اون تابع هر چیزی رو می خواید چک کنید، چک کنید؛ مشکلی پیش نمیاد. اصلاً این مهمترین برتری متلب به نرم افزارها و زبانهای برنامه نویسی دیگره. از این برتری استفاده کنید و مثل برنامه نویسهای فرترن فکر نکنید.
 

Hadie89

عضو جدید
سلام
اینکه تقسیم بندی ها تفاوت بکنه، مشکلی در پلات کردن روی همدیگه ایجاد نمیکنه.
مثلا اگه T1 و X1 جواب معادله اول و T2 و X2 جواب معادله دوم باشند:
a [T1, X1] = ode45(...) a
a [T2, X2] = ode45(...) a
اون موقع می تونید اونها رو روی هم رسم کنید
plot(T1, X1), hold on, plot(T2, X2) a

نه منظورم این بود که مثلا در معادله اول یه پارامتر داریم مثلا اسمش k،یبار به k دادم 1 و معادله رو حل کردم حالا دفعه بعد که مقدار اون k رو عوض میکنم میخام نمودارشو بندازم رو قبلی که تاثیر k رو ببینم منتها تعداد تقسیم بندی ها متفاوته نمیشه
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
نه منظورم این بود که مثلا در معادله اول یه پارامتر داریم مثلا اسمش k،یبار به k دادم 1 و معادله رو حل کردم حالا دفعه بعد که مقدار اون k رو عوض میکنم میخام نمودارشو بندازم رو قبلی که تاثیر k رو ببینم منتها تعداد تقسیم بندی ها متفاوته نمیشه

شما برنامه خودت رو به سه بخش تقسیم کن:
1. بخش ورود داده ها، یا pre-processing
2. بخش آنالیز، یا processing
3. بخش پردازش داده ها، یا post-processing

وقتی که به بخش 3 می رسی، همه خروجیها رو با تغییر همه پارامترها، از جمله پارامتر k، در اختیار داری. حالا می تونی به راحتی اونها رو (اگه لازم بود) پردازش کنی و بعدش هم نمودارهاشون رو بکشی؛ در این مرحله معمولاً نیازی به hold on نیست؛ اما اگه خواستی می تونی از hold on هم استفاده کنی.
 

Hadie89

عضو جدید
شما برنامه خودت رو به سه بخش تقسیم کن:
1. بخش ورود داده ها، یا pre-processing
2. بخش آنالیز، یا processing
3. بخش پردازش داده ها، یا post-processing

وقتی که به بخش 3 می رسی، همه خروجیها رو با تغییر همه پارامترها، از جمله پارامتر k، در اختیار داری. حالا می تونی به راحتی اونها رو (اگه لازم بود) پردازش کنی و بعدش هم نمودارهاشون رو بکشی؛ در این مرحله معمولاً نیازی به hold on نیست؛ اما اگه خواستی می تونی از hold on هم استفاده کنی.

من متوجه نشدم :((((((((((((
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
من متوجه نشدم :((((((((((((

این یه رویه عمومی هست که در اکثر نرم افزارها رعایت میشه؛ شما هم رعایت کنید بهتره. میشه رعایت نکرد، اما رعایت کنید بهتره. با این کار یعنی شما در بخش 2 اصلاً به کشیدن نمودار فکر نکنید؛ همه خروجیهای ضروری رو محاسبه کرده و در متغیرهای مناسب بریزید. این یعنی اینکه چیزهایی رو که محاسبه می کنید با ریختن خروجیهای آنالیزهای بعدی نابود نکنید. فعلاً فقط بخش 2 رو کامل انجام بدید.
 

alighara

عضو جدید
سلام دوستان عزیز
من یک پروژه متلب دارم که اگر امکان دارد بنده
راهنمایی کنید.
ما یک سیگنال داریم که باید بتوانیم از بین تعدادی سیگنال که برای ما فرستاده می شود آن را تشخیص دهیم . منتها این سیگنال ها نویزی شده اند .
من می خواستم با شبکه ها ی عصبی(تشخیص الگو) این کار را انجام دهم. در اینترنت باید دنبال چه موضوعی بگردم. بیس کار من چیست؟
با تشکر
 

آنه...

عضو جدید
سلام. مشکل دوم و چهارم یک مقدار درد سر داره ولی دو تای دیگه ساده تر هست

مورد اول: وقتی دو تا ماتریس رو با هم ترکیب می کنید مراقب باشید که ابعاد اونها با هم جور باشه.
مثلا توی این مورد شما باید تعداد سطرهای Am قبلی و jstar با هم برابر باشه

مورد سوم هم همین داستان رو داره. مراقب باشید ابعاد بردارها دقیقا یکی باشه

دو تای دیگه مشکل حافظه است. توی کارهای معمولی کمتر این مشکل پیش میاد.
شاید ابعاد ماتریس هاتون بیش از حد بزرگه
ممنون. دارم کارپایان نامه ارشدمو انجام میدم





برای مورد دوم و چهارم چکار کنم؟ من با لپ تاپم دارم کار میکنم میگه حافظه اش کافی نیست ؟؟
 
آخرین ویرایش:

آنه...

عضو جدید
لپ تاپ من acer مدل ASPIRE E1-571G هست. از لحاظ حافظه و پردازش در چه حده؟ خوبه یا ضعیفه ؟
 

mitra*

کاربر بیش فعال
کاربر ممتاز
1. ابعاد لازم نیست تعریف کنی؛ الآن تو این مثالی که من گذاشتم، مگه ابعاد تعریف کردم؟
2. شاید هدف شما اینه که به شیوه فرترن یه دونه یه دونه عدد وارد کنی و سر آخر مثلاً یه * وارد کنی و برنامه بفهمه که ورود داده ها تموم شده، و بعدش ماکزیمم رو پیدا کنه. در این صورت می تونی از حلقه while و دستور input استفاده کنی و کارت رو انجام بدی.
مهندس میشه لطفا راهناییم کنین من نتونستم مقادیرم رو توی یه بردار سیو کنم!!! :(
توی این شبیه سازی من یه بلوک مت فاکنشن گذاشتم که میخوام مقدار خروجی که بهم میده max مقدار y باشه. ولی متاسفانه نتونستم.
http://s7.picofile.com/file/8255600526/takhminXnouf.slx.html

http://s6.picofile.com/file/8255600568/takhminXnouf_sfun_mexw64.html
 

(هادی)

کاربر فعال تالار ریاضی ,
ممنون. دارم کارپایان نامه ارشدمو انجام میدم





برای مورد دوم و چهارم چکار کنم؟ من با لپ تاپم دارم کار میکنم میگه حافظه اش کافی نیست ؟؟

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

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
لپ تاپ من acer مدل ASPIRE E1-571G هست. از لحاظ حافظه و پردازش در چه حده؟ خوبه یا ضعیفه ؟

1. توی پنجره فرمان متلب تایپ کن bench و اینتر بزن. دو تا نمودار آخر رو بذار اینجا ببینیم وضعیتش چطوره.

2. کاری که انجام میدی چیه؟ داری یک مسأله رو با استفاده از یک روش روش بهگزینی population-based مثل الگوریتمهای تکاملی، الگوریتمهای ژنتیک، ... حل می کنی؟ اگه جواب مثبته، چند تا تابع ارزش و چند تا متغیر طراحی (یا decision variable) داری؟
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
مهندس میشه لطفا راهناییم کنین من نتونستم مقادیرم رو توی یه بردار سیو کنم!!! :(
توی این شبیه سازی من یه بلوک مت فاکنشن گذاشتم که میخوام مقدار خروجی که بهم میده max مقدار y باشه. ولی متاسفانه نتونستم.
http://s7.picofile.com/file/8255600526/takhminXnouf.slx.html

http://s6.picofile.com/file/8255600568/takhminXnouf_sfun_mexw64.html

من سیمولینک وارد نیستم؛ اما یه نگاه انداختم، دیدم حداقل سه تا روش برای این کار هست. یکی از روشها که به نظرم ساده تر بود، اینه که دستورهای زیر رو در یک mفایل در مسیر اون مدل سیمولینک ذخیره کنی و بعدش، اجراش کنی:
کد:
a = sim('takhminXnouf', 'SimulationMode','normal');
b = get(a,'ScopeData6');
y = b.signals.values;
ymax = max(y)

این هم نتیجه:
کد:
...
...
y =
    1.4837


y =
    1.4824


y =
    1.4807


y =
    1.4806


y =
    1.4806




ymax =


   30.7441


>>
البته قبلش باید تنظیمات شکل پیوست رو در مدل انجام بدید.

Log simulink scope data to workspace.jpg
 
آخرین ویرایش:

Similar threads

بالا