2014-02-13 54 views
0

這是我迄今所做的。我無法獲得第二個根(解決方案)。一旦我得到第一個答案,我不知道如何繼續循環。 請幫幫我。寫C++程序從0解決E 1(X/2)= 2sin(X)的當量<X <2

#include <iostream> 
#include <cmath> 
using namespace std; 

int main() 
{ 
    double x, y, y0; 
    double dx = 0.01; 
    const double EulerConstant = std::exp(1.0); 

    x =dx; 
    y= sqrt(pow(EulerConstant,x))-2*sin(x); 
    y0=y; 

    while (y*y0>0) 
    { 
     y0=y; 
     x += dx; 
     y = sqrt(pow(EulerConstant,x))-2*sin(x); 
    } 


    cout << "x =" << x << "\n"; 


    system("pause"); 
    return 0; 
} 
+4

什麼是你的問題? –

+2

你知道算法是如何工作的嗎?你有沒有嘗試運行它有點不同的啓動條件? – quetzalcoatl

+5

不相關的問題,但爲什麼不能代替'POW(EulerConstant,X)'和'的std :: EXP(X)'? – TypeIA

回答

0

有了這個公式,你將有一個精度問題。這個方程的零點接近X = 0.90,x = 1.32,但不夠緊密,爲的epsilon的值進行比較,你會提供一個很好的價值或者(Example)。你會既不需要增加你的步的精度(如0.0001 - 這是我的例子做了的話),或存儲每個迭代的值,做一個近似時,由負值切換到正(或陽性負)。

+0

感謝您的回答。我遇到的問題是,一旦找到第一個解決方案,我無法獲得第二個解決方案。我不知道如何編程第二部分 – user3267628

+0

我鏈接的例子給你兩個答案。他們的關鍵是,一旦找到解決方案,你就無法停下腳步(你必須繼續完成整個範圍)。 –

相關問題