c++
1コード 2#include<studio> 3using namespace std; 4int main() { 5int i,k,a[2]; 6double xl,xr,xc; 7double fl,fr,fc,ss; 8 9k=0; 10for(i=0;i<10;i++){ 11fl=sin(i)+1/sqrt(2); 12fc=sin(i+1)+1/sqrt(2); 13if(fl*fc<0){ 14a[k]=i; 15k++; 16} 17} 18for(k=0;k<2;k++){ 19ss=1.0; 20xl=a[k]; 21xr=a[k]+1; 22while(ss>1.0e-10){ 23xc=(xr+xl)/2; 24fl=sin(xl)+1/sqrt(2); 25fr=sin(xr)+1/sqrt(2); 26fc=sin(xc)+1/sqrt(2); 27if(fl*fc<0){ 28xr=xc; 29} 30else{ 31xl=xc; 32} 33ss=fabs(1-xr/xl); 34} 35} 36}
0<x<2πの範囲で
f(x)=sinx+1/√2=0となるxを求めるコードを書いたのですが、二つ目のfor文が機能していない状態です。(解は2つなのですが片方しか出てこないです。)
同様にg(x)=x^3-5x^2/12-x/12+1/48=0となるようなコードも書いたのですが、これに関しては1つも正しい答えが出ない状態です。
どのように修正すればいいでしょうか?
(求めようとしている方法は二分法です。)