سوالات و مشکلات مدل سازی و کدنویسی در نرم افزار متلب - Matlab - تخصصی مهندسی شیمی

negin1313

عضو جدید
اصول حل مسئله، اینه که شما یه الگوریتم قوی رو رسم کنید توی ذهنتون، و طبق الگوریتم پیش برین
وقتی الگوریتم درست بشه، خود بخود توی محیط کامپیوتر برنامه رو می‌نویسین



مشکل همینه من نمیدونم چی کار باید کنم شاید اگر یه کتاب با یه عالمه مسئله حل شده باشه بتونه کمکم کنه انا هنوز چنین چیزی پیدا نکردم
 

JU JU

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

کتابای الگوریتمی مفیدی توی بازار هست، ولی باز باید ابتدا مسایل رو حل کنی و بعدش الگوریتمش رو بکشی و بنویسیش، اینطوری دیگه الگوریتم رو توی ذهنت حل می‌کنی
 

jadeye paeezi

کاربر بیش فعال
salam hamed jan,dastet dara nakone kheili aly bod tanha bakhshe marbot be sharayete marzio nafahmidam chejori taeein kardi!!maghadire 100000 ro a zkoja avordi???????
man tebghe sharayete marzie masale & help matlab injori neveshtam fek mikonid doroste?
∂T/∂r(0,t)= 0
T(1,t)=100
p1=0,q1=1,pr=0,qr=100
 

msn_syst3m

عضو جدید
بچه ها کسی کتاب فارسی در مورد neural network می شناسه؟
کسی این رو جایی کار کرده؟ پروژه ای هست؟
کسی می تونه این رو یه توضیح به من بده : help>predective control
مثال راکتوره
 

ous

عضو جدید
سلام
در مورد اموزش gui matlab کسی کتاب یا pdf داره؟ اگه بزارین ممنون میشم
 

chem.eng86

عضو جدید
پیشنهاد

پیشنهاد

(MATLAB) نام یکی از نرم‌افزارهای رایانه‌ای برای انجام محاسبات ریاضی است. واژه matlab هم به معنی محیط محاسبات رقمی و هم به معنی خود زبان برنامه‌نویسی مربوطه است از ترکیب دو واژهٔ MATrix و LABratuary ایجاد شده است. این نام حاکی از رویکرد ماتریس محور برنامه است، که در آن حتی اعداد عادی هم به عنوان ماتریس در نظر گرفته می‌شوند.

با نرم‌افزار matlab می‌توان ماتریس‌ها را به راحتی تغییر داد، توابع یا داده‌ها را ترسیم کرد، الگوریتم‌ها را اجرا کرد و همچنین صفحات رابط میان کاربر و رایانه ایجاد کرد.


متلب که از محصولات شرکت مث‌ورکس (The MathWorks) است، برای گروه‌های مختلف مهندسان رشته‌های مختلف از جمله مهندسی برق، مکانیک، کامپیوتر و ... کاربرد بسیاری دارد.

******************************************************************************************
سلام. مرسی از این که این فعالیت رو شروع کردین.می خواستم بگم متن های لاتینی که می نویسین برعکس خونده می شن، میشه به این نکته هم دقت کنید و البته اگه برای نکات متذکره در نوشتهاتون مثال هم بذارین که دیگه عالی می شه.
 

farzadaction

عضو جدید
كنترل فرايند

كنترل فرايند

لطفا درس كنترل فرايند رو بيشتر با مطلب توصيح دهيد، مخصوصا استفاده از PI & PID در سيمولينك.

مثال هاتون رو هم بيستر كنيد.

بازم دستتون درد نكنه.;)
 

setare3

