PDA

View Full Version : سوال: کد مربوط به توابع ریاضی مهندسی ... سری فوریه



ghasem110deh
جمعه 09 آبان 1393, 13:05 عصر
سلام به همه ...
کد این توابع ریاضی (سری فوریه در ریاضی مهندسی) تو سی شارپ رو چطور بدست بیارم ؟

http://s5.picofile.com/file/8148623984/11.png

http://s5.picofile.com/file/8148623968/22.png

http://s5.picofile.com/file/8148623900/333.png

البته موج سینوسی رو از دوستان گرفتم ...

pedram.11
جمعه 09 آبان 1393, 13:49 عصر
سلام. مشکل بدست آوردن جوابه یا رسم نمودار؟! اگه مشکل محاسبس، معادلات که تمامشو میتونید از math بدست بیارید. میمونه سیگما که در یک حلقه بذارید. اگه هم رسمه که باید توی یه حلقه جواب هر موقعیت رو توی یه بازه نسبت به t بدست بیارید و جواب هارو در نمودار نقطه گذاری کنید...

ghasem110deh
جمعه 09 آبان 1393, 13:58 عصر
سلام ...
در واقع جفتشو مشکل دارم !
اول که از این فرمول ها هیچی سرم نمیشه ... ولی باید اون نمودار ها (موج رادیویی) هستند رو توی پنل رسم کنم ؛ تازه این اولشه در ادامه باید حداقل یه نمونه مدولاسیون هم بهش بدم !
تا الان هم به لطف بچه ها فقط موج سینوسی رو درآوردم ...

pedram.11
جمعه 09 آبان 1393, 14:15 عصر
فرمول اولی که سادست. اگه فرمول دومی رو در نظر بگیریم. شما ابتدا باید فرمول محاسبه صورت رو (بدون سیگما) sin(2PIf(2n-1)t)/(2n-1) رو در یک متد بازگشتی قرار بدید. یعنی متد جواب بعدی رو توی خودش بدست بیاره. چون محدوده بینهایت هست میتونید یه حدی در نظر بگیرید که اگه تفاوت جواب قبلی با جواب فعلی کمتر از حد بود(چون نزولی هست) مقدار رو برگردونه. یه ضرب در 4 میکنیم و جواب صورت بدست میاد :تشویق:

Mr.Csharp
جمعه 09 آبان 1393, 14:23 عصر
اگه سورساشو بذاری ما هم که هیچی نمی فهمیم یه چی حالیمون بشه ممنون میشم:لبخند::افسرده:

ghasem110deh
جمعه 09 آبان 1393, 15:01 عصر
این توابع واسه رسم موج سینوسیه :


private double DegreeToRadian(double angle) {
//یک مقدار اعشاری گرفته و درجه را به رادیان تبدیل می کند و مقدار آن را برمی گرداند
return Math.PI * angle / double.Parse(textBox3.Text);
}


//رسم گرافیکی موج سینوسی هست
private void Draw(double N)
{
//نقطه وسط کنترلی که قرار است رسم نمودار از آنجا شروع شود بدست می آید
int Yoffset = panel1.Height / 2;
//برای اینکه نمودار در کنترل panel1 رسم شود.(یعنی مختصات که می دهیم به کنترل panel1 می رود)
Graphics G = panel1.CreateGraphics();
//برای این که بتوانیم چیزی بنویسیم یا رسم کنیم باید یک قلم تعریف کنیم که اینجا رنگ و ضخامت آن تعریف شده
Pen P = new Pen(Color.White , 1.75f);//ضخامت نمودار
float x1, y1; //ایکس مختصات رسم در طول پنل و وای مختصات رسم در عرض پنل


for (double X = 0; X <= 360; X++)
{ //مقدار x را از نوع doube به نوع float‌ تبدیل کرده و در متغیر x1 می ریزد
x1 = (float)X;
//همون فرمول اصلی هست که باعث می شه y در موج سینوسی بالا پایین بشه
y1 = Yoffset + ((float)Math.Sin(DegreeToRadian(X * N)) * int.Parse(textBox2.Text));
//میگه یک مستطیل در مختصات(x1,y1) با عرض و طول (.5f, .5f) با قلم p که قبلا تعریف کردی و درون panel1 رسم می شود
G.DrawRectangle(P, x1 * 2, y1, .5f, .5f);
}
//حافظه ای که به p اختصاص یافته را آزاد می کند
P.Dispose();
}

اینم کدهای کلید رسم :


try {
Draw(0);
Draw(double.Parse(textBox1.Text) / double.Parse(textBox4.Text));
}
catch
{
MessageBox.Show("مقدار وارد شده صحیح نیست", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
label6.Text = (double.Parse(textBox1.Text) / double.Parse(textBox4.Text)).ToString() + "" + "Hz in Second";

چهار تا تکست باکس میخوای ...
یکی تعداد تکرار موج (فرکانس)
یکی ارتفاع موج
یکی سیمبل ریت : نرمال 180
یکی هم زمان

pedram.11
جمعه 09 آبان 1393, 22:41 عصر
ببخشید توی این متد ها کار تکست باکس ها چیه(فرکانس، ارتفاع و ...)؟

ghasem110deh
جمعه 09 آبان 1393, 22:50 عصر
عدد ورودی رو از تکست باکس میخونم ...
باید طبق ورودی موج سینوسی و ... مورد نظر رو ترسیم و فرکانس بر حسب هرتز رو برگردونه !
.
.
.
مدولاسیون هم که فعلا هیچی :متفکر:

pedram.11
شنبه 10 آبان 1393, 00:54 صبح
سلام من طبق فرمول حالت اول و دوم رو درست کردم:
125158
125157

اما یه سوالی پیش اومده . در فرمول دوم(square) در صورت، در قسمت sin(2PIf(2n-1)t) اگه زمان 0 باشه میزان زاویه هم 0 و سینوس جواب باید 0 بشه :متفکر:. اما توی تصویر مقدارش در زمان 0، 1 هست. چطور اینطور شده؟ آیا نمودار اشتباس؟ نمودار آخری هم همینطوریه... :عصبانی++: اما من برنامه رو نسبت به فرمول اونطوری که به نظر باید درست باشه درست کردم
در صورت نیاز پروژه رو گذاشتم. اگه به سوالم جواب بدید در صورت نادرست بودن برنامه نسبت به سوالی که پیش اومده کدارو درست میکنم میذارم :چشمک:

ghasem110deh
شنبه 10 آبان 1393, 18:45 عصر
ممنون ...
باید چکش گنم !
البته چند تا سورس تو این زمینه دارم ولی چیزی سر در نیوردم ... (براتون پ خ میکنم)
------------------------------
اصل این داستان از اینجا شروع شد :
استاد : "برین یه بانک اطلاعاتی بنویسید با مشخصات ..."
شاگرد : "اه - بازم بانک اطلاعاتی ، استاد با سی شارپ چیزه دیگه ای نمیشه نوشت ؟"
استاد : "برو تحقیق کن روی FFT و یه بنامه بنویس که چند موج رادیویی رو با توجه به ورودی رسم کنه ، اگه تونستی مدولاسیون رو هم پیاده کن -- تا آماده هم نشده نبینمت" :عصبانی:
.
.
.
داستان تموم شد ... :گریه:

ghasem110deh
شنبه 10 آبان 1393, 19:01 عصر
این برنامه خودم :

http://s5.picofile.com/file/8149108626/Test_Spactrum_Analyzer.rar.html

http://s5.picofile.com/file/8149108792/Untit_led.png



اینم سورس یه برنامه خفن (که نتونستم ازش الگو برداری کنم چون همش با dll کار کرده) :

http://s5.picofile.com/file/8147286018/Signal_Generator.rar.html