求大大幫忙解題
f(x)=sigma(n=1到10)[sin(nx)+cos(nx)]-55/50=0 之根
1.二分逼近法
2.f(x)用函式寫
2006-05-12 10:49:49 · 2 個解答 · 發問者 simon 1 in 電腦與網際網路 ➔ 程式設計
不好意思...我是要打在C++上面的...不是用微積分算的
2006-05-12 13:44:50 · update #1
因為沒講範圍,以下程式求出x在0~3之間的一根
#include
using namespace std;
#include
double f(double x)
{
double fx=0.;
for(int n=1;n<=10;n++)
{
fx+=(sin(n*x)+cos(n*x));
}
return fx-55./50.;
}
//題目是不是 f(x)=(sigma(n=1到10)(sin(nx)+cos(nx)))-(55/50)=0啊?
//對於後面為什麼55/50不寫1.1有點疑問,或許我弄錯意思了
void main()
{
double a=0.,b=3.,c;
if(f(a)*f(b)<0)
{
while(1)
{
c=(a+b)/2.;
if(c==a||c==b) break;
if(f(a)*f(c)<0.) b=c;
else if(f(a)*f(c)>0.) a=c;
else break; //f(c)==0
}
cout<<"Ans="<
else cout<<"f("<0"<
輸出
Ans=0.934464
2006-05-12 20:00:18 · answer #1 · answered by chan 5 · 0⤊ 0⤋
還真難
有答案的時候 可以公佈一下嗎
還蠻想知道的
2006-05-12 17:02:49 補充:
我想喔
wlog 既然X的值 是在 0~360 之間
and the function sigma(1~10)[sin(x)+cos(x)] is continuous
所以中間應該會有Maximum and minima(because bounded and closed)
有沒有聽過golden section method(或其他的方法 newton, second, etc)
用golden section method(or other)先找到最大質 跟最小質
然後你就可以用binary serach 在最大質跟最小質中間 找答案了
剛好上完了一個學期的 科學計算
不過這題還真麻繁
應該有更好的方法
只是暫時想不出來
2006-05-12 13:02:49 · answer #2 · answered by ? 1 · 0⤊ 0⤋