عضو جدید
:mad:
جناب یونبفاینر اول همین تاپیک جزوه آموزشی رو قراردادن.
سلام خسته نباشين من ميخواستم معادله ردليش كوانگ روبانرم افزار مطلب محاسبه كنم يه كم مشكل دارم اگه زحمتي نيست راهنماييم كنيدپروزه ي كارگاهمه وقت زيادي ندارم
كيست مرا ياري دهد:(:(:warn:
 

setare3

عضو جدید
بااستفاده از رانگ كوتاي مرتبه 4

بااستفاده از رانگ كوتاي مرتبه 4

:que::que::que::que:
سلام خسته نباشين حل اين مساله رو بانرم افزار مطلب ميخوام
(dy=(x+y)/sqrt(x+y^2

?=(y(0)=1 ,h=0.2, y(1
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
:que::que::que::que:
سلام خسته نباشين حل اين مساله رو بانرم افزار مطلب ميخوام
(dy=(x+y)/sqrt(x+y^2

?=(y(0)=1 ,h=0.2, y(1

اول سمت راست معادله رو تعريف كنيد:
کد:
function yprime=simpleq(x,y)
yprime=(x+y)./sqrt(x+y.^2);

بعد برنامه اصلي رو بنويسيد:
کد:
% mainODEsetare3
clear, clc, clf, close all

[x,y]=ode45(@simpleq,0:0.2:1,1);

disp('---------------')
disp('   x       y')
disp('---------------')
for k=1:length(x)
    fprintf('  %3.1f   %6.4f\n',x(k),y(k))
end
disp('---------------')

plot(x,y,'o-')
xlabel('x'),ylabel('y')

حالا اين برنامه آخري رو توي متلب اجرا كنيد و خروجيها رو ببينيد.
 

sepantaaa

عضو جدید
کاربر ممتاز
سلام به بچه های با حال

سلام به بچه های با حال

سلام بچه ها خسته نباشین اساتید متلب این سوال رو می خواستم اگه زحمتی نیست برنامه متلبشو برامون بذارین اگر کسی هست کمک کنه ضرایب فوریه و سری فوریه ی تابع f(x)=x^2*e^ -x

x بین -3 و +3 هست
دست نویس حلش کردیم خیلی راه حل داره فقط 8 تا انتگرال جز به جز باید برای اولی حل کنیملطفا گرافش رو هم بنویسین و رسم کنین برای 3 جمله و 35 و 110 جملهبا تشکر از زحمات شما دوستان زحمت کش گرانقدر
 

mohandes-87

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

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام بچه ها خسته نباشین اساتید متلب این سوال رو می خواستم اگه زحمتی نیست برنامه متلبشو برامون بذارین اگر کسی هست کمک کنه ضرایب فوریه و سری فوریه ی تابع f(x)=x^2*e^ -x

x بین -3 و +3 هست
دست نویس حلش کردیم خیلی راه حل داره فقط 8 تا انتگرال جز به جز باید برای اولی حل کنیملطفا گرافش رو هم بنویسین و رسم کنین برای 3 جمله و 35 و 110 جملهبا تشکر از زحمات شما دوستان زحمت کش گرانقدر


  • در خارج از بازه 3- و 3 تابع رو تعريف نكرديد چطوري تغيير مي‏كنه.
  • تابع بازگرد هست يا نه؟ اگه هست دوره تناوبش چنده؟
  • محاسبه انتگرالهاش به روش عددي باشه يا روش دقيق؟ اگه روش عددي مي‏خوايد باشه، به چه روشي؟
 

moein.m

عضو جدید
سلام من میخوام این معادلرو با مطلب فیت کنم هر کاری کردم نشد:
y^2=(a+c*x^2+e*x^3)/(1+b*x^2+d*x^3+f*x^3)
چه کنم؟
 

meytim

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

حداقل مربعات چي؟ مجموع خطا؟ يا چيز ديگري؟ اگه حداقل مجموع مربعات خطا منظورتون هست، ارتباطش با تابع خطي چيه؟
...
در كل شما چند تا واژه كليدي رو اينجا نوشتيد، بدون اينكه ارتباط منطقي بينشون رو مشخص كنيد. دقيقاً بنويسيد كه چي مي‏خوايد.
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام من میخوام این معادلرو با مطلب فیت کنم هر کاری کردم نشد:
y^2=(a+c*x^2+e*x^3)/(1+b*x^2+d*x^3+f*x^3)
چه کنم؟

حرفتون بي‏معنيه. ايني كه نوشتيد يعني چي؟ قبل از اينكه مسأله‏اي رو حل كنيد، اول بايد خود مسأله رو بفهميد. اگه نتونيد منظورتون رو درست بيان كنيد، فكر نكنم صورت مسأله رو متوجه شده باشيد.
 

mohandes-87

عضو جدید
سلام مرسی ازتوجهتون . منظورم اینه که مثلا 10مقداربرای xتعریف کنیدومقدارهایی هم برای yبعدمجموع حداقل مربعات رو براش حساب کنیدوبعدنمودارش رورسم کنید دقیقا همون چیزیه که تو محاسبات عددی خوندیم
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام مرسی ازتوجهتون . منظورم اینه که مثلا 10مقداربرای xتعریف کنیدومقدارهایی هم برای yبعدمجموع حداقل مربعات رو براش حساب کنیدوبعدنمودارش رورسم کنید دقیقا همون چیزیه که تو محاسبات عددی خوندیم

اگر درست متوجه شده باشم (چون هنوز هم بيانتون از مسأله ناقصه)، جواب سؤال شما در لينك زير هست.

http://www.www.iran-eng.ir/showpost.php?p=713559&postcount=11

البته براي اينكار از تابعهاي موجود در متلب استفاده شده.
 

moein.m

عضو جدید
حرفتون بي‏معنيه. ايني كه نوشتيد يعني چي؟ قبل از اينكه مسأله‏اي رو حل كنيد، اول بايد خود مسأله رو بفهميد. اگه نتونيد منظورتون رو درست بيان كنيد، فكر نكنم صورت مسأله رو متوجه شده باشيد.

منظورم برازش منحنی هست با استفاده از curve fitting toolbox این معادلات رو نمیشه فیت کرد
اگه منظورتون مقادیر x و y هست فقط راه حل رو بدونم کافیه خواستید امتحان کنید داده دلخواه بدید
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام بچه ها خسته نباشین اساتید متلب این سوال رو می خواستم اگه زحمتی نیست برنامه متلبشو برامون بذارین اگر کسی هست کمک کنه ضرایب فوریه و سری فوریه ی تابع f(x)=x^2*e^ -x

x بین -3 و +3 هست
دست نویس حلش کردیم خیلی راه حل داره فقط 8 تا انتگرال جز به جز باید برای اولی حل کنیملطفا گرافش رو هم بنویسین و رسم کنین برای 3 جمله و 35 و 110 جملهبا تشکر از زحمات شما دوستان زحمت کش گرانقدر

  • در خارج از بازه 3- و 3 تابع رو تعريف نكرديد چطوري تغيير مي‏كنه.
  • تابع بازگرد هست يا نه؟ اگه هست دوره تناوبش چنده؟
  • محاسبه انتگرالهاش به روش عددي باشه يا روش دقيق؟ اگه روش عددي مي‏خوايد باشه، به چه روشي؟
من در حال حاضر عسلویه هستم و کمی وقت داشتم و جواب این مسأله رو با یک فرضیاتی می‏نویسم. البته متلب ندارم که اجراش کنم؛ امیدوارم که خطایی نداشته باشه.

  • فرض می‏‏کنم تابع بازگرد هست و دوره تناوبش رو 6 می‏گیرم.
  • برای راحتی از دستور سری فوریه مختلط ضرایب رو حساب میکنم.
  • انتگرالها رو به روش دستی و دقیق حساب می‏کنیم.
با این فرضیات، تابعی می‏نویسیم که ضرایب پیشگفته رو محاسبه کنه:
کد:
function cn=fsccoef(n,L)
a=1+i*n*pi/L;
cn=-(L^2./a+2*L./a.^2+2./a.^3).*exp(-a*L)+(L^2./a-2*L./a.^2+2./a.^3).*exp(a*L);
cn=cn/(2*L);
توضیح:

  • امیدوارم که به ازای هیچ کدام از مقادیر n که به این تابع میدیم مشکلی پیش نیاد. باید متلب باشه و تست کرد. شما تستش کنید.
  • از کارگرهای درایه به درایه استفاده شده تا حجم برنامه‏نویس کم بشه و سرعتش هم کم نشه.
  • روش انتگرالگیری خیلی ساده است، و از تعمیم یک روش که در کتاب توماس و بعضی کتابهای دیگه درس داده به دست میاد. این روش رو من حدود 10 سال پیش ابداع کردم و به خیلیها یاد دادم، اما هنوز وقت نکردم روشش رو روی کاغذ و برای دیگران توضیح بدم. اگه وقت پیدا کردم، می‏نویسمش.
با استفاده از این تابع، تابع دیگری مینویسیم که مقادیر سری فوریه رو در یک سری از نقاط که بهش می‏دیم حساب کنه.
کد:
function y=fsvalv(x,n,L)
cn=fsccoef(-n:n,L);
nx=length(x);
y=zeros(size(x));
for k=1:nx
  y(k)=cn*exp(i*n*pi*x(k)/L).';
end
توضیح:

  • بدون حلقه for هم می‏شه تابع رو نوشت.
حالا برنامه‏ای می‏نویسیم که کاری رو که خواسته شده بود انجام بده:
کد:
% main
L=3;
x=linspace(-L,L,40);
fe=x.^2.*exp(-x);
f3=fsvalv(x,3,L);
f35=fsvalv(x,35,L);
f110=fsvalv(x,110,L);

plot(x,fe,x,f3,':',x,f35,'--',x,f110,'.-')
xlabel('x'),ylabel('f(x)'),title('Fourier Series Approximations')
legend('x^2e^{-x}','3 terms FS approx',...
           '35 terms FS approx','110 terms FS approx',0)

توضیح:

  • این برنامه رو باید اجرا کنید و خروجی رو ببینید.
  • باقی چیزهایی که گفته شده خیلی ساده هست، می‏تونید بهش اضافه کنید.
  • فکر کنم کتاب در کتاب Mastering MATLAB با استفاده از FFT برنامه‏هایی نوشته شده که همین کار رو انجام می‏دن. البته تقریبی هستند، چون از FFT استفاده شده.
اگه خواستید در مورد سری فوریه مطالعه کنید می‏تونید به ویکیپدیا مراجعه کنید.
 
آخرین ویرایش:

ahmad61

عضو جدید
سلام به همه اساتيد
يه سوال دارم
اول بگم هدف پيدا كردن راهي براي درون يابي (Interpolation) است:wallbash:

فرض كنيد يه ماتريس A(6x1 داشته باشيم كه توسط يك ماتريس k(6x6 به ماتريس B(6x1 از طريق رابطه A=KxB تعريف شده باشد
طي يك آزمايش ما مقادير A و B را داريم و به راحتي متوانيم ماتريس K را پيدا كنيم
حال فرض كنيد آزمايش فوق را 100 بار انجام دهيم

چطور مي توانيم بين اين صد مجموعه K ميان يابي كنيم؟:confused:
آيا راهي در مت لب وجود دارد؟

اگي كسي راهي بلده بگه ! خيلي نياز دارم:cry:
پيشاپيش ممنون
email: andytagi@yahoo.com
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام بچه ها خسته نباشین اساتید متلب این سوال رو می خواستم اگه زحمتی نیست برنامه متلبشو برامون بذارین اگر کسی هست کمک کنه ضرایب فوریه و سری فوریه ی تابع f(x)=x^2*e^ -x

x بین -3 و +3 هست
دست نویس حلش کردیم خیلی راه حل داره فقط 8 تا انتگرال جز به جز باید برای اولی حل کنیملطفا گرافش رو هم بنویسین و رسم کنین برای 3 جمله و 35 و 110 جملهبا تشکر از زحمات شما دوستان زحمت کش گرانقدر

در پست 161 تابع fsvalv متأسفانه يك اشتباه داشت، كه اصلاح‏شده اون رو اينجا مي‏ذارم.
کد:
function y=fsvalv(x,n,L)
cn=fsccoef(-n:n,L);
nx=length(x);
y=zeros(size(x));
for k=1:nx
    y(k)=cn*(exp(i*(-n:n)*pi*x(k)/L).');
end

حالا ديگه برنامه تكميله؛ تست كردم. شما هم اجرا كنيد و خروجيش رو ببينيد.
 

meytim

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

clarification

سلام من میخوام این معادلرو با مطلب فیت کنم هر کاری کردم نشد:
y^2=(a+c*x^2+e*x^3)/(1+b*x^2+d*x^3+f*x^3)
چه کنم؟

منظورم برازش منحنی هست با استفاده از curve fitting toolbox این معادلات رو نمیشه فیت کرد
اگه منظورتون مقادیر x و y هست فقط راه حل رو بدونم کافیه خواستید امتحان کنید داده دلخواه بدید

رابطه‏اي رو كه مد نظرتون بوده فكر كنم اشتباه نوشتيد، از نو با دقت بنويسيد ببينم چيه؛
ـ توي مخرج چرا دو تا جمله هم‏نما نوشتي؟
ـ سمت چپ برابري y به توان 2 هستش؟

مي‏تونيد از محيط فرمول‏نويسي توي word استفاده كنيد، يا با دست رو كاغذ بنويسيد و اسكن كنيد يا با موبايل عكس بگيريد و بذاريد اينجا.
 
آخرین ویرایش:

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
سلام به همه اساتيد
يه سوال دارم
اول بگم هدف پيدا كردن راهي براي درون يابي (Interpolation) است:wallbash:

فرض كنيد يه ماتريس A(6x1 داشته باشيم كه توسط يك ماتريس k(6x6 به ماتريس B(6x1 از طريق رابطه A=KxB تعريف شده باشد
طي يك آزمايش ما مقادير A و B را داريم و به راحتي متوانيم ماتريس K را پيدا كنيم
حال فرض كنيد آزمايش فوق را 100 بار انجام دهيم

چطور مي توانيم بين اين صد مجموعه K ميان يابي كنيم؟:confused:
آيا راهي در مت لب وجود دارد؟

اگي كسي راهي بلده بگه ! خيلي نياز دارم:cry:
پيشاپيش ممنون
email: andytagi@yahoo.com


  • شما يك دستگاه معادلات خطي كه از 6 معادله و 36 مجهول تشكيل شده داريد كه بهش مي‏گن "كم‏شناخته" يا underdetermind. معادله‏هاي چنين دستگاهي يا ناسازگارند و هيچ جوابي ندارند، يا سازگارند و بيشمار جواب دارند. حالا شما چطوري به‏راحتي جوابش رو پيدا مي‏كنيد خودش يك مسأله است.
  • در مورد ميانيابي هم متلب به اندازه كافي تابع داره. ولي قبلش بايد بدونيم كه توي مسأله ميانيابي كه بيان كرديد، معلومات مسأله چي هستند و چه چيزي رو بايد پيدا كرد؟ اينها رو بايد مشخص كنيد.
 

sepantaaa

عضو جدید
کاربر ممتاز
سلام

سلام

سلام به همه
می خواستم اگه زحمتی نیست این سوال رو برام گرافش رو رسم کنین
این سوال معادله ی حرارت ریاضی مهندسی که حل شده و حالا گرافش رو میخوایم
ممنون می شم کمک کنین
u(x,t)=[-5sin*k*pi/3*pi*(n^2-pi^2)*sin(1.2*n*t)*sin*n*x
ضميمه هاي كنوني (22.9 كيلو بايت)
http://www.www.www.iran-eng.ir/images/attach/jpg.gif 26022009346.jpg (22.9 كيلو بايت)
 

پیوست ها

  • 26022009346.jpg
    26022009346.jpg
    22.9 کیلوبایت · بازدیدها: 0
آخرین ویرایش:

سید رسول

عضو جدید
اینم نتیجه رسم ریشه ها توسط MATLAB


سلام حامد جان!
من فقط یه مثال حل شده از روش دوبخشی (تنصیف) تو محاسبات عددی میخوام!
اگه لطف کنی ممنون میشم! فقط خیلی عجله دارم! مسئله مرگ و زندگیه! :)
اینم ایمیلمه:
 
آخرین ویرایش توسط مدیر:

سید رسول

عضو جدید
سلام! خودم با کمک یه ملتی حلش کردم! :)
برای تابع x^3-3x=0 تو بازه ی [1,2].
[FONT=&quot]clear[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]clc[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]syms('x','y')[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]y=inline('x.^3-3');[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]a=1;[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]b=2;[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]eps=0.00001;[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]c=(a+b)/2[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]if abs(y(c))<eps[/FONT][FONT=&quot][/FONT]​
[FONT=&quot] disp(c)[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]end[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]while abs(y(c))>eps[/FONT][FONT=&quot][/FONT]​
[FONT=&quot] if y(c)*y(a)>0[/FONT][FONT=&quot][/FONT]​
[FONT=&quot] a=c;[/FONT][FONT=&quot][/FONT]​
[FONT=&quot] c=(a+b)/2;[/FONT][FONT=&quot][/FONT]​
[FONT=&quot] else[/FONT][FONT=&quot][/FONT]​
[FONT=&quot] b=c;[/FONT][FONT=&quot][/FONT]​
[FONT=&quot] c=(a+b)/2;[/FONT][FONT=&quot][/FONT]​
[FONT=&quot] end[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]end[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]fprintf('root of function is :%g\n',c)[/FONT][FONT=&quot][/FONT]​
[FONT=&quot] اینم جواب آخرش!
[/FONT]​
[FONT=&quot]root of function is :1.44225[/FONT]​
 

حــامد

مدیر بازنشسته
کاربر ممتاز
سلام! خودم با کمک یه ملتی حلش کردم! :)
برای تابع x^3-3x=0 تو بازه ی [1,2].
[FONT=&quot]clear[/FONT]​
[FONT=&quot]clc[/FONT]​
[FONT=&quot]syms('x','y')[/FONT]​
[FONT=&quot]y=inline('x.^3-3');[/FONT]​
[FONT=&quot]a=1;[/FONT]​
[FONT=&quot]b=2;[/FONT]​
[FONT=&quot]eps=0.00001;[/FONT]​
[FONT=&quot]c=(a+b)/2[/FONT]​
[FONT=&quot]if abs(y(c))<eps[/FONT]​
[FONT=&quot] disp(c)[/FONT]​
[FONT=&quot]end[/FONT]​
[FONT=&quot]while abs(y(c))>eps[/FONT]​
[FONT=&quot] if y(c)*y(a)>0[/FONT]​
[FONT=&quot] a=c;[/FONT]​
[FONT=&quot] c=(a+b)/2;[/FONT]​
[FONT=&quot] else[/FONT]​
[FONT=&quot] b=c;[/FONT]​
[FONT=&quot] c=(a+b)/2;[/FONT]​
[FONT=&quot] end[/FONT]​
[FONT=&quot]end[/FONT]​
[FONT=&quot]fprintf('root of function is :%g\n',c)[/FONT]​
[FONT=&quot] اینم جواب آخرش!
[/FONT]​
[FONT=&quot]root of function is :1.44225[/FONT]​


خیلی سخت گرفتی به خودت اینجوری راحت تره :
اگه ریشه های معادله رو میخوای که اشتباه حلش کردی:
کد:
>> a=[1 0 -3 0]

a =

     1     0    -3     0

>> roots(a)

ans =

         0
    1.7321
   -1.7321
 

حــامد

مدیر بازنشسته
کاربر ممتاز
سلام حامد جان!
من فقط یه مثال حل شده از روش دوبخشی (تنصیف) تو محاسبات عددی میخوام!
اگه لطف کنی ممنون میشم! فقط خیلی عجله دارم! مسئله مرگ و زندگیه! :)
اینم ایمیلمه:
کد:
[FONT=Courier New][B]function [c,yc,err,P] = bisect(f,a,b,delta)
%---------------------------------------------------------------------------
%BISECT   The bisection method is used to locate a root.
% Sample calls
%   [c,yc,err] = bisect('f',a,b,delta)
%   [c,yc,err,P] = bisect('f',a,b,delta)
% Inputs
%   f       name of the function
%   a       left endpoint
%   b       right endpoint
%   delta   convergence tolerance
% Return
%   c       solution: the root
%   yc      solution: the function value
%   err     error estimate in c
%   P       History vector of the iterations
%

%---------------------------------------------------------------------------

P = [a b];
ya = feval(f,a);
yb = feval(f,b);
if ya*yb > 0, break, end
max1 = 1 + round((log(b-a)-log(delta))/log(2));
for k=1:max1,
  c  = (a+b)/2;
  yc = feval(f,c);
  if  yc == 0,
    a = c;
    b = c;
  elseif  yb*yc > 0,
    b = c;
    yb = yc;
  else
    a = c;
    ya = yc;
  end
  P = [P;a b];
  if b-a < delta, break, end
end
c  = (a+b)/2;
yc = feval(f,c);
err = abs(b-a)/2;


echo on; clc;
%---------------------------------------------------------------------------

%---------------------------------------------------------------------------

clc; clear all; format long;

% - - - - - - - - - - - - - - - - - - - - - - -
%
% This program implements the bisection method.
%
%
% Define and store f(x) in the M-file  f.m
%
% function y = f(x)
% y = x.*sin(x) - 1;

pause % Press any key to continue.

clc;
%.......................................................................
% Begin a section which enters the function(s) necessary for the example
% into M-file(s) by executing the diary command in this script file.
% The preferred programming method is not to use these steps.
% One should enter the function(s) into the M-file(s) with an editor.
delete output
delete f.m
diary  f.m; disp('function y = f(x)');...
            disp('y = x.*sin(x) - 1;');...
diary off;
% Remark. f.m and bisect.m are used for Algorithm 2.2
f(0); % Test for file f.m
pause % Press any key to see the graph y = f(x).

clc;
% ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
% Prepare graphics arrays to plot y = f(x).
% ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
a = 0;
b = 2;
h = (b-a)/150;
X = a:h:b;
Y = f(X);

clc; figure(1); clf;

%~~~~~~~~~~~~~~~~~~~~~~~
% Begin graphics section
%~~~~~~~~~~~~~~~~~~~~~~~
a =  0;
b =  2;
c = -1;
d =  1;
whitebg('w');
plot([a b],[0 0],'b',[0 0],[c d],'b');
axis([a b c d]);
axis(axis);
hold on;
plot(X,Y,'-g');
xlabel('x');
ylabel('y');
title('Graph of y = f(x).');
grid;
hold off;

figure(gcf); pause % Press any key to continue.

clc;

% - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%
% Example 2.6, page 58.  Use the bisection method to locate
% a zero of the function  f(x) = x sin(x) - 1.
%
% Enter the starting endpoints for [a,b] in  a  and  b
%
% Enter the tolerance in  delta

a = 0;  
b = 2;  
delta = 1e-6;

[p,yp,err,P] = bisect('f',a,b,delta);

pause % Press any key for the list of iterations.

clc;
% ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
% Prepare arrays to graph and print results.
% ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[m1 m2] = size(P);
n0 = min(7,m1);
Xc = (P(1:n0,1)+P(1:n0,2))'/2;
X0 = [a,Xc,b];
Z0 = zeros(1,n0+2);

clc; figure(2); clf;

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% Begin graphics section for the results.
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a =  0;
b =  2;
c = -1;
d =  1;
whitebg('w');
plot([a b],[0 0],'b',[0 0],[c d],'b');
axis([a b c d]);
axis(axis);
hold on;
plot(X,Y,'-g',X0,Z0,'or');
xlabel('x');
ylabel('y');
title('Graphical analysis for the bisection method.');
grid;
hold off;

figure(gcf); pause % Press any key to continue.

clc;
%............................................
% Begin section to print the results.
% Diary commands are included which write all
% the results to the Matlab textfile   output
%............................................
Mx1 = 'Iterations for the bisection method.';
Mx2 = '     a                  b';
Mx3 = 'The approximate root is:';
Mx4 = 'The error estimate for p is  ~ ';
clc,echo off,diary output,...
disp(''),disp(Mx1),disp(''),disp(Mx2),disp(P),...
disp(''),disp(Mx3),disp(''),disp('p = '),disp(p),...
disp('f(p) = '),disp(yp),disp(''),...
disp([Mx4,num2str(err)]),diary off, echo on[/B][/FONT]
 
آخرین ویرایش توسط مدیر:

sepantaaa

عضو جدید
کاربر ممتاز
دوباره سلام

دوباره سلام

سلام به همه
می خواستم اگه زحمتی نیست این سوال رو برام گرافش رو رسم کنین
این سوال معادله ی حرارت ریاضی مهندسی که حل شده و حالا گرافش رو میخوایم
ممنون می شم کمک کنین
u(x,t)=[-5sin*k*pi/3*pi*(n^2-pi^2)*sin(1.2*n*t)*sin*n*x
ضميمه هاي كنوني (22.9 كيلو بايت)
http://www.www.www.iran-eng.ir/images/attach/jpg.gif 26022009346.jpg (22.9 كيلو بايت)
تصاوير كوچک فايل ضمیمهhttp://www.www.www.iran-eng.ir/attachment.php?attachmentid=21044&stc=1&thumb=1&d=1273985096
 
بالا