2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Помогите с программой в Матлабе!
Сообщение16.03.2012, 22:38 


16/03/12
6
В общем, смысл программы такой: нужно решить систему из пяти дифференциальных уравнений, причём в правой части содержатся функции табличного типа, которые задаются следующим образом:


function f = DC(x)
s = 0:0.5:4;
p = [3 1.8 1 0.8 0.7 0.6 0.53 0.5 0.5];
if x<=0
f=3;
end
if x>=4
f=0.5;
end
if (x>0)&(x<1)
f=interp1(s,p,'linear');

end



И таких 20 штук. Проблема в том, что при обращении к этой функции выдаёт ошибку:


??? Output argument "f" (and maybe others) not assigned during call to "D:\АНХ\4 курс\7
семестр\НИР\программа\DC.m>DC".


ну и отсылает меня к первой строчке файла, где я описываю тело функции.

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 14:56 
Заслуженный участник


11/05/08
32166
Olga898 в сообщении #549137 писал(а):
if (x>0)&(x<1)

Это уж точно как минимум опечатка.

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 17:52 


16/03/12
6
Ой, это просто так почему-то скопировалось. я не заметила. На самом деле там значок "или".
кстати, кто готов взяться помочь с программой - пишите в аську: 413363693.
Цена договорная=)

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 18:17 
Заслуженный участник


11/05/08
32166
Olga898 в сообщении #549409 писал(а):
Ой, это просто так почему-то скопировалось. я не заметила. На самом деле там значок "или".

На самом деле там правильный значок именно "и". Но не в этом дело, а в том, что верхняя граница задана неверно. Если в оригинале действительно так и было, то именно "not assigned during call to" и должно было выдаваться.

Кроме того, я не понимаю смысла команды f=interp1(s,p,'linear'). Я не помню синтаксиса матлабовских команд кусочной интерполяции, но в любом случае: где тут ссылка на аргумент-то?...

Кроме того, хоть формально это и не ошибка, но в подобных случаях операторы if малоуместны. Надо писать всё в одну строчку, примерно так:

f=3*(x<=0) + 0.5*(x>=4) + <...interp...> * ((x<4)&(x>0));

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 18:47 


16/03/12
6
Да не, тут всё нормально с этой командой по-моему... По крайней мере в самом же м-файле он не подчёркивает, значит ничего особо криминального тут нет...
А про if я знаю что не очень хорошо, но уже лень все функции заново переписывать, раз не ошибка.

Ещё ошибку выдаёт:
Error in ==> DC at 4
s = 0:0.5:4;

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 20:33 
Заслуженный участник


11/05/08
32166
Olga898 в сообщении #549440 писал(а):
Да не, тут всё нормально с этой командой по-моему... По крайней мере в самом же м-файле он не подчёркивает, значит

Если это что и значит, то только то, что в таком случае эта команда возвращает по умолчанию (характерному для Матлаба) некоторую структуру, состоящую из наборов коэффициентов многочленов, реализующих кусочную аппроксимацию. А это совсем не то, на что Вы нацелились.

И, кстати, Вы так и не ответили, действительно ли у Вас в том месте четвёрка была перепутана с единичкой. Если да -- то эта ошибка вполне может перешибить все дальнейшие, и тогда только она и будет выводиться.

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 20:35 


16/03/12
6
Да, перепутала я четвёрку с единичкой, нашла, исправила, спасибо большое! но ничего не изменилось(
а с этим кусочком, где интерполяция, мне, честно говоря, помогли))

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 21:10 
Заслуженный участник


11/05/08
32166
Olga898 в сообщении #549486 писал(а):
а с этим кусочком, где интерполяция, мне, честно говоря, помогли))

Ну если помогли -- то явно неграмотно. Повторюсь: подробностей интерфейсов я не в курсе, но та Ваша строчка уж чересчур откровенно противоречит предыдущим.

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 21:31 


16/03/12
6
ewert в сообщении #549507 писал(а):
Olga898 в сообщении #549486 писал(а):
а с этим кусочком, где интерполяция, мне, честно говоря, помогли))

Ну если помогли -- то явно неграмотно. Повторюсь: подробностей интерфейсов я не в курсе, но та Ваша строчка уж чересчур откровенно противоречит предыдущим.

Хм.. ну ладно, будем разбираться тогда))
А Вы не знаете, то что он ругается на строчку s = 0:0.5:4;, это с чем может быть связано?

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 21:50 
Заслуженный участник


11/05/08
32166
Olga898 в сообщении #549516 писал(а):
А Вы не знаете, то что он ругается на строчку s = 0:0.5:4;, это с чем может быть связано?

Понятия не имею. Конкретно в этом месте он ни на что не должен ругаться. Ну разве что запятая вместо точки вставлена (тоже, между прочим, вполне распространённая рассеянность).

-- Сб мар 17, 2012 22:57:45 --

Ну или с пробелами что не так. В Вашей версии всё вроде в порядке. Но стоит зазевать один пробел -- и эти два массива окажутся разной длины, и тогда катастрофа.

На большее моих фантазий не хватает.

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 22:29 


16/03/12
6
Понятно... Спасибо большое, буду разбираться)

 Профиль  
                  
 
 Re: Помогите с программой в Матлабе!
Сообщение08.04.2012, 20:51 


08/04/12
1
Помогите пожалуйста :lol: :lol: :lol: :lol: :lol: :lol: !!!!!
Как прописать в матлабе?
матричную експоненту expm(B*i);, где В это постоянная матрица размера 2х2, а i=0.01:.1:5

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group