?? perkeltiesmetodas.java
字號:
import java.io.*;
import java.lang.String.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class PerkeltiesMetodas {
static int length = 11;
static String[] x = new String[length];
static String[] y = new String[length];
static double[] xD = new double[length];
static double[] yD = new double[length];
static double[] h = new double[length];
static double[] f = new double[length];
static double[] a = new double[length];
static double[] b = new double[length];
static double[] c = new double[length];
static double[] d = new double[length];
static double[] C = new double[length];
static double[] D = new double[length];
static double[] g = new double[length];
static double[] e = new double[length];
static double[] G = new double[length];
static double[] H = new double[length];
static double[] Sa = new double[length];
static double[] Sb = new double[length];
static double[] Sc = new double[length];
static double[] Sd = new double[length];
static double[] an = new double[length];
static double[] bn = new double[length];
static double[] cn = new double[length];
public static void main (String[] args) {
double tmp = 0;
int tmp2 = 0;
int availibility = 0;
System.out.println("------------------------------");
System.out.println("Kubinio splaino skaiciavimas");
System.out.println("Uzduoties numeris - 17\n");
System.out.println("-2*x(2*x + 3)");
System.out.println("------------- , intervale [-2, 2]");
System.out.println("x^2 + 4*x + 5\n");
System.out.println("Autorius - Vaidas Zidanavicius");
System.out.println("------------------------------\n");
dataInitialize();
convertToDouble();
System.out.println("-------------------------------------------------------------------------------");
System.out.println("Pradiniai duomenys:");
startUpData();
System.out.println("\n-------------------------------------------------------------------------------");
/* for (tmp = xD[0]; tmp < xD[length - 1]; tmp = tmp + 0.1) {
System.out.println("Splainas taske X = " + tmp + " yra " + Spline(tmp));
}*/
for (tmp2 = 0; tmp2 < (length - 1); tmp2++) {
if (a[tmp2] < 0) {
an[tmp2] = -(a[tmp2]);
}
else {
an[tmp2] = a[tmp2];
}
if (b[tmp2] < 0) {
bn[tmp2] = -(b[tmp2]);
}
else {
bn[tmp2] = b[tmp2];
}
if (c[tmp2] < 0) {
cn[tmp2] = -(c[tmp2]);
}
else {
cn[tmp2] = c[tmp2];
}
if (bn[tmp2] >= (an[tmp2] + cn[tmp2])) {
availibility = 1;
}
}
if (availibility == 1) {
System.out.println("Dalyba is nulio arba labai mazo skaiciaus perkelties metodo eigoje negalima");
calculate_h();
calculate_f();
calculate_a();
calculate_b();
calculate_c();
calculate_d();
calculate_C();
calculate_D();
calculate_g();
calculate_e();
calculate_G();
calculate_H();
showSplineMatrix();
System.out.println("taske 1.1 = " + Spline(1.1));
}
else {
System.out.println("Negalioja triistrizaines vyravimo salyga");
System.exit(1);
}
}
public static void dataInitialize() {
int buffer = 1;
int pos = 0;
char ch;
String element = "";
try {
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("data.txt")));
while (in.available() != 0) {
ch = (char)in.readByte();
if (buffer == 1) {
if (ch != '\n') {
if (ch != ' ') {
element = element + ch;
}
else {
x[pos] = element;
element = "";
pos++;
}
}
else {
buffer++;
x[pos] = element;
element = "";
pos = 0;
}
}
else {
if (ch != '\n') {
if (ch != ' ') {
element = element + ch;
}
else {
y[pos] = element;
element = "";
pos++;
}
}
else {
buffer++;
y[pos] = element;
element = "";
pos = 0;
}
}
}
y[pos] = element;
element = "";
pos = 0;
} catch (IOException e) {
System.out.println("Klaida! Nepavyko nuskaityti is failo (data.txt)");
System.exit(1);
}
}
public static void convertToDouble() {
int pos = 0;
for (pos = 0; pos < length; pos++) {
xD[pos] = Double.parseDouble(x[pos]);
yD[pos] = Double.parseDouble(y[pos]);
}
}
public static void startUpData() {
int pos = 0;
System.out.print("X = ");
for (pos = 0; pos < length; pos++) {
if (pos != (length - 1)) {
if ((xD[pos] * 100) % 10 == 0.0) {
System.out.print(" " + xD[pos] + "| ");
}
else {
System.out.print(" " + xD[pos] + "| ");
}
}
else {
if ((xD[pos] * 100) % 10 == 0.0) {
System.out.println(" " + xD[pos]);
}
else {
System.out.print(" " + xD[pos]);
}
}
}
System.out.print("\nY = ");
for (pos = 0; pos < length; pos++) {
if (pos != (length - 1)) {
if ((yD[pos] * 1000) % 10 == 0.0) {
System.out.print(" " + yD[pos] + "| ");
}
else {
System.out.print(yD[pos] + "| ");
}
}
else {
if ((yD[pos] * 1000) % 10 == 0.0) {
System.out.println(" " + yD[pos]);
}
else {
System.out.print(yD[pos]);
}
}
}
}
public static void calculate_h() {
int pos = 0;
System.out.println("\n--------------- h ---------------");
for (pos = 0; pos < (length - 1); pos++) {
h[pos] = xD[pos + 1] - xD[pos];
System.out.println("h" + pos + " = " + h[pos]);
}
}
public static void calculate_f() {
int pos = 0;
System.out.println("\n--------------- f ---------------");
for (pos = 0; pos < (length - 1); pos++) {
f[pos] = (yD[pos + 1] - yD[pos])/h[pos];
System.out.println("f(x" + pos + ", x" + (pos + 1) + ") = " + f[pos]);
}
}
public static void calculate_a() {
int pos = 0;
a[0] = 0;
a[length - 1] = 0;
for (pos = 1; pos < (length - 1); pos++) {
a[pos] = h[pos - 1];
}
System.out.println("\n--------------- a ---------------");
for (pos = 0; pos < length; pos++) {
System.out.println("a" + pos + " = " + a[pos]);
}
}
public static void calculate_b() {
int pos = 0;
b[0] = 1;
b[length - 1] = 1;
for (pos = 1; pos < (length - 1); pos++) {
b[pos] = 2 * (h[pos] + h[pos - 1]);
}
System.out.println("\n--------------- b ---------------");
for (pos = 0; pos < length; pos++) {
System.out.println("b" + pos + " = " + b[pos]);
}
}
public static void calculate_c() {
int pos = 0;
c[0] = 0;
c[length - 1] = 0;
for (pos = 1; pos < (length - 1); pos++) {
c[pos] = h[pos];
}
System.out.println("\n--------------- c ---------------");
for (pos = 0; pos < length; pos++) {
System.out.println("c" + pos + " = " + c[pos]);
}
}
public static void calculate_d() {
int pos = 0;
d[0] = 0;
d[length - 1] = 0;
for (pos = 1; pos < (length - 1); pos++) {
d[pos] = 6 * (f[pos] - f[pos - 1]);
}
System.out.println("\n--------------- d ---------------");
for (pos = 0; pos < length; pos++) {
System.out.println("d" + pos + " = " + d[pos]);
}
}
public static void calculate_C() {
int pos = 0;
C[0] = -(c[0] / b[0]);
for (pos = 1; pos < (length - 1); pos++) {
C[pos] = -(c[pos] / (a[pos] * C[pos - 1] + b[pos]));
}
System.out.println("\n--------------- C ---------------");
for (pos = 0; pos < length; pos++) {
System.out.println("C" + pos + " = " + C[pos]);
}
}
public static void calculate_D() {
int pos = 0;
D[0] = d[0] / b[0];
D[length - 1] = (d[length - 1] - a[length - 1] * D[length - 2]) / (a[length - 1] * C[length - 2] + b[length - 1]);
for (pos = 1; pos < (length - 1); pos++) {
D[pos] = (d[pos] - a[pos] * D[pos - 1]) / (a[pos] * C[pos - 1] + b[pos]);
}
System.out.println("\n--------------- D ---------------");
for (pos = 0; pos < length; pos++) {
System.out.println("D" + pos + " = " + D[pos]);
}
}
public static void calculate_g() {
int pos = 0;
g[length - 1] = D[length - 1];
for (pos = (length - 2); pos >= 0; pos--) {
g[pos] = C[pos] * g[pos + 1] + D[pos];
}
System.out.println("\n--------------- g ---------------");
for (pos = 0; pos < length; pos++) {
System.out.println("g" + pos + " = " + g[pos]);
}
}
public static void calculate_e() {
int pos = 0;
for (pos = 0; pos < (length - 1); pos++) {
e[pos] = f[pos] - g[pos + 1] * (h[pos] / 6) - g[pos] * (h[pos] / 3);
}
System.out.println("\n--------------- e ---------------");
for (pos = 0; pos < (length - 1); pos++) {
System.out.println("e" + pos + " = " + e[pos]);
}
}
public static void calculate_G() {
int pos = 0;
for (pos = 0; pos < (length - 1); pos++) {
G[pos] = g[pos] / 2;
}
System.out.println("\n--------------- G ---------------");
for (pos = 0; pos < (length - 1); pos++) {
System.out.println("G" + pos + " = " + G[pos]);
}
}
public static void calculate_H() {
int pos = 0;
for (pos = 0; pos < (length - 1); pos++) {
H[pos] = (g[pos + 1] - g[pos]) / (6 * h[pos]);
}
System.out.println("\n--------------- H ---------------");
for (pos = 0; pos < (length - 1); pos++) {
System.out.println("H" + pos + " = " + H[pos]);
}
}
public static void showSplineMatrix() {
int pos = 0;
System.out.println("\n");
for (pos = 0; pos < (length - 1); pos++) {
Sa[pos] = yD[pos] - e[pos] * xD[pos] + G[pos] * xD[pos] * xD[pos] - H[pos] * xD[pos] * xD[pos] * xD[pos];
Sb[pos] = e[pos] - 2 * G[pos] * xD[pos] + 3 * H[pos] * xD[pos] * xD[pos];
Sc[pos] = G[pos] - 3 * H[pos] * xD[pos];
Sd[pos] = H[pos];
}
System.out.println(" x x^2 x^3");
for (pos = 0; pos < (length - 1); pos++) {
System.out.println(Sa[pos] + " " + Sb[pos] + " " + Sc[pos] + " " + Sd[pos]);
}
System.out.println("\n");
}
public static double Spline(double x1) {
int buffer = 0;
double Spl = 0;
if ((x1 >= xD[0]) && (x1 <= xD[length - 1])) {
for (buffer = 0; buffer <= (length - 2); buffer++) {
if ((x1 >= xD[buffer]) && (x1 <= xD[buffer + 1])) {
Spl = yD[buffer] + e[buffer] * (x1 - xD[buffer]) + G[buffer] * (x1 - xD[buffer]) * (x1 - xD[buffer]) + H[buffer] * (x1 - xD[buffer]) * (x1 - xD[buffer]) * (x1 - xD[buffer]);
}
}
}
else {
System.out.println("X'as nepriklauso intervalui");
System.exit(1);
}
return Spl;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -