کلیدستان

نسخه‌ی کامل: مشکل در نوشتن برنامه سری فوریه در متلب
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام خدمت دوستان
من در برنامه نویسی متلب تازه واردم و به تازگی میخوام یاد بگیرمش چون پروژه دانشجویی خودم سری فوریه در متلب بود نحوه نوشتنش رو از این سایت یاد گرفتم ولی وقتی اجراش میکنم نتیجه درست از آب در نمیاد.
این برنامه متلب من :
کد:
clear
clc
syms x
f=sin(x);
N=10;
a_0=(1/2*pi)*int(f,-pi,pi);
for n=1:N
   a_n(n)=(1/pi)*int(f*cos(n*x),-pi,pi);
   b_n(n)=(1/pi)*int(f*sin(n*x),-pi,-pi);
end
a_n
b_n

f_new=a_0;
for n=1:N
   f_new=f_new+a_n(n)*cos(n*x)+b_n(n)*sin(n*x);
end
subs(f_new,x,5)
subs(f,x,5)

اینم نتیجش :
کد:
a_n =

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


b_n =

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


ans =

0


ans =

sin(5)


اینم نتیجه ای که درسته و درواقع باید اینو نشون میداد :
کد:
a_0 =
 
0
a_n =
 
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

b_n =
 
[ (5734161139222659*pi)/18014398509481984,0, 0, 0, 0, 0, 0, 0, 0, 0]

ans =
 
   -0.9589
   
   ans =
 
   -0.9589


لطفا راهنماییم کنین که ایراد از کجاست چون من تازه میخوام متلبو یادبگیرم و برام ضروری هم هست.
(۱۳۹۵/۱۰/۲۷, ۰۴:۳۶ ب.ظ)f4r3in نوشته: [ -> ]با سلام خدمت دوستان
من در برنامه نویسی متلب تازه واردم و به تازگی میخوام یاد بگیرمش چون پروژه دانشجویی خودم سری فوریه در متلب بود نحوه نوشتنش رو از این سایت یاد گرفتم ولی وقتی اجراش میکنم نتیجه درست از آب در نمیاد.
این برنامه متلب من :
کد:
clear
clc
syms x
f=sin(x);
N=10;
a_0=(1/2*pi)*int(f,-pi,pi);
for n=1:N
   a_n(n)=(1/pi)*int(f*cos(n*x),-pi,pi);
   b_n(n)=(1/pi)*int(f*sin(n*x),-pi,-pi);
end
a_n
b_n

f_new=a_0;
for n=1:N
   f_new=f_new+a_n(n)*cos(n*x)+b_n(n)*sin(n*x);
end
subs(f_new,x,5)
subs(f,x,5)

اینم نتیجش :
کد:
a_n =

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


b_n =

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


ans =

0


ans =

sin(5)


اینم نتیجه ای که درسته و درواقع باید اینو نشون میداد :
کد:
a_0 =
 
0
a_n =
 
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

b_n =
 
[ (5734161139222659*pi)/18014398509481984,0, 0, 0, 0, 0, 0, 0, 0, 0]

ans =
 
   -0.9589
   
   ans =
 
   -0.9589


لطفا راهنماییم کنین که ایراد از کجاست چون من تازه میخوام متلبو یادبگیرم و برام ضروری هم هست.
سلام دوست عزیز
شما در خط دستوری مربوط به b هر دو بازه رو منفی درنظر گرفتید کافی منفی pi دومی رو بردارید تا به جواب مدنظر برسید
موفق باشید
(۱۳۹۵/۱۰/۲۸, ۰۹:۳۶ ب.ظ)m-r-v نوشته: [ -> ]
(۱۳۹۵/۱۰/۲۷, ۰۴:۳۶ ب.ظ)f4r3in نوشته: [ -> ]با سلام خدمت دوستان
من در برنامه نویسی متلب تازه واردم و به تازگی میخوام یاد بگیرمش چون پروژه دانشجویی خودم سری فوریه در متلب بود نحوه نوشتنش رو از این سایت یاد گرفتم ولی وقتی اجراش میکنم نتیجه درست از آب در نمیاد.
این برنامه متلب من :
کد:
clear
clc
syms x
f=sin(x);
N=10;
a_0=(1/2*pi)*int(f,-pi,pi);
for n=1:N
   a_n(n)=(1/pi)*int(f*cos(n*x),-pi,pi);
   b_n(n)=(1/pi)*int(f*sin(n*x),-pi,-pi);
end
a_n
b_n

f_new=a_0;
for n=1:N
   f_new=f_new+a_n(n)*cos(n*x)+b_n(n)*sin(n*x);
end
subs(f_new,x,5)
subs(f,x,5)

اینم نتیجش :
کد:
a_n =

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


b_n =

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


ans =

0


ans =

sin(5)


اینم نتیجه ای که درسته و درواقع باید اینو نشون میداد :
کد:
a_0 =
 
0
a_n =
 
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

b_n =
 
[ (5734161139222659*pi)/18014398509481984,0, 0, 0, 0, 0, 0, 0, 0, 0]

ans =
 
   -0.9589
   
   ans =
 
   -0.9589


لطفا راهنماییم کنین که ایراد از کجاست چون من تازه میخوام متلبو یادبگیرم و برام ضروری هم هست.
سلام دوست عزیز
شما در خط دستوری مربوط به b هر دو بازه رو منفی درنظر گرفتید کافی منفی pi دومی رو بردارید تا به جواب مدنظر برسید
موفق باشید
ممنون از پاسختون مشکل حل شد ولی تو متلب در خروجی همین سوال مقدار سینوس 5 رو محاسبه نمیکنه و بجاش همون سینوس 5 مینویسه چیکار کنم که مقدار عبارت های مثلثاتی محاسبه بشه.
کد:
a_n =

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


b_n =

[ (5734161139222659*pi)/18014398509481984, 0, 0, 0, 0, 0, 0, 0, 0, 0]


ans =

(5734161139222659*pi*sin(5))/18014398509481984


ans =

sin(5)
(۱۳۹۵/۱۰/۲۹, ۰۲:۰۰ ق.ظ)f4r3in نوشته: [ -> ]
(۱۳۹۵/۱۰/۲۸, ۰۹:۳۶ ب.ظ)m-r-v نوشته: [ -> ]
(۱۳۹۵/۱۰/۲۷, ۰۴:۳۶ ب.ظ)f4r3in نوشته: [ -> ]با سلام خدمت دوستان
من در برنامه نویسی متلب تازه واردم و به تازگی میخوام یاد بگیرمش چون پروژه دانشجویی خودم سری فوریه در متلب بود نحوه نوشتنش رو از این سایت یاد گرفتم ولی وقتی اجراش میکنم نتیجه درست از آب در نمیاد.
این برنامه متلب من :
کد:
clear
clc
syms x
f=sin(x);
N=10;
a_0=(1/2*pi)*int(f,-pi,pi);
for n=1:N
   a_n(n)=(1/pi)*int(f*cos(n*x),-pi,pi);
   b_n(n)=(1/pi)*int(f*sin(n*x),-pi,-pi);
end
a_n
b_n

f_new=a_0;
for n=1:N
   f_new=f_new+a_n(n)*cos(n*x)+b_n(n)*sin(n*x);
end
subs(f_new,x,5)
subs(f,x,5)

اینم نتیجش :
کد:
a_n =

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


b_n =

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


ans =

0


ans =

sin(5)


اینم نتیجه ای که درسته و درواقع باید اینو نشون میداد :
کد:
a_0 =
 
0
a_n =
 
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

b_n =
 
[ (5734161139222659*pi)/18014398509481984,0, 0, 0, 0, 0, 0, 0, 0, 0]

ans =
 
   -0.9589
   
   ans =
 
   -0.9589


لطفا راهنماییم کنین که ایراد از کجاست چون من تازه میخوام متلبو یادبگیرم و برام ضروری هم هست.
سلام دوست عزیز
شما در خط دستوری مربوط به b هر دو بازه رو منفی درنظر گرفتید کافی منفی pi دومی رو بردارید تا به جواب مدنظر برسید
موفق باشید
ممنون از پاسختون مشکل حل شد ولی تو متلب در خروجی همین سوال مقدار سینوس 5 رو محاسبه نمیکنه و بجاش همون سینوس 5 مینویسه چیکار کنم که مقدار عبارت های مثلثاتی محاسبه بشه.
کد:
a_n =

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


b_n =

[ (5734161139222659*pi)/18014398509481984, 0, 0, 0, 0, 0, 0, 0, 0, 0]


ans =

(5734161139222659*pi*sin(5))/18014398509481984


ans =

sin(5)
سلام
فرمی که نوشتید درسته ،من کد رو اجرا می کنم در خروجی سینوس رو محاسبه می کنه، شما در کامن ویندو عبارت سینوس رو تنها محاشبه کنید ببینید جواب میده یا خیر ؟
موفق باشید