/* B4ゼミ: ホモトピー法 次の非線形方程式の海を、ホモトピー法を用いて近似的に求めよ。 f(x) = x^3 + x - 1 = 0 但し、g(x) = x, H(x,t) = (1-t) g(x) + t f(x) Hint: 連続法で、「tを0.2刻みで予測子を出し、修正するためにニュートン法を行う」 これを0から1まで5回行う。 */ fn main() { println!(""); let mut x:f64 = 0.0;//初期値 let expected_deviation:f64 = 0.01;//期待する精度 // steps for i in 0..=5 { let t = (i as f64/ 5.0) as f64; let mut loop_counter = 0; println!("====step {}===",i); loop { loop_counter += 1; let x2 = x - (t * x * x * x + x - t)/(3.0 * t * x * x + 1.0); println!("value calculating: {}",x2); //期待する誤差以下になれば終了 if (x2 - x).abs() <= expected_deviation { println!("value: {}",x); break; }else { x = x2; } } println!("t: {}, x: {} loop:{}\n",t,x,loop_counter); } }