Javaソースコードの意味

このQ&Aのポイント
  • Javaソースコードの意味をわかりやすく解説します。
  • ソースコード内で使用されている数式の意味を解説します。
  • Javaプログラムの特定の箇所についての解説です。
回答を見る
  • ベストアンサー

このソースコードの意味

import java.lang.Math; public class NewtonMethod { public static void main(String args[]){ double x = 0.785; while (true){ double x2 = x * 2; double xN = x - (Math.cos(x2) - x2 + 1)/(- 2 * Math.sin(x2) - 2); if (xN >= x){ break; } x = xN; } System.out.println(x); } } これのdouble xN = x - (Math.cos(x2) - x2 + 1)/(- 2 * Math.sin(x2) - 2);の部分がよくわかりません。 どなたか教えてください。よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「xN という double型の変数を定義し, = 以下の値で初期化する」というだけ.

関連するQ&A

  • 有効数字

    import java.lang.Math; public class NewtonMethod { public static void main(String args[]){ double x = 0.785; while (true){ double x2 = x * 2; double xN = x - (Math.cos(x2) - x2 + 1)/(- 2 * Math.sin(x2) - 2); if (xN >= x){ break; } x = xN; } System.out.println(x); } } このソースコードの求められたxを有効数字6桁で求めたいのですがどうすればいいのでしょうか? BigDecimal bi = new BigDecimal(String.valueOf(x)); x =bi.setScale(5,BigDecimal.ROUND_HALF_UP).doubleValue(); というのをどこかに入れればいいというところまではわかりましたが、さっきから実行してもうまくいきません; どなたか助けてください。よろしくお願いします。

  • 3角関数における2倍角公式の表現

    Javaを用いた3角関数の計算がうまくできません。 ●式● sin^2(x) + cos^2(x) = 1  ※sin^2(x) = ( 1 - cos2x ) / 2, cos^2(x) = ( 1 + cos2x ) / 2   角度 x は任意 上記のような2倍角の公式を計算したいのですが 1 になりませんっ ●ソース● public class CS2x { public static void main(String[] args) { double t = 30; double x = 2 * t; System.out.println("Cos^2(x)+Sin^2(x)=" + ((1 - Math.cos(x)) / 2) + ((1 + Math.cos(x)) / 2)); } } どうしたら良いでしょうか!?

    • ベストアンサー
    • Java
  • このソースコードの意味が分かりません

    「次の演算を記載順に処理し、演算の結果を出力するプログラムを作成しなさい。ただし、出力は10^-7までとする。プログラムは複数のクラスを定義して作成すること。1-1/2+1/3-1/4+・・・・・+1/9999-1/10000」という問題です。 import java.math.BigDecimal; class Sample{ public static double a(){ double sum=0; for(int i=1;i<=10000; i++){ double div=(double)i; if(i%2==0){ div*=(-1); } sum+=1/div; } return sum; } } class Sample17{ public static void main(String args[]){ System.out.print(ensyu.a()+""); BigDecimal bi = new BigDecimal(String.value0f(ensyu.a())); double sum0 = bi.setScale(7.BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println(+sum0); } } 学校の先生に何回も質問しにいってようやく実行できるソースコードは分かったのですが どういう処理をしているのかがよく理解できません。理解できないところを細かく書こうともした のですがそれさえも分からない状態です。 どうか皆様の力をお貸し下さい。よろしくお願いします。

  • 【初心者です】javaで平均値を求めたいのですが...

    import java.io.*; public class ex31a { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader (System.in)); double sum = 0.0; while(true) { System.out.print("double> "); double x = (new Double(in.readLine())).doubleValue(); if(x == 0.0) { break; } sum = sum + x; } System.out.println("avarage = " + (sum % n)); } } 基本形はこのままで、最後の部分のSystem.out.printlnの部分を直したらいいんでしょうか。

    • ベストアンサー
    • Java
  • Cのソースコード について

    使用言語はCです。 #include<stdio.h> #include<math.h> int main(void) { double x = 0, y = 0; while (1) { double arg2 = M_PI / 90; int arg1 = 90; int Arg = 0, Len = 0; scanf_s("%d,%d", &Len, &Arg); if (Len == 0 && Arg == 0) { break; } else { arg1 -= Arg; arg2 += (arg1 % 360)*M_PI / 180; x += cos(arg2)*Len; y += sin(arg2)*Len; } } printf("%d\n%d\n", (int)x, (int)y); while (1) {} return 0; } このコードをvisual studio でコンパイルしようとすると、 M_PIは定義されていない とエラーになってしまいます。 M_PIはmath.hに含まれているということでつかったのですが・・・・

  • Java問題 できればソースコードを教えて下さい。

    import java.io.*; public class K3 { /** * @param args */ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); double[] data = new double[5]; System.out.println("5個の性のデータを入力して下さい"); int i = 0; do{ System.out.print("data{" + i + "}="); String str = br.readLine(); data[i] = Double.parseDouble(str); i++; }while(i<data.length && data[i-1] >=0); System.out.println("入力された結果を表示します"); i=0; while(i<data.length && data[i] >=0); System.out.println("data[" + i + "]: + data[i]"); i++; } } double型のデータを5個保存できる配列を準備し,do-while文を用いてデータの入力を行い,while文を用いて出力を行うプログラムを作成しなさい. ただし,入力するデータは正の数のみとし,入力が負の数だった場合は,データが5個より少なくても,入力・出力を停止することとしなさい.(whileの条件で判定し,if文等は設置しなくてよい.) そして,最後に,全データの合計値と平均値を出力しなさい お願いします

  • Writer & PrintWriter

    import java.io.*; public class JavaIO4 { public static void main(String args[]) throws Exception { Writer w=new FileWriter(args[0]); PrintWriter pw=new PrintWriter(w); for (int i=0; i<=330; i+=30) { double atai=Math.sin(Math.PI*i/180.0); String str="sin("+i+")="+atai+"\n"; pw.write(str); } pw.close(); } } と import java.io.*; public class JavaIO4 { public static void main(String args[]) throws Exception { //Writer w=new FileWriter(args[0]); PrintWriter pw=new PrintWriter(args[0]); for (int i=0; i<=330; i+=30) { double atai=Math.sin(Math.PI*i/180.0); String str="sin("+i+")="+atai+"\n"; pw.write(str); } pw.close(); } } の結果が同じになるんですけど、 Writer w = new FileWriter(args[0]); PrintWriter pw = new PrintWriter(w); とするのはなぜなんですか? 何か意味はあるんですか?

  • Java問題 できればソースコードを教えて下さい。

    import java.io.*; public class K2 { public static void main(String[] args) { int[] test = new int[5]; test[0] = 80; test[1] = 60; test[2] = 22; test[3] = 50; test[4] = 75; int i = 0; while(i<test.length){ System.out.println((i+1) + "番目の人の点数は" + test[i] + "です"); i++; } } } のプログラムと同様の配列を準備し,その内容をwhile文を用いて画面に表示するプログラムを作成しなさい.その際,全データの合計値と平均値も出力しなさい お願いします

    • ベストアンサー
    • Java
  • 先に計算したほうがいいのでしょうか?

    下記のプログラムを作ったのですが、 Math.PI / 180 の部分は先に計算しておいたほうが処理が 早くなると言われたのですがそうなのでしょうか? 先に掛け算をしないといけないような気がするのですが。 import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import java.lang.Math; public class Test9 { public static void main(String[] args) { int r = (args.length > 0)? Integer.parseInt(args[0]):100; int n = (args.length > 1)? Integer.parseInt(args[1]):16; int x, y, x1, y1; try { BufferedImage image=new BufferedImage(r*2+10,r*2+10,BufferedImage.TYPE_INT_RGB); Graphics2D g2d=image.createGraphics(); g2d.setBackground(Color.WHITE); g2d.clearRect(0,0,r*2+10,r*2+10); g2d.setColor(Color.BLACK); for ( double i = 0.0; i < 360.0; i += 360.0 / n ) { x1 = (int) ( r * Math.cos( i * Math.PI / 180 ) ); y1 = (int) ( r * Math.sin( i * Math.PI / 180 ) ); for( double j = i + 360 / n; j < 360.0; j += 360.0 / n ) { x = (int) ( r * Math.cos( j * Math.PI / 180 ) ); y = (int) ( r * Math.sin( j * Math.PI / 180 ) ); g2d.drawLine( x1 + r + 5, y1 * (-1) + r + 5, x + r + 5, y * (-1) + r + 5 ); } } ImageIO.write(image, "JPEG", new File("c:\\test9.jpg")); } catch(Exception e) { e.printStackTrace(); } } }

    • ベストアンサー
    • Java
  • 例外処理をするソースコードについて

    例外処理するソースコードについて質問があります。 まず例外処理される前のファイルのソースコードを見てください。 public class JTest13 { public static void main(String[] args) { System.out.println("実行開始"); long lngTmp; //以下を実行した瞬間に引数が無いか、整数に直せなかったら例外がスローされる lngTmp = Long.parseLong(args[0]); //割り算を実行する(小数点以下の数値を管理する必要がある)ため、double型に変換します System.out.println(Double.parseDouble(args[0]) / 2); System.out.println("tryブロック終了"); System.out.println("実行終了"); } } ここでアルファベットを入力すると、 実行開始 Exception in thread "main" java.lang.NumberFormatException: For input string: "a" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Long.parseLong(Unknown Source) at java.lang.Long.parseLong(Unknown Source) at JTest13.main(JTest13.java:20) これで例外処理クラスがNumberFormatExceptionだと分かるんですが、 こういう結果がでなければいけません。 実行開始 例外:java.lang.NumberFormatException For input stirng:"a" 引数を整数で入力して下さい。 実行終了 これで問題なのがmainメソッドで例外処理するのではなく、整数チェック用のメソッド内でエラー処理するプログラムを作らなければならない事です。 変数がargs[0]なのでどうやってメソッドを作っていいのか分かりません。 ヒントだけでいいので、どうぞ宜しくお願い致します。

    • ベストアンサー
    • Java

専門家に質問してみよう