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

Ошибка при возведении в степень. В чем дело? Объясните, пожалуйста

15.11.2015, 15:32. Показов 1490. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Функция возведения в степень:

Matlab M
1
2
3
function  y  = bfunc(x)
y = x^2;
end


Метод деления пополам (поиск минимума):

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
function [y_min,x_min] = fdel( f, a, b, n )
 
for i=1:n
   l = b-a;
   x  = (a+b)/2;
   y = a+abs(l)/4;
   z = b-abs(l)/4;   
   f_x = f(x);
   f_y = f(y);
   f_z = f(z);
   if (f_y<f_x) 
       y_min = f_y;
       x_min = y;
       b = b - l/2;
   end
   if (f_z<f_x)
       y_min = f_z;
       x_min = z;
       a = a + l/2;
   end    
   y_min = f_x;
   x_min = x;
   a = y;
   b = z;
end
plot(x_min, y_min, 'rs')
end
Возникает ошибка
??? Attempted to access f(0); index must be a positive integer or logical.
Error in ==> fdel at 8
f_x = f(x);

Функция не хочет принимать 0/отрицательные/дробные числа
В чем дело?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2015, 15:32
Ответы с готовыми решениями:

Ошибка при передаче параметров в функцию. Объясните, ребят, пожалуйста, в чем ошибка
Есть функция, которую необходимо отобразить в виде линий уровня. Далее с помощью простого...

Объясните пожалуйста, в чем здесь дело(структура и указатель)
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;windows.h&gt; using namespace std; struct pizza...

Ошибка NAN при возведении в степень
Ребята помогите пожалуйста в чем проблема у меня в результатах пишет -NAN вот задание ...

Ошибка при возведении в степень по модулю 33
ошибка при возведении в степень по модулю 33 пробую 15^17 по модулю должен вывести 27 14^17...

5
Модератор
1747 / 1593 / 532
Регистрация: 13.09.2015
Сообщений: 5,541
15.11.2015, 15:50 2
Тут отрицательные значения функции ни при чём. В скобках указывается индекс элемента в массиве, а индекс не может быть не положительным.
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 6
15.11.2015, 17:02  [ТС] 3
Centurio, эмм, ну а я хочу передать переменную х в кач-ве параметра функции bfunc.

Добавлено через 1 минуту
Centurio, я нуб в матлабе, но хочу разобраться
0
3 / 3 / 0
Регистрация: 28.10.2013
Сообщений: 36
15.11.2015, 18:54 4
Прописывая f(x) вы обращаетесь к x-ому элементу массива. Нумерация в матлабе начинается с единицы, поэтому при x=0 он ругается. Если же ваша переменная f вообще не является массивом, то он будет ругаться на все попытки обратиться к элементам, кроме первого. Если вы хотите на вход вашей функции bfunc() передать элемент x, то так и напишите f_x = bfunc(x). Или я не правильно поняла вопрос?
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 6
15.11.2015, 20:51  [ТС] 5
TheMozddra, спасибо огромное, получилось.

Добавлено через 1 час 36 минут
Может, кому-нибудь пригодится. Реализация метода деления пополам (поиск минимума).
Вот корректный код:

Matlab M
1
2
3
function y = bfunc(x)
y=x^2;
end
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
function [x_min, y_min] = fdel( bfunc, a, b, n )
x  = (a+b)/2;
x_min = x;
y_min = bfunc(x);
for i=1:n
   l = b-a;
   x  = (a+b)/2;
   y = a+abs(l)/4;
   z = b-abs(l)/4;   
   f_x = bfunc(x);
   f_y = bfunc(y);
   f_z = bfunc(z);
   if (f_y<y_min) 
       y_min = f_y;
       x_min = y;
       b = b - l/2;
   end
   if (f_z<y_min)
       y_min = f_z;
       x_min = z;
       a = a + l/2;
   end  
   if (f_x<y_min)
   y_min = f_x;
   x_min = x;
   a = y;
   b = z;
   end
end
end
Вызов функции:

Matlab M
1
[x, y]=fdel(@bfunc, -2, 2, 3)
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
16.11.2015, 10:18 6
Цитата Сообщение от y_snak Посмотреть сообщение
function y = bfunc(x)
y=x^2;
Тут есть один важный нюанс: СЕКРЕТНО! Зловещая точка претыкания
0
16.11.2015, 10:18
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2015, 10:18
Помогаю со студенческими работами здесь

Ошибка при возведении в степень с функций ln и exp
Собственно вот код: var n, c: integer; a, b: real; begin ...

Ошибка 207 при возведении числа в степень
for i:=1 to n do a:=(exp(i*ln(-1))) как возвести -1 в степень подскажите?

Ошибка при возведении числа в отрицательную степень
Здравствуйте! Начал учить С++ по книге Лафоре. При выполнении задачи из раздела функции столкнулся...

Выдает Invalid floating point operation. не могу понять в чем дело. объясните пожалуйста
procedure TForm1.btn1Click(Sender: TObject); var a,b,c,d:Integer; x,x1,x2:Real; begin ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru