حل معادلات در متلب
در متلب، می توان با دو دستور solve یا fzero ، معادلات شامل متغیرها را حل نمود.
دستور solve :
دستور solve در متلب، برای حل معادلات چندجمله ای به کار می رود.
نتیجه :
5^(1/2) + 1
1 – 5^(1/2)
دقت شود که معادله باید بین علامت ' قرار بگیرد.
دو پاسخ معادله در خروجی نمایش داده شده است. دو پاسخ معادله، پاسخ های دقیق معادله می باشند و چنانچه بخواهیم آنها را به صورت عددی ببینیم باید دستور double(ans) و یا vpa(ans) را اجرا کنیم. به عنوان مثال با دستور double داریم :
B=double(A)
نتیجه :
5^(1/2) + 1
1 - 5^(1/2)
B =
3.2361
-1.2361
و با دستور vpa داریم :
B=vpa(A)
نتیجه :
5^(1/2) + 1
1 - 5^(1/2)
B =
3.2360679774997896964091736687313
-1.2360679774997896964091736687313
دستور solve همچنین قادر است که معادلات شامل دو متغیر را حل نماید :
نتیجه :
exp(2*x - 1)
دقت شود چون می خواهیم متغیر y را بر حسب x به دست آوریم، باید عبارت 'y' را پس از معادله بنویسیم .
چنانچه دو معادله بر حسب x و y داشته باشیم، آنگاه می توان مقادیر دو متغیر x و y را به دست آورد :
نتیجه :
2*2^(1/2) + 1
1 - 2*2^(1/2)
y =
4*2^(1/2) + 7
7 - 4*2^(1/2)
این دو معادله دارای دو سری پاسخ است، پاسخ سری اول x(1) و y(1) و پاسخ سری دوم x(2) و y(2) می باشد. چنانچه پاسخ اول مورد نظر ما باشد، می نویسیم :
y1=y(1)
نتیجه :
2*2^(1/2) + 1
y1 =
4*2^(1/2) + 7
دقت شود که در کد قبل، پاسخ دو معادله را به بردار [x,y] نسبت دادیم و پاسخ ها در خروجی نمایش داده شدند. چنانچه پاسخ دو معادله را به بردار [x,y] نسبت ندهیم، آنگاه پاسخ ها در خروجی نمایش داده نمی شوند :
نتیجه :
x: [2x1 sym]
y: [2x1 sym]
برای دیدن مقادیر بردارهای x و y ، کافی است که دستورات solution.x و solution.y را اجرا کنید :
y=solution.y
نتیجه :
2*2^(1/2) + 1
1 - 2*2^(1/2)
y =
4*2^(1/2) + 7
7 - 4*2^(1/2)
پاسخ سری اول solution.x(1) و solution.y(1) و پاسخ سری دوم solution.x(2) و solution.y(2) می باشد. چنانچه پاسخ اول مورد نظر ما باشد می نویسیم :
y1=solution.y(1)
نتیجه :
2*2^(1/2) + 1
y1 =
4*2^(1/2) + 7
برخی معادلات نمی توانند به صورت سمبلیک حل شوند و در اینگونه موارد دستور solve سعی می کند که یک حل عددی را بیابد. به مثال زیر توجه کنید :
نتیجه :
1.1060601577062719106167372970301
در بعضی موارد، معادله بیش از یک پاسخ دارد و دستور solve پاسخی را برمی گرداند که مد نظر ما نبوده است. به عنوان مثال :
نتیجه :
0.5885327439818610774324520457029
به شکل زیر توجه کنید :

با توجه به شکل بالا، پاسخ دیگری مد نظر ما بوده است که حدود x=3 می باشد. چنانچه بخواهیم این پاسخ را به دست آوریم باید از دستور fzero در متلب استفاده کنیم که در ادامه در مورد آن توضیح خواهیم داد.
دستور fzero :
همان مثال قبل را این بار با fzero حل می کنیم و برای دستور fzero مشخص می کنیم که پاسخ نزدیک x=3 را بیابد :
نتیجه :
3.0964
بنابراین دستور fzero دقیقا همان پاسخ مد نظر ما که نزدیک x=3 می باشد را برگرداند.
دقت شود که در تعریف معادله، از علامت = استفاده نکردیم و دستور به طور خودکار، عبارت درون دو علامت ' را برابر صفر قرار می دهد.
کپی برداری از محتوای سایت کلیدستان، ممنوع بوده و پیگرد قانونی دارد. (تنها استفاده شخصی کاربر، مجاز است) (کپی برداری توسط سایر وب سایت ها = حرام) (بیشتر بدانید)


سلام و خسته نباشین .0=(0.4164sin(6t)+.017sin(14.49t
ببخشید من این معادله رو به این روشهایی که گفتین نمیتونم حل کنم


سلام میخاستم معادله x*tan(x)=3.896*10^-6 را چطور میشه حل کرد
مقادیر مختلف x را میخاستم
و میخاستم بدونم میشه رسمش کرد
با تشکر


سلام من با این کد ها مشکل دارم حل نمیشه
s=solve('(108354-Z0)*(-4.617*(cosd(p)*cosd(k))+0.392*(-cosd(p)*cosd(k))-151.992*(sind(p)))/(-4.617*(-cosd(w)*sind(p)*cosd(k)+sind(w)*sind(k))+0.392*(cosd(w)*sind(p)*sind(k)+sind(w)*cosd(k))-151.992*(cosd(w)*cosd(p)))=4296851-X0','(108354-Z0)*(-4.617*(sind(w)*sind(p)*cosd(k)+cosd(w)*sind(k))+0.392*(-sind(w)*sind(p)*sind(k)+cosd(w)*cosd(k))-151.992*(-sind(w)*cosd(p)))/(-4.617*(-cosd(w)*sind(p)*cosd(k)+sind(w)*sind(k))+0.392*(cosd(w)*sind(p)*sind(k)+sind(w)*cosd(k))-151.992*(cosd(w)*cosd(p)))=4233813-Y0','(123791-Z0)*(87.296*(cosd(p)*cosd(k))+(-0.309)*(-cosd(p)*cosd(k))-151.992*(sind(p)))/(87.296*(-cosd(w)*sind(p)*cosd(k)+sind(w)*sind(k))+(-0.309)*(cosd(w)*sind(p)*sind(k)+sind(w)*cosd(k))-151.992*(cosd(w)*cosd(p)))=4553579-X0','(123791-Z0)*(87.296*(sind(w)*sind(p)*cosd(k)+cosd(w)*sind(k))+(-0.309)*(-sind(w)*sind(p)*sind(k)+cosd(w)*cosd(k))-151.992*(-sind(w)*cosd(p)))/(87.296*(-cosd(w)*sind(p)*cosd(k)+sind(w)*sind(k))+(-0.309)*(cosd(w)*sind(p)*sind(k)+sind(w)*cosd(k))-151.992*(cosd(w)*cosd(p)))=4473130-Y0','(112791-Z0)*(83.690*(cosd(p)*cosd(k))+(-100.003)*(-cosd(p)*cosd(k))-151.992*(sind(p)))/(83.690*(-cosd(w)*sind(p)*cosd(k)+sind(w)*sind(k))+(-100.003)*(cosd(w)*sind(p)*sind(k)+sind(w)*cosd(k))-151.992*(cosd(w)*cosd(p)))=5483104-X0','(112791-Z0)*(83.690*(sind(w)*sind(p)*cosd(k)+cosd(w)*sind(k))+(-100.003)*(-sind(w)*sind(p)*sind(k)+cosd(w)*cosd(k))-151.992*(-sind(w)*cosd(p)))/(83.690*(-cosd(w)*sind(p)*cosd(k)+sind(w)*sind(k))+(-100.003)*(cosd(w)*sind(p)*sind(k)+sind(w)*cosd(k))-151.992*(cosd(w)*cosd(p)))=3900089-Y0')
s=[s.X0 x.Z0 s.p s.k s.w s.Y0]
تصویر ارور رو زمینه میکنم...
http://uupload.ir/files/tu0t_ewqe.jpg


سلام برای استفاده از genfis3 در متلب باید چ کدی بنویسم ؟من برای مدل انفیس ۷ورودی دارم ک درgenfis1 اخطار نبود حافظه میده .لطفا کمکم کنین...


سلام
من در حل معادله حالت موندم
یه سوال سه قسمته هست
تو قسمت اول حل از طریق معادله ردیچ وانگ
تو قسمت دوم حل از طریق ردیچ وانگ سو


سلام
من عین همین کد که اینجا هست رو توی کامند متلب کپی میکنم ولی برنامه هنگ میکنه!
A=solve('x^2-2*x-4=0');
B=double(A)


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