Top / AA_Experiment / Rocket / SampleProgram_java

AA_Experiment/Rocket/SampleProgram_java

_ 圧力比 pe/pc の数値解をニュートン法で求めるサンプルプログラム (Java言語版)

下記の内容で、ファイル名"Newton.java"のファイルを作成し、Javaコンパイラでコンパイルし、実行する。

ソースファイルをダウンロード → fileNewton.java

/***********************************************/
/* 航空宇宙工学実験「ロケット推進力の測定」    */
/* 与えられたノズル開口比 Ae/At から、         */
/* 圧力比 pe/pc の数値解をニュートン法で求める */
/***********************************************/

import java.lang.Math.*;
import java.text.*;

public class Newton {
  public static void main(String args[]){
    double eps, g, dt, de, at, ae, ar, pr, f, df, dx;
    int i;
    DecimalFormat fmt = new DecimalFormat("  0.0000000000; -#");
    i = 0;
    eps = 1.0e-10;
    g = 1.402;
    dt = 2.5;
    de = 3.3;
    at = dt*dt * Math.PI / 4.0;
    ae = de*de * Math.PI / 4.0;
    ar = de*de / dt/dt;
    System.out.println("スロート面積 At =" + fmt.format(at));
    System.out.println("  出口面積 Ae =" + fmt.format(ae));
    System.out.println("開口比  Ae/At =" + fmt.format(ar));
    pr = 0.1;
    dx = 1.0;
    System.out.println();
    System.out.println("i   pe/pc         f             df");
    while ( Math.abs(dx) > eps ) {
      f = Math.pow(pr,(2.0/g)) - Math.pow(pr,(1.0+1.0/g))
        -((g-1.0)/2.0 * Math.pow(2.0/(g+1.0),(g+1.0)/(g-1.0))) / ar/ar;
      df = (2.0/g) * Math.pow(pr,(2.0/g-1.0))
        - (1.0+1.0/g) * Math.pow(pr,(1.0/g));
      System.out.println(i+fmt.format(pr)+fmt.format(f)+fmt.format(df));
      dx = - f / df;
      pr += dx;
      i++;
    }
    System.out.println();
    System.out.println("圧力比 pe/pc =" + fmt.format(pr));
  }
}
 
Attach file: fileNewton.java 414 download [Information]
 
Link: AA_Experiment/Rocket(3410d)
Last-modified: 2011-01-06 (Thu) 17:58:08 (2452d)