c言語における二分法のプログラムで行き詰っています。
Vcmの置き換えが上手く再現できません。
以下がソースコードです。
お力をお貸しください。宜しくお願い致します。
//関数の呼び出す//
#include<stdio.h>
#include<math.h>
int main(void){
double vcm;
double p=762.3;//気圧[mmHg]//
double r11=0.1;//内電極直径0.2[cm] //
double r12=0.2;//内電極直径0.4[cm] //
double r2=1.8;//外電極直径3.6[cm]//
double a1=plog(r2/r11);//pln(r2/r11)の数値計算//
double a2=plog(r2/r12);//pln(r2/r12)の数値計算//
double b=0.001;//δの値//
//内電極直径が0.2[cm]の時//
double vc1=15000;//初期値1//
double vc2=19000;//初期値2//
double y=0.00016p(((vc1/a1)(vc1/a1))((1/r11)-((31.6a1)/vc1))+((63.2vc1)/a1)(log((r1131.6a1)/vc1))+((31.631.6)((vc1/31.6a1)-r11)))-(3.213.21);//f(vc1)の作成//
while(fabs(vc1-vc2)>b)//fabs関数を用いて絶対値表現にし、δの範囲に入るまで繰り返す。//
{
vcm=(vc1+vc2)/2;//中点の算出//
double fvcm=0.00016p*(((vcm/a1)(vcm/a1))((1/r11)-((31.6a1)/vcm))+((63.2vcm)/a1)(log((r1131.6a1)/vcm))+((31.631.6)((vcm/31.6a1)-r11)))-(3.213.21);//関数f(vcm)の作成//
if(yfvcm>0){
vc1=vcm;//vc1をvcmとする//
}else{
vc2=vcm;//vc2をvcmとする//
}
}
double vc11;
vc11=vcm;
//二分法後、vcmの値の書き出し。//
printf("vcの値は%lfです。",vc11);
return 0;
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。