2014 dxdy logo

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

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




 
 Помогите с программой в Матлабе!
Сообщение16.03.2012, 22:38 
В общем, смысл программы такой: нужно решить систему из пяти дифференциальных уравнений, причём в правой части содержатся функции табличного типа, которые задаются следующим образом:


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 
Olga898 в сообщении #549137 писал(а):
if (x>0)&(x<1)

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

 
 
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 17:52 
Ой, это просто так почему-то скопировалось. я не заметила. На самом деле там значок "или".
кстати, кто готов взяться помочь с программой - пишите в аську: 413363693.
Цена договорная=)

 
 
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 18:17 
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 
Да не, тут всё нормально с этой командой по-моему... По крайней мере в самом же м-файле он не подчёркивает, значит ничего особо криминального тут нет...
А про if я знаю что не очень хорошо, но уже лень все функции заново переписывать, раз не ошибка.

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

 
 
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 20:33 
Olga898 в сообщении #549440 писал(а):
Да не, тут всё нормально с этой командой по-моему... По крайней мере в самом же м-файле он не подчёркивает, значит

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

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

 
 
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 20:35 
Да, перепутала я четвёрку с единичкой, нашла, исправила, спасибо большое! но ничего не изменилось(
а с этим кусочком, где интерполяция, мне, честно говоря, помогли))

 
 
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 21:10 
Olga898 в сообщении #549486 писал(а):
а с этим кусочком, где интерполяция, мне, честно говоря, помогли))

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

 
 
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 21:31 
ewert в сообщении #549507 писал(а):
Olga898 в сообщении #549486 писал(а):
а с этим кусочком, где интерполяция, мне, честно говоря, помогли))

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

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

 
 
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 21:50 
Olga898 в сообщении #549516 писал(а):
А Вы не знаете, то что он ругается на строчку s = 0:0.5:4;, это с чем может быть связано?

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

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

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

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

 
 
 
 Re: Помогите с программой в Матлабе!
Сообщение17.03.2012, 22:29 
Понятно... Спасибо большое, буду разбираться)

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

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group