Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 64

Как пользоваться smile-kriging

07.03.2018, 12:35. Показов 1606. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Подскажите пожалуйста, как пользоваться smile-kriging?
Передаю для создания объекта класса широту, долготу (x) и высоту (y):
Java
1
KrigingInterpolation k = new KrigingInterpolation (x, y);
Но на моменте LU разложения всегда вылетает за рамки массива.
Помогите пожалуйста, если кто сможет разобраться, либо уже использовал. Очень-очень срочно нужно реализовать этот проект.

Прикладываю код main:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void main(String[] args){
        
        int n = 4;
        int m = 2;
        double[][] x = new double[n][m];
        double[] y = new double[n];
        
        Scanner sc = null;
        try {
            sc = new Scanner(new File("C:\\eclipse_workspace\\kriging\\points.txt"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        
        for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m+1; j++)
                {
                    if(j == 2){
                        y_tmp[i] = sc.nextDouble();
                    }
                    else{
                        x_tmp[i][j] = sc.nextDouble();
                    }
                }
            }
        
        KrigingInterpolation k = new KrigingInterpolation (x, y);
Исходный файл выглядит так:
Java
1
2
3
4
3,75 5,27 5,99
2,73 1,86 2,44
1,53 2,88 4,01
5,18 2,33 1,99
Ссылка на исходный проект smile-kriging:
https://github.com/haifengl/sm... ation.java

Краткое описание:
https://haifengl.github.io/smi... ation.html

P.S. Вот ошибка, с которой я столкнулся при запуске проекта и ее исправление:
Ошибка при использовании com.github.fommil.netlib.NativeSystemLAPACK

Заранее крайне благодарен!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.03.2018, 12:35
Ответы с готовыми решениями:

как пользоваться программатором для Whirlpool, раздобыл программатор, а как им пользоваться я не знаю
подскажите плиз

AllSubmitter->Smile SEO Tools
В общем вопрос. Как можно перенести базу из AllSubmitter в Smile SEO Tools, при этом не потеряв все сайты для авторегистрации? Такое...

Smile SEO Tools - ткните пальцем плз!!!
Пожалуйста не шлите в ПОиск, там этого нету...=) Поставил демку (кто забыл - она там полнофункциональная на 14 дён) Если с...

14
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.03.2018, 13:31
Цитата Сообщение от v1a_sacra Посмотреть сообщение
как пользоваться smile-kriging
прочитать док и посмотреть тест?
0
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 64
07.03.2018, 14:31  [ТС]
xoraxax, если это вопрос, а не утверждение, то буду вам очень признателен, если вы посмотрите.

Вот ссылка на собранный мною проект, там только нужные для работы kriging файлы:
https://yadi.sk/d/oICwyZXC3T7P3a

P.S. В интернете не нашел никакой информации о том, какие данные нужно передавать для работы этого метода, а в мануале (ссылка выше), только описание конструкторов, и входных данных. Вот я и передаю согласно им, но вылетает исключение.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.03.2018, 15:04
в гите тест посмотри для этого класса
1
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 64
07.03.2018, 15:40  [ТС]
xoraxax, я правильно понимаю, вот этот тест?
Java
1
2
3
4
5
6
7
8
9
10
public void testInterpolate() {
        System.out.println("interpolate");
        double[][] x = {{0, 0}, {1, 1}};
        double[] y = {0, 1};
        KrigingInterpolation instance = new KrigingInterpolation(x, y);
        double[] x1 = {0.5, 0.5};
        assertEquals(0, instance.interpolate(x[0]), 1E-7);
        assertEquals(1, instance.interpolate(x[1]), 1E-7);
        assertEquals(0.5, instance.interpolate(x1), 1E-7);
    }
0
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 64
12.03.2018, 09:42  [ТС]
xoraxax, этот тест не работает. Точно так же вылетает за рамки массива при создании объекта класса Kriging, как и в моем случае.
Вот код:
Java
1
2
3
4
5
6
7
8
9
double[][] x = {{0, 0}, {1, 1}};
        double[] y = {0, 1};
        Kriging instance = new Kriging(x, y);
        double[] x1 = {0.5, 0.5};
        double tmp1 = instance.interpolate(x[0]);
        double tmp2 = instance.interpolate(x[1]);
        double tmp3 =instance.interpolate(x1);
        
        System.out.println(tmp1 + " " + tmp2 + " " + tmp3);
Вот ошибка:
Java
1
2
3
4
5
6
7
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at ru.msu.cmc.sp.kriging.JMatrix.get(JMatrix.java:137)
    at ru.msu.cmc.sp.kriging.LU.solve(LU.java:136)
    at ru.msu.cmc.sp.kriging.LU.solve(LU.java:110)
    at ru.msu.cmc.sp.kriging.Kriging.<init>(Kriging.java:63)
    at ru.msu.cmc.sp.kriging.Kriging.<init>(Kriging.java:19)
    at ru.msu.cmc.sp.kriging.Kriging.main(Kriging.java:131)
Если Вам не сложно уделите пожалуйста пару минут и посмотрите, в чем проблема. Ссылка на проект двумя сообщения выше. Заранее очень благодарен!
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
12.03.2018, 10:15
v1a_sacra, хз, что ты там делаешь, у меня все работает

Добавлено через 3 минуты
Цитата Сообщение от v1a_sacra Посмотреть сообщение
Kriging
чо за класс?
Цитата Сообщение от v1a_sacra Посмотреть сообщение
at ru.msu.cmc.sp.kriging.Kriging.main(Krigi ng.java:131
тут что?
0
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 64
12.03.2018, 10:28  [ТС]
xoraxax, это main class Kriging (Exception в 111 строке при создании объекта класса):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package ru.msu.cmc.sp.kriging;
 
import java.io.*;
import java.util.*;
 
public class Kriging {
    
    private double[][] x;
    private Variogram variogram;
    private double[] yvi;
    private double[] vstar;
   
    public Kriging(double[][] x, double[] y) {
        this(x, y, new PowerVariogram(x, y), null);
    }
 
    public Kriging(double[][] x, double[] y, Variogram variogram, double[] error) {
        this.x = x;
        this.variogram = variogram;
 
        int n = x.length;
 
        yvi = new double[n + 1];
        vstar = new double[n + 1];
        DenseMatrix v = Matrix.zeros(n + 1, n + 1);
 
        for (int i = 0; i < n; i++) {
            yvi[i] = y[i];
 
            for (int j = i; j < n; j++) {
                double var = variogram.f(rdist(x[i], x[j]));
                v.set(i, j, var);
                v.set(j, i, var);
            }
            v.set(n, i, 1.0);
            v.set(i, n, 1.0);
        }
 
        yvi[n] = 0.0;
        v.set(n, n, 0.0);
 
        if (error != null) {
            for (int i = 0; i < n; i++) {
                v.sub(i, i, error[i] * error[i]);
            }
        }
 
        LU lu = v.lu(true);
        lu.solve(yvi);
    }
 
    public double interpolate(double... x) {
        if (x.length != this.x[0].length) {
            throw new IllegalArgumentException(String.format("Invalid input vector size: %d, expected: %d", x.length, this.x[0].length));
        }
 
        int n = this.x.length;
        for (int i = 0; i < n; i++) {
            vstar[i] = variogram.f(rdist(x, this.x[i]));
        }
        vstar[n] = 1.0;
 
        double y = 0.0;
        for (int i = 0; i <= n; i++) {
            y += yvi[i] * vstar[i];
        }
        return y;
    }
 
    private double rdist(double[] x1, double[] x2) {
        double d = 0.0;
        for (int i = 0; i < x1.length; i++) {
            double t = x1[i] - x2[i];
            d += t * t;
        }
        return Math.sqrt(d);
    }
 
 
    public static void main(String[] args){
        
        /*int n = 4;
        int m = 2;
        double[][] x = new double[n][m];
        double[] y = new double[n];
        
        Scanner sc = null;
        try {
            sc = new Scanner(new File("C:\\eclipse_workspace\\kriging\\points.txt"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        
        for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m+1; j++)
                {
                    if(j == 2){
                        y[i] = sc.nextDouble();
                    }
                    else{
                        x[i][j] = sc.nextDouble();
                    }
                }
            }
    
        Kriging k = new Kriging(x, y);*/
        
        double[][] x = {{0, 0}, {1, 1}};
        double[] y = {0, 1};
        Kriging instance = new Kriging(x, y);
        double[] x1 = {0.5, 0.5};
        double tmp1 = instance.interpolate(x[0]);
        double tmp2 = instance.interpolate(x[1]);
        double tmp3 =instance.interpolate(x1);
        
        System.out.println(tmp1 + " " + tmp2 + " " + tmp3);
    }
 
}
Ошибка при создании самого объекта в main.
В методе solve() передается piv[] из вычислений LAPACK, и его значения потом передаются в get(). И там вылетает, потому что значение piv[], по которым идет работа с индексами в get() превышает рамки массива.

Место ошибки в solve():
Java
1
2
3
4
5
6
  // Copy right hand side with pivoting
            for (int j = 0; j < nrhs; j++) {
                for (int i = 0; i < m; i++) {
                    X.set(i, j, B.get(piv[i], j));
                }
            }
Место ошибки в get():
Java
1
2
3
4
@Override
    public double get(int i, int j) {
        return A[j*nrows + i];
    }
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
12.03.2018, 10:46
ну запускай дебаггер, смотри, че куда передаешь, что еще могу сказать
0
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 64
12.03.2018, 10:52  [ТС]
xoraxax, просто ты говоришь, что у тебя все работает, при этом ты ничего не изменял.
Это магия какая-то, ибо я запускаю тоже самое и получаю ошибки. Под чем ты запускаешь?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
12.03.2018, 11:00
свой код убери, только тест оставь
0
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 64
12.03.2018, 12:06  [ТС]
xoraxax, без изменений. При запуске теста все тоже самое...
Помоги мне пожалуйста, вряд ли кто-то еще ответит по этой теме. Мне очень нужно запустить этот проект, а в интернете нет никакой инфы, как это юзать...
Миниатюры
Как пользоваться smile-kriging  
0
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 64
12.03.2018, 12:10  [ТС]
xoraxax, может быть проблема в самом LAPACK и он как-то неправильно считает индексы?
Вот как я его прикрутил и избавился от ошибок. Правильно ли я сделал?
Ошибка при использовании com.github.fommil.netlib.NativeSystemLAPACK
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
12.03.2018, 12:20
Лучший ответ Сообщение было отмечено v1a_sacra как решение

Решение

подключай либу мавеном, там с ней вся эта шляпа поставляется

Добавлено через 33 секунды
XML
1
2
3
4
5
6
7
8
9
10
<dependency>
            <groupId>com.github.haifengl</groupId>
            <artifactId>smile-core</artifactId>
            <version>1.5.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.haifengl</groupId>
            <artifactId>smile-interpolation</artifactId>
            <version>1.5.1</version>
        </dependency>
0
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 64
12.03.2018, 13:17  [ТС]
xoraxax, спасибо большое, все заработало! Помимо того, что вы написали для LAPACK и slf4j нужно добавить в pom.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<dependencies>
        <dependency>
            <groupId>com.github.haifengl</groupId>
            <artifactId>smile-core</artifactId>
            <version>1.5.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.haifengl</groupId>
            <artifactId>smile-interpolation</artifactId>
            <version>1.5.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.fommil.netlib</groupId>
            <artifactId>all</artifactId>
            <version>1.1.2</version>
            <type>pom</type>
        </dependency>
        <dependency> 
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.0.13</version>
        </dependency>
        <dependency> 
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.8.0-beta1</version>
        </dependency>
        <dependency> 
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>1.8.0-beta1</version>
        </dependency>
   </dependencies>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.03.2018, 13:17
Помогаю со студенческими работами здесь

Deprecated: Function ereg() is deprecated in /home/u384616119/public_html/smile.php on line 15
{ if (ereg(&quot;.gif$&quot;, &quot;$file&quot;)) {$a=$file;}} closedir ($dir); sort($a); -------- Помогите,плиз

Как пользоваться функциями работы с файлами такими как fileExists CanCreatefile
кто нибудь может написать небольшие программы, что бы понять как пользоваться функциями работы с файлами такими как fileExists ...

Не понимаю как работаю куки, вернее как ними пользоваться в php
Не понимаю как работаю куки, вернее как ними пользоваться в php. Я понимаю, что это пара ключ значение, которое я должен установить для...

Подскажите хороший компилятор, как его установить, как им пользоваться?
Подскажите хороший компилятор, как его установить, как им пользоваться??

Как пользоваться событиями или как управлять формой из потока?
Начнем справа налево: Предположим есть поток tr1 и глобальная переменная int i; void tr1(){ while(openMain){ i++; } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru