View Full Version : سوال: سوال چی می خاد؟
hafez1
شنبه 18 شهریور 1391, 23:57 عصر
برنامه ای بنویسید که به روش تنصیف معادله زیر را تا چهار رقم اعشار حل کند.
x +ex=5
منظور از روش تنصیف چیه؟
لازمه به جای e عدد بذاریم؟
hadi0x7c7
یک شنبه 19 شهریور 1391, 02:15 صبح
روش تنصیف احتمالا همون bisection هستش و معادله شما احتمالا x + e^x - 5 = 0 هستش. باید یک بازه که در اون جواب وجود داره رو هم بدین ! ولی با رسم نمودار فهمیدم که بازه [0,2] هستش ! بعد هم http://en.wikipedia.org/wiki/Bisection_method و بعد از اون الگوریتم رو به برنامه تبدیل کردم.
در کل دم شما گرم که مارو یاد درس محاسبات عددی انداختی یکمی مغزمون تحرک کرد.
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
// solving x + e^x - 5 = 0
// with bisection method
// we solve it in [0, 2]
#define EPSILON 1e-5
double f(double x)
{
return (x + exp(x) - 5);
}
double a = 0; // start of interval
double b = 2; // end of interval
// direct translation from wikipedia
void solve()
{
int N = 1;
double c;
while(N <= 100) // 100 is maximum iteration
{
c = (a + b) / 2.0;
double fc = f(c);
double fa = f(a);
double fb = f(b);
if(fc == 0 || (b - a)/2 < EPSILON) { // solutioin found
cout << "root is: " << c << endl;
return;
}
N = N + 1;
if(fc < 0 && fa < 0) {
a = c;
} else {
b = c;
}
}
cout << "Method failed after maximum iterations\n";
}
int main()
{
solve();
cout << fixed << f(1.30656) << endl;
system("pause");
}
hafez1
دوشنبه 20 شهریور 1391, 23:32 عصر
من از این روشی که گفتد چیزی نفهمیدم.راه دیگه ای نداره؟؟؟؟؟؟؟؟؟
hadi0x7c7
سه شنبه 21 شهریور 1391, 00:03 صبح
منظور از روش تنصیف چیه؟
روش تنصیف همینه !
من از این روشی که گفتد چیزی نفهمیدم.
کللا یه بازه داریم که ریشه توی اون هستش. حالا هر بار ما این بازه رو کوچک میکنیم تا به ریشه برسم یا به یک تقریب خوب از اون برسیم.این مثل قضیه بواتزانو تو ریاضی پیش هستش. در کل بحث ریاضیش از برنامه نویسیش بیشتره. پس بیخیال.
hafez1
سه شنبه 21 شهریور 1391, 22:55 عصر
الان که توضیح دادید یه چیزایی یادم اومد.ممنون از راهنماییتون
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.