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つも正しい答えが出ない状態です。
どのように修正すればいいでしょうか?
(求めようとしている方法は二分法です。)
>機能していない状態・・・これコンパイルできないですよね?
・・・コンパイルしたままのコードを貼り付けて下さい。
studio・・・こんなファイル無い!
インデントが無茶苦茶
タグがCになってますがC++に変えて下さい。
同じ質問が2つ投稿されているようです。
回答がつかないうちに片方を削除依頼出しておいた方がよろしいかと。
https://teratail.com/questions/196849
C++でしたら, タグもC++にしていただけますか.
また, 出力が見当たりません. 解の一つが出ているのでしたら出力があるはずです. それが無いということはご提示の為にソースを変更していることになり, ソースと変更しているということは原因箇所も変更されている可能性があるということになります.
実際に動作されているコードそのままと, どの様に入力したらどの様に出力されるハズがどうなった…という情報の組み合わせが正確でなければ, 正確な回答は得難いかと思います.