📄 sm_2mano.java
字号:
/***********************************************
* Skaitiniu metodu 2 laboratorinis darbas *
* Netiesiniu uzdaviniu sprendimas *
* Relaksacijos ir kirstiniu metodais *
* Uzduotis - x = exp(-x ^ 2) *
* Autorius - Vaidas Zidanavicius *
**********************************************/
import java.io.*;
import java.lang.*;
public class SM_2mano {
public static double G_a, G_b, G_x0, G_x1, G_y0, G_y1;
public SM_2mano() {}
public static double Nuskaitymas_Double() {
String tmp = "";
double skaiciukas = 0;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
tmp = br.readLine();
} catch (IOException exc) {
System.out.println("Skaitymo klaida: " + exc);
System.exit(0);
}
try {
skaiciukas = Double.parseDouble(tmp);
} catch (NumberFormatException exc) {
System.out.println("Blogas skaitmuo. Stringas " + tmp + " yra ignoruotas.");
}
return skaiciukas;
}
public static int Nuskaitymas_Int() {
String tmp = "";
int skaiciukas = 0;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
tmp = br.readLine();
} catch (IOException exc) {
System.out.println("Skaitymo klaida: " + exc);
System.exit(0);
}
try {
skaiciukas = Integer.parseInt(tmp);
} catch (NumberFormatException exc) {
System.out.println("Blogas skaitmuo. Stringas " + tmp + " yra ignoruotas.");
}
return skaiciukas;
}
public static double Funkcija(double x) {
double k = Math.exp((-1) * x * x) - x;
return k;
}
public static double Funkcija2(double x) {
double k = Math.exp((-1) * x * x);
return k;
}
public static void Iteration() {
}
public static void Relaksacija() {
double L_x1, L_y1, omega, M = 0.0, m = 0.0, Eps;
int i = 0;
int j = 0;
double spr = 0.0;
double max = 0.0, min = -2.0;
double pp = 0.0;
Eps = 0.000001;
max = spr;
for (pp = 0; pp <= 2; pp = pp + Eps) {
spr = (-2) * pp * Math.exp((-1) * pp * pp) - 1;
if (max > spr) {
max = spr;
}
if (min < spr) {
min = spr;
}
}
System.out.println("Iveskite x_0 reiksme:");
G_x0 = Nuskaitymas_Double();
G_y0 = Funkcija2(G_x0);
M = max;
m = min;
if (M < 0) {
M = -M;
}
if (m < 0) {
m = -m;
}
omega = 2 / (2 + M + m);
L_x1 = (((1 - omega) * G_x0) + (omega * G_y0));
L_y1 = Funkcija(L_x1);
j = i;
System.out.println("x_" + j + " = " + G_x0);
j++;
System.out.println("x_" + j + " = " + L_x1);
while (!((L_y1 == 0) || ((Math.abs(L_x1 - G_x0)) < Eps))) {
i++;
G_x0 = L_x1;
G_y0 = Funkcija2(G_x0);
L_x1 = (((1 - omega) * G_x0) + (omega * G_y0));
L_y1 = Funkcija(L_x1);
j = i;
j++;
System.out.println("x_" + j + " = " + L_x1);
}
System.out.println("Relaksacijos metodo sprendinys: " + L_x1);
}
public static void Kirstine() {
double Eps = 0.000001;
double L_x2, L_y2;
int i = 0;
int j;
System.out.println("Iveskite x_0 reiksme:");
G_x0 = Nuskaitymas_Double();
System.out.println("Iveskite x_1 reiksme:");
G_x1 = Nuskaitymas_Double();
G_y0 = Funkcija(G_x0);
G_y1 = Funkcija(G_x1);
L_x2 = G_x1 - (G_y1 * ((G_x1 - G_x0) / (G_y1 - G_y0)));
L_y2 = Funkcija(L_x2);
j = i;
System.out.println("x_" + j + " = " + G_x0);
j++;
System.out.println("x_" + j + " = " + G_x1);
j++;
System.out.println("x_" + j + " = " + L_x2);
while (!((L_y2 == 0) || ((Math.abs(L_x2 - G_x1)) < Eps))) {
i++;
G_x0 = G_x1;
G_x1 = L_x2;
G_y0 = Funkcija(G_x0);
G_y1 = Funkcija(G_x1);
L_x2 = G_x1 - (G_y1 * ((G_x1 - G_x0) / (G_y1 - G_y0)));
L_y2 = Funkcija(L_x2);
j = i;
j = j + 2;
System.out.println("x_"+j+"="+L_x2);
}
System.out.println("Kirstiniu metodo sprendinys: " + L_x2);
}
public static void main(String[] args) {
int meniu;
G_a = G_b = G_x0 = G_x1 = G_y0 = G_y1 = 0;
System.out.println("1 - Relaksacijos metodu; 2 - Kirstiniu metodu; 0 - Exit: ");
meniu = Nuskaitymas_Int();
while (meniu != 0) {
if (meniu == 1){
Relaksacija();
System.out.println("1 - Relaksacijos metodu; 2 - Kirstiniu metodu; 0 - Exit: ");
meniu = Nuskaitymas_Int();
}
else if (meniu == 2) {
Kirstine();
System.out.println("1 - Relaksacijos metodu; 2 - Kirstiniu metodu; 0 - Exit: ");
meniu = Nuskaitymas_Int();
}
else {
System.out.println("Ivedete bloga skaiciu.");
System.out.println("1 - Relaksacijos metodu; 2 - Kirstiniu metodu; 0 - Exit: ");
meniu = Nuskaitymas_Int();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -