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

edna11

عضو جدید
سلام.یه سوال در مورد pdepe دارم
میشه دو تا معادلع یکی در سیستم استوانه ای و یکی کارتزین راهم زمان با pdepe حل کرد؟
ممنون
 

meytim

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

فکر نکنم بشه؛ به خاطر اون پارامتر بیانگر سیستم که نمی شه در آن واحد بهش دو تا عدد تخصیص بدی.
چرا چنین سؤالی رو پرسیدید؟ یه دستگاه معادله همگیر (یا coupled) دارید؟ اگه اینطوره نمی شه به ناهمگیر (یا decoupled) تبدیلشون کرد؟
 

edna11

عضو جدید
Untitled.jpg
معادلاتم اینا هستن.به نظرتون امکانش نیست؟سریعترین راهبرای حلش چی هست؟
این دو تا معادله به هم وابسته هستند
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
مشاهده پیوست 258479
معادلاتم اینا هستن.به نظرتون امکانش نیست؟سریعترین راهبرای حلش چی هست؟
این دو تا معادله به هم وابسته هستند

نمی دونم چی بگم.
ـ قبل از هرچیز شما باید شرایط اولیه و شرایط مرزی مسأله رو داشته باشید.
ـ همیشه یکی از راهها روش کاسته های بسته (یا تفاضلات محدود) هستش.
ـ یک کاری که میشه تست کنید، اما قبلش نمی شه گفت که حتماً به نتیجه برسه، اینه که هر دو تا معادله رو توی یک نوع دستگاه مختصات بنویسید؛ یعنی مثلاً اولی رو به همین صورت نگه داری و دومی رو هم به مختصات دکارتی تبدیل کنی (یا دومی رو به همین صورت نگه داری و اولی رو هم به مختصات استوانه ای ببری) و بعدش چک کنی ببینی میشه با pdepe میشه حل کرد یا نه.
 

edna11

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

meytim

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

از روابط تبدیل مختصات استفاده کنید. روابطش توی کتابهای ریاضیات مهندسی، سیالات، مکانیک محیطهای پیوسته، ... هست. توی اینترنت هم بزنی حتماً هست:

coordinate transformation Cartesian cylindrical
 

edna11

عضو جدید
از روابط تبدیل مختصات استفاده کنید. روابطش توی کتابهای ریاضیات مهندسی، سیالات، مکانیک محیطهای پیوسته، ... هست. توی اینترنت هم بزنی حتماً هست:

coordinate transformation Cartesian cylindrical

در واقع فرمول اول و دوم هر دو در سیستم استوانه ای نوشته شدند.که در فرمول اول ترم نفوذD حذف شده و در جهت Zتغییرات داریم و در فرمول دوم نفوذ D داریم و تغییرات در جهت r هست.در این صورت امکان حل با pdepe هست؟
 
آخرین ویرایش:

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
در واقع فرمول اول و دوم هر دو در سیستم استوانه ای نوشته شدند.که در فرمول اول ترم نفوذD حذف شده و در جهت Zتغییرات داریم و در فرمول دوم نفوذ D داریم و تغییرات در جهت r هست.در این صورت امکان حل با pdepe هست؟

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



برای مختصات استوانه ای پارامتر m برابر با 1 هست (این همون پارامتریه که قبلاً حرفش رو زدم).
 

پیوست ها

  • pdepe4.gif
    pdepe4.gif
    3.2 کیلوبایت · بازدیدها: 0

edna11

عضو جدید
یعنی میشه توی یک فایل r=x در نظر بگیرم و توی یک فایل دیگه z=x.
بعد در فایل سوم فراخوانیشون کنم؟
یا اینکه باید هر دو تا معادله یک بعد r داشته باشن یا بعد z؟
pdepe قابل تعمیم به دو بعد نیست؟
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
یعنی میشه توی یک فایل r=x در نظر بگیرم و توی یک فایل دیگه z=x.
بعد در فایل سوم فراخوانیشون کنم؟
یا اینکه باید هر دو تا معادله یک بعد r داشته باشن یا بعد z؟
pdepe قابل تعمیم به دو بعد نیست؟

نه نوشته بودم به صورت ماتریسی؛ یعنی مثلاً x رو به صورت زیر یک بردار ستونی فرض کنید:

کد:
x = [r; z]
 

meytim

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

ببین من الآن یک نگاهی به راهنمای متلب انداختم؛ مسأله شما با تابع pdepe قابل حل نیست. باید به فکر روش دیگه ای باشی.
 

edna11

عضو جدید
ببین من الآن یک نگاهی به راهنمای متلب انداختم؛ مسأله شما با تابع pdepe قابل حل نیست. باید به فکر روش دیگه ای باشی.
چرا قابل حل نیست؟
از چه روشی میتونم استفاده کنم؟چون وقتم خیلی محدوده
 

meytim

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

دلیلش اینه که pdepe دو تا متغیر مستقل قبول می کنه؛ یکی زمان، و یکی هم مکان. یعنی x نمی تونه بردار باشه؛ فقط می تونه اسکالر باشه. این رو در ابتدای کار بهش دقت نکردیم.
در مورد روشهای دیگه:
ـ اگه دستگاه معادلات مربوط به یه مسأله خاص و معرف باشه، با اسمش در mathworks.com/matlabcentral/fileexchange و github.com و گوگل جستجو کن؛ شاید قبلا کسی انجام داده باشه و در اینترنت به اشتراک گذاشته باشه.
ـ معادلاتی رو که pdetool می تونه حل کنه بررسی کن، ببین این دستگاه قابل بیان به شکل یکی از اون معادلاتی که pdetool می تونه حل کنه هست یا نه.
ـ آخرین کارهایی که می تونید انجام بدید استفاده از کاسته های بسته (یا تفاضلات محدود) و یا استفاده از پارکهای بسته (یا المانهای محدود) هست. اگه خواستید از روش کاسته های بسته مسأله رو حل کنید، پاره بندی رو فقط در جهتهای مکانی، یعنی r و z، انجام بدید و شرایط مرزی رو اعمال کنید. بعد معادلاتی که به دست اومده رو با استفاده از تابع ode15s حل کنید.
ـ روشهای دیگه هم هست؛ ولی من اگه بودم، به این ترتیب که نوشتم کار حل مسأله رو ادامه می دادم.
 

edna11

عضو جدید
دلیلش اینه که pdepe دو تا متغیر مستقل قبول می کنه؛ یکی زمان، و یکی هم مکان. یعنی x نمی تونه بردار باشه؛ فقط می تونه اسکالر باشه. این رو در ابتدای کار بهش دقت نکردیم.
در مورد روشهای دیگه:
ـ اگه دستگاه معادلات مربوط به یه مسأله خاص و معرف باشه، با اسمش در mathworks.com/matlabcentral/fileexchange و github.com و گوگل جستجو کن؛ شاید قبلا کسی انجام داده باشه و در اینترنت به اشتراک گذاشته باشه.
ـ معادلاتی رو که pdetool می تونه حل کنه بررسی کن، ببین این دستگاه قابل بیان به شکل یکی از اون معادلاتی که pdetool می تونه حل کنه هست یا نه.
ـ آخرین کارهایی که می تونید انجام بدید استفاده از کاسته های بسته (یا تفاضلات محدود) و یا استفاده از پارکهای بسته (یا المانهای محدود) هست. اگه خواستید از روش کاسته های بسته مسأله رو حل کنید، پاره بندی رو فقط در جهتهای مکانی، یعنی r و z، انجام بدید و شرایط مرزی رو اعمال کنید. بعد معادلاتی که به دست اومده رو با استفاده از تابع ode15s حل کنید.
ـ روشهای دیگه هم هست؛ ولی من اگه بودم، به این ترتیب که نوشتم کار حل مسأله رو ادامه می دادم.

ممنونم.سرچ زدم کسی انجام نداده با متلب.
با روش method of line هممیشه انجامش داد؟
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
ممنونم.سرچ زدم کسی انجام نداده با متلب.
با روش method of line هممیشه انجامش داد؟

فکر کنم همون روشی رو که من توضیح دادم که آخرش با ode15s حل کنید رو بعضیها بهش میگن method of lines
 

(هادی)

کاربر فعال تالار ریاضی ,
سلام. ببخشید پریدم وسط بحث. معادله هایی که گذاشته بودید، متغیرهای زیادی داره (u_g، u_cp، c_i، ...) نتونستم تشخیص بدهم کدوم هاشون توابع مجهول هستند.
 

edna11

عضو جدید
سلام. ببخشید پریدم وسط بحث. معادله هایی که گذاشته بودید، متغیرهای زیادی داره (u_g، u_cp، c_i، ...) نتونستم تشخیص بدهم کدوم هاشون توابع مجهول هستند.

سلام.در واقع u_cp مجهول هست اما من برای سادگی کارم u_cp و u_g را یکی در نظر میگیرم و برابر مقدار دبی به سطح در حال استفاده
 

mitra*

کاربر بیش فعال
کاربر ممتاز
بچه ها من میخوام شکل های سیمولینگم با ران کردم ام فایلم بدست بیاد بنابراین توی سیمولینگم از بلوک to workspace استفاده کردم و بعد کد مربوطه اش رو نوشتم ولی این اررو رو گرفتم!!
Error using plot
Vectors must be the same lengths.

Error in sekltakhmxnouf (line 8)
plot(tout,X1.signals.values,'b','LineWidth',2)

منظورش از بردار چیه؟ من که محدوده ای مشخص نکردم برای محورم یا هر چیز دیگه ای؟؟؟ !!!!
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
ممنونم.سرچ زدم کسی انجام نداده با متلب.
با روش method of line هممیشه انجامش داد؟

اسم معاله ها یا مسأله ای که حل می کنید چیه؟ توی قرن 21 ندرتاً مسأله های کاملاً جدید مطرح و حل میشه.
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
بچه ها من میخوام شکل های سیمولینگم با ران کردم ام فایلم بدست بیاد بنابراین توی سیمولینگم از بلوک to workspace استفاده کردم و بعد کد مربوطه اش رو نوشتم ولی این اررو رو گرفتم!!
Error using plot
Vectors must be the same lengths.

Error in sekltakhmxnouf (line 8)
plot(tout,X1.signals.values,'b','LineWidth',2)

منظورش از بردار چیه؟ من که محدوده ای مشخص نکردم برای محورم یا هر چیز دیگه ای؟؟؟ !!!!
دو تا ورودی اول دستور plot بردار هستند.
من اگرچه سیمولینک بلد نیستم، اما روش کار شما باید اینطور باشه که یک تابع بنویسید که با استفاده از دستور assignin داده ها رو در فضای کاری بریزه. بعدش می تونید با استفاده از دستور plot در فضای کاری یا در یک دستخط، اون نموداری که می خواید رو بکشید.
 

(هادی)

کاربر فعال تالار ریاضی ,
بچه ها من میخوام شکل های سیمولینگم با ران کردم ام فایلم بدست بیاد بنابراین توی سیمولینگم از بلوک to workspace استفاده کردم و بعد کد مربوطه اش رو نوشتم ولی این اررو رو گرفتم!!
Error using plot
Vectors must be the same lengths.

Error in sekltakhmxnouf (line 8)
plot(tout,X1.signals.values,'b','LineWidth',2)

منظورش از بردار چیه؟ من که محدوده ای مشخص نکردم برای محورم یا هر چیز دیگه ای؟؟؟ !!!!
منظورش اینه که مثلا اگه نوشته اید plot(x,y) بردارهای x و y هم اندازه نیستند که بخواد اونها رو بر حسب هم رسم کنه
 

mitra*

کاربر بیش فعال
کاربر ممتاز
منظورش اینه که مثلا اگه نوشته اید plot(x,y) بردارهای x و y هم اندازه نیستند که بخواد اونها رو بر حسب هم رسم کنه

اخه من محدوده ای برای هیچ کدام از متغییر هام مشخص نکردم !!!!!!!!!!!
 

(هادی)

کاربر فعال تالار ریاضی ,
اخه من محدوده ای برای هیچ کدام از متغییر هام مشخص نکردم !!!!!!!!!!!
ببینید ابعاد X1.signals.values و tout چقدر هست یعنی دوتا دستور زیر رو اجرا کنید:
size(tout) 1
size(X1.signals.values) 2

باید جواب یکسان باشه تا بتونه رسم کنه
 

(هادی)

کاربر فعال تالار ریاضی ,
سلام.در واقع u_cp مجهول هست اما من برای سادگی کارم u_cp و u_g را یکی در نظر میگیرم و برابر مقدار دبی به سطح در حال استفاده
آقای meytim کاملا درست می فرمایند. عجیبه که کسی تا حالا حلش نکرده باشه
به نظرم اگه از یه متغیر جدید به صورت حاصلضرب u در c استفاده کنید، معادلاتتون ساده تر میشه
 

edna11

عضو جدید
آقای meytim کاملا درست می فرمایند. عجیبه که کسی تا حالا حلش نکرده باشه
به نظرم اگه از یه متغیر جدید به صورت حاصلضرب u در c استفاده کنید، معادلاتتون ساده تر میشه

با gproms حلش کردن.با متلب چیزی پیدا نکردم
و یه سوال میدونید نمودار که نوسانی میشه دلیلش جیه؟
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
مشاهده پیوست 258620
مثل این...در واقع باید آخرش steady بشه ولی نوسانی در میاد

گاهی اوقات روشهای ضمنی چنین جوابی میدن. اگه روشهای صریح به جواب همگرا بشن، جوابشون احتمالاً چنین مشکلی نخواهد داشت. واسه همین، اگه ode15s استفاده کردید، به جاش، از ode45 و ode23 رو تست کنید ببینید جواب همگرا میشه یا نه.
 

Similar threads

بالا