رسم انتگرال فوریه در Matlab

ostadonline

عضو جدید
سلام به همه.
من فرمول انتگرال فوریه یه تابع رو دارم و میخواستم به ازای بازه های مختلف اون رو رسم کنم.
فرمول تابع انتگرال اینه: (بر حسب w)
کد:
((integral(2/(pi*w)*sin(w)*cos(w*x
مثلا در بازه 0 تا 10.
من یه function براش نوشتم و وقتی اجراش میکنم میگه که جواب صریحی برای این انتگرال وجود نداره. مشکل اینجا نیست. من کاری با جوابش ندارم. مشکل اینه که من چجوری باید رسمش کنم. با دستورات plot و fplot نشد. میشه راهنمایی بفرمایید.
مرسی...
کد:
function k = Untitled2( ~ )
syms x w
k=int(2/(pi*w)*sin(w)*cos(w*x),w,0,10);
end
 
آخرین ویرایش:

رضا1387

عضو جدید
ترسیم توابع دلخواه فوریه

ترسیم توابع دلخواه فوریه

چند وقت پیش یه اسکریپت برای ترسیم توابع فوریه توابع دلخواه نوشتم هر کاری کردم نتونستم اینجا برات بفرستم اگر خواستی یه میل بزن
RAYSOLM@YAHOO.COM
تا فایلش رو برات بفرستم.
کد هایی که نوشتی هم چک نکردم. وقت نیست.:D
 

pinion

کاربر حرفه ای
کاربر ممتاز
بخشید اینو ببینید چجوره :

syms x w
a=input('pls enter hadde paein = ');
b=input('pls enter hadde balal = ');
k=int(2/(pi*w)*sin(w)*cos(w*x),w,a,b);
ezplot(k)
title('nemoodare moadele');


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

برای رسم نمودار باید یکم صبر کنید ...
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
اشتباهی که شما و اکثر کسانی که میان سراغ متلب دارن اینه که از جعبه ابزار نمادین استفاده می‏کنن. سفارش من اینه که به جاش از تابعهایی که محاسبات رو به صورت عددی انجام می‏دن استفاده کنید. یعنی به جای int از trapz، quad، quadl متلب، یا simpt، simpf، simpv، galeg، gaher، galag کتاب شگردهای عددی استفاده کنید. در مورد کشیدن نمودار هم همین طور؛ به جای fplot یا ezplot از plot استفاده کنید. مسأله شما با سه تا فایل زیر حل می‏شه.​
کد:
  [FONT=&quot]function y=intgrnd(w)[/FONT]
  [FONT=&quot]global xtmp[/FONT]
  [FONT=&quot]y=2*sin(w)*cos(w*xtmp) /(pi*w);[/FONT]

کد:
  [FONT=&quot]function I=furint(x)[/FONT]
  [FONT=&quot]global xtmp[/FONT]
  [FONT=&quot]xtmp=x;[/FONT]
  [FONT=&quot]I=galag(@intgrnd);[/FONT]

کد:
  [FONT=&quot]% my1stTry[/FONT]
  [FONT=&quot]x=0:0.1:10;[/FONT]
  [FONT=&quot]f=zeros(size(x));[/FONT]
  [FONT=&quot]for k=1:length(x)[/FONT]
  [FONT=&quot]    f(k)=furint(x(k));[/FONT]
  [FONT=&quot]end[/FONT]
  
  [FONT=&quot]Plot(x,y)[/FONT]
ـ با توجه به اینکه بازه انتگرال از 0 تا ∞ باید باشه، از تابع galag کتاب شگردهای عددی استفاده شده.​
ـ تابع galag روش گوس ـ لاگر 8 نقطه‏ای هست؛ اگه دقت بیشتر لازم داری باید یکی دیگه تهیه کنی، یا اینکه تعداد نقاطش رو از هندبوک دربیاری و بهش اضافه کنی.​
ـ من الآن روی یک شناور توی خلیج فارس هستم و دسترسی به نرم‏افزار متلب ندارم. واسه همین تستش نکردم؛ امیدوارم درست کار کنه. البته نمودار تغییرات انتگران رو توی اکسل کشیدم و چک کردم؛ رفتار مورد انتظار رو برای معنی داشتن انتگرال فوریه داشت.​
ـ برای راحتی شما تابع galag کتاب شگردهای عددی رو اینجا گذاشتم:​
کد:
  [FONT=&quot]function S=GaLag(Integrand)[/FONT]
  [FONT=&quot]%GALAG Gauss-Laguerre rule for evaluating Integral of a function.[/FONT]
  [FONT=&quot]%   I=GALAG(FUN) evaluates integral of function FUN from 0 to inf.[/FONT]
  [FONT=&quot]%   The function Y = FUN(X) should accept a vector argument X and return[/FONT]
  [FONT=&quot]%   a vector result Y, the integrand evaluated at each element of X.[/FONT]
  [FONT=&quot]%[/FONT]
  [FONT=&quot]%   Numerical Recipes for Solving Engineering Problems using MATLAB[/FONT]
  [FONT=&quot]%   By: Mehdi Mosafer, 1st ed., 2002.[/FONT]
  [FONT=&quot]w=[0.4377234105;1.033869347;1.669709765;2.376924702;...   [/FONT]
  [FONT=&quot]      3.208540913;4.268575510;5.818083368;8.906226215];[/FONT]
  [FONT=&quot]x=[0.1702796323;0.9037017768;2.251086630;4.266700170;...   [/FONT]
  [FONT=&quot]      7.045905402;10.75851601;15.74067864;22.86313174];[/FONT]
  [FONT=&quot]S=w.'*feval(Integrand,x);[/FONT]
 

pinion

کاربر حرفه ای
کاربر ممتاز
دست شما درد نکنه

من خودم شخصا واقعا استفاده کردم

تا حالا این روش رو ندیده بودم
 

meytim

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

اصلاحيه

[FONT=&quot]من ديروز از شناور پياده شدم و بعد از دسترسي به متلب، برنامه رو توي متلب چك كردم؛ متأسفانه يك كم اشكال داشت. اين اصلاح شده‏هاش:[/FONT]
کد:
  [COLOR=blue][FONT=&quot]function[/FONT][/COLOR][COLOR=black][FONT=&quot] y=intgrnd(w)[/FONT][/COLOR]
  [COLOR=blue][FONT=&quot]global[/FONT][/COLOR][COLOR=black][FONT=&quot] xtmp[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]y=2*sin(w).*cos(w*xtmp)./(pi*w);[/FONT][/COLOR]

کد:
  [COLOR=blue][FONT=&quot]function[/FONT][/COLOR][COLOR=black][FONT=&quot] I=furint(x)[/FONT][/COLOR]
  [COLOR=blue][FONT=&quot]global[/FONT][/COLOR][COLOR=black][FONT=&quot] xtmp[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]xtmp=x;[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]I=GaLag(@intgrnd);[/FONT][/COLOR]

کد:
  [COLOR=forestgreen][FONT=&quot]% my2ndTry[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]x=0:0.01:10;[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]f=zeros(size(x));[/FONT][/COLOR]
  [COLOR=blue][FONT=&quot]for[/FONT][/COLOR][COLOR=black][FONT=&quot] k=1:length(x)[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]    f(k)=furint(x(k));[/FONT][/COLOR]
  [COLOR=blue][FONT=&quot]end[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]plot(x,f)[/FONT][/COLOR]

اين هم نمودارش:​

 

Similar threads

بالا