Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package MatMod;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Scanner;
- public class LenaNewton {
- public static void main(String[] args) throws IOException {
- while (true) {
- double a;
- double b;
- double exp;
- int i = 0;
- System.out.println("Интервал: ");
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- String s = reader.readLine();
- a = Double.parseDouble(s);
- s = reader.readLine();
- b = Double.parseDouble(s);
- System.out.println("Exp enter");
- s = reader.readLine();
- exp = Double.parseDouble(s);
- if (checkSign(fun(a), fun(b))) {
- System.out.println("Same");
- return;
- }
- else {
- while (true) {
- double checkF = fun(a);
- double checkP = proizv2(a);
- if (checkSign(checkF, checkP)) { // a = начальная точка
- double xn = pribl(a,fun(a),proizv(a));
- System.out.println(xn);
- a = a - xn;
- if (Math.abs(a) < exp) {
- break;
- }
- a = xn;
- i++;
- }
- else { // b = начальная точка
- double xn = pribl(b,fun(b),proizv(b));
- System.out.println(xn);
- b = b - xn;
- if (Math.abs(b) < exp) {
- break;
- }
- b = xn;
- i++;
- }
- }
- }
- System.out.println(i);
- break;
- }
- }
- public static double pribl(double a, double b, double c) {
- return a - b/c; // где a = xk, b = f(x), c = f`(x)
- }
- public static double proizv2(double x) {
- return -Math.cos(x); // вторая производная функции
- }
- public static double fun(double x) {
- return (2 * x + Math.cos(x) - 0.5); // Сама функция
- }
- public static double proizv(double x) {
- return 2 - Math.sin(x); // первая производная
- }
- public static boolean checkSign(double x, double y) {
- return (x > 0 && y > 0) || (x < 0 && y < 0) || (x == 0 && y == 0); // проверка знака
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement