Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 3

Дискретный метод Ньютона для поиска минимума(перевод программного кода из Java в MATLAB)

10.12.2013, 23:07. Показов 2635. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Попытался сделать при помощи двух M-file`ов с функциями и скрипта с циклами, но внятного результата не достиг. Если возможно- помогите =)

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
package org.mtuci.mm.zero_max_min;
 
// ПРИМЕНЕНИЕ ДИСКРЕТНОГО МЕТОДА НЬЮТОНА ДЛЯ ПОИСКА МИНИМУМА
public class Bond 
{
  static final double e2 = 14.4;
  static final double v0 = 1090;
  static final double r0 = 0.33;
  
  public static void main(String argv[]) 
  {
    double del = 1e-12;
    double r   = 3;
    double dr  = 0.1;
    
    int n = 200;
    r = secant2(n, del, r, dr);
    
    System.out.println("The bond length is " + r + " angstroms");
    System.out.println("The value is: " + g(r));
  }
 
// Method to carry out the secant search for the
// minimum of g(x) via the root of f(x)=-dg(x)/dx=0.
  public static double secant2(int n, double del, double x, double dx) 
  {
    int     k = 0;
    double x1 = x+dx;
    double g0 = g(x);
    double g1 = g(x1);
    
    if (g1 > g0)
        x1 = x-dx;
    
    while ((Math.abs(dx) > del) && (k < n)) 
    {
      double d = f(x1) - f(x);
      dx = -(x1 - x) * f(x1) / d;
      x  = x1;
      x1 += dx;
      k++;
    }
    
    if (k == n)
        System.out.println("Convergence not found after " + n + " iterations");
    
    return x1;
  }
 
  // Method to provide function g(x)=-e2/x+v0*exp(-x/r0).
  public static double g(double x) 
  {
      return -e2 / x + v0 * Math.exp(-x / r0);
  }
 
  // Method to provide function f(x)=-dg(x)/dx.
  public static double f(double x) 
  {
    return -e2 / (x * x) + v0 * Math.exp(-x / r0) / r0;
  }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.12.2013, 23:07
Ответы с готовыми решениями:

Перевод программного кода с C++ на Java
Нужно перевести данный код на Java #include &lt;iostream&gt; using namespace std; // Вывод системы уравнений void sysout(double **a,...

Метод Ньютона для нахождения максимума/минимума.
Уважаемые форумчане помогите сделать задание в MathCAD. так как я вообще не знаю как в нем работать не могу даже выложить наработки....

Модифицированный метод Ньютона для нахожения минимума функции
Реализован метод Ньютона для нахождения минимума функции. Для заданой функции метод работает, но для других работает не правильно. Для...

2
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 3
12.12.2013, 11:48  [ТС]
Вот код в MATLAB. Как говорил выше-вразумительного результата не могу получить...

Matlab M
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
clc;
clear;
 
e2=14.4;
v0=1090;
r0=0.33;
 
% Основное условие:
g=@(x) -e2/x + v0 *exp(-x/r0);
f=@(x) -dg(x) / dx;
 
 
del = 1e-12;
r   = 3;
dr  = 0.1;
 
n = 200;
 
disp(['The bond length is: ', num2str(r)  ' angstroms']);
disp(['The value is: ', num2str(g(r))]);
 
 
% Method to carry out the secant search for the
% minimum of g(x) via the root of f(x)=-dg(x)/dx=0
 
k  = 0;
x1 = x+dx;
g0 = g(x);
g1 = g(x1);
 
 
if (g1 > g0)
    x1 = x-dx;
end
 
while abs(dx) > del %&& (k < n) 
    d  = f(x1) - f(x);
    dx = -(x1 - x) * f(x1) / d;
    x  = x1;
    x1 = x1+dx;
    k  = k+1;
end
 
if k == n
    disp(['Convergence not found after ', num2str(n) ' iterations']);
end   
%Method to provide function g(x)=-e2/x+v0*exp(-x/r0).
Добавлено через 8 минут
Цитата Сообщение от Fr0ll Посмотреть сообщение
Вот код в MATLAB. Как говорил выше-вразумительного результата не могу получить...

Matlab M
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
clc;
clear;
 
e2=14.4;
v0=1090;
r0=0.33;
 
% Основное условие:
g=@(x) -e2/x + v0 *exp(-x/r0);
f=@(x) -dg(x) / dx;
 
 
del = 1e-12;
r   = 3;
dr  = 0.1;
 
n = 200;
 
disp(['The bond length is: ', num2str(r)  ' angstroms']);
disp(['The value is: ', num2str(g(r))]);
 
 
% Method to carry out the secant search for the
% minimum of g(x) via the root of f(x)=-dg(x)/dx=0
 
k  = 0;
x1 = x+dx;
g0 = g(x);
g1 = g(x1);
 
 
if (g1 > g0)
    x1 = x-dx;
end
 
while abs(dx) > del %&& (k < n) 
    d  = f(x1) - f(x);
    dx = -(x1 - x) * f(x1) / d;
    x  = x1;
    x1 = x1+dx;
    k  = k+1;
end
 
if k == n
    disp(['Convergence not found after ', num2str(n) ' iterations']);
end   
%Method to provide function g(x)=-e2/x+v0*exp(-x/r0).
Часть закоментировал в 36 строке потому, что не знаю как в матлабе эта логическая операция делается +
не разобрался как находиться
16. int n = 200;
17. r = secant2(n, del, r, dr);
в коде на Java
0
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 3
14.12.2013, 18:39  [ТС]
Неужели ни кто не может помочь ?! возможно я и ошбаюсь, но вроде как подправить мой код надо самую малость..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.12.2013, 18:39
Помогаю со студенческими работами здесь

Перевод кода бинарного поиска с С++ на Java
Добрый вечер! Переписываю код с С++ на Java. Не могу помять как как устроен бинарный поиск по массиву в С++. Точнее разобраться с...

Метод для поиска локального минимума в классе Array
Здравствуйте. Такая задача: Дан массив размера N. Найти номер его первого локального минимума (локальный минимум — это элемент, который...

Нахождение минимума функции. Метод Ньютона
Помогите пожалуйста решить задачу, о Умные Люди!!! Задача: f(x;y)=e^(y+x)-x^2+y Методом Ньютона (с точки зрения оптимизации) найти...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru