English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

上限 0,下限 - 3 ,∫x / √9-x^2(分母有開平方)
/*---------------------------------------------------------------------------*/
#include
#include
using namespace std;
double integrate(double a,double b,int n);
double f(double x);
int main()
{
int num_trapezoids;
double a,b,area;
cout<<\"Enter the interval endpoint,a and b\\n\";
cin>>a>>b;
cout<<\"Enter the number of trapezoids\\n\";
cin>>num_trapezoids;
area=integrate(a,b,num_trapezoids);
cout<<\"Using \"<< num_trapezoids<<\" trapezoids,the estimated is \"
< system(\"PAUSE\");
return (0);
}
/*---------------------------------------------------------------------------*/
double integrate(double a,double b,int n)
{
double sum(0),x,base,area;
base=(b-a)/n;
for(int k=2;k<=n;k++)
{
x=a+base*(k-1);
sum=sum+f(x);
}
area=0.5*base*(f(a)+2*sum+f(b));
return area;
}
/*---------------------------------------------------------------------------*/
double f(double x)
{
return (x/sqrt(9-pow(x,2)));
}
/*---------------------------------------------------------------------------*/
以上是照著課本改的,可是答案卻用手算完全不同,有哪位大大能幫小弟
####感謝你們####

2006-05-22 18:45:35 · 2 個解答 · 發問者 gogo 2 in 電腦與網際網路 程式設計

感謝kui跟QOO
kui:的確這樣可以,我想順便問你為什麼算出來面積會正的,關於這一點程式需要改變嗎?
QOO:你跟我們老師說的一模一樣,但沒問他為什麼會這樣,請問你知道嗎?
###感謝你們###

2006-05-23 17:26:46 · update #1

抱歉(QOO:你跟我們老師說的一模一樣,但沒問他為什麼會這樣,請問你知道嗎? )

2006-05-23 17:28:34 · update #2

屙!!我真的帶錯了捏@@非常感謝你/妳-kui

2006-05-26 15:30:27 · update #3

2 個解答

你這個程式還好.主要是那個下限如果用-3會讓分母為零,所以不能用-3代入,
如果你
a用-2.9999代入
b用0代入
這樣得到答案-2.9998其實就差不多了!
或者程式想改更完善一點,也就知道該如何下手了.

2006-05-23 13:32:34 補充:
上面是num_trapezoids是用3000得到的,若用1000得到-3.08287也還好

2006-05-24 23:40:16 補充:
算出來是正的? 應該負的吧. 上面寫負的呀!從-3積到0是負的,若反過來從0積到-3才是正的.說一下你是代入什麼才正的呢?

2006-05-23 09:28:09 · answer #1 · answered by chan 5 · 0 0

跟用手算完全不同是很正常的.因為. 數值機分的方法. 是把被機分區域切割. 然後一個一個加起來.

2006-05-23 04:52:28 · answer #2 · answered by SiYu 5 · 0 0

fedest.com, questions and answers