возможно синтаксическая ошибка, помогите разобраться

Форум пользователей пакета Mathematica

Модератор: Admin

VVL
Сообщения: 4
Зарегистрирован: Чт мар 28, 2013 12:57 pm

возможно синтаксическая ошибка, помогите разобраться

Сообщение VVL » Чт мар 28, 2013 1:26 pm

здравствуйте.
программа не моя - надо усовершенствовать,
автор к сожалению недоступен, а я в математике почти ноль :(

при переходи из версии 5 на версию шесть возникла ошибка (на картинке в коде выделено красным цветом), вероятнее всего синтаксическая.

понять сама не могу,
ещё выдается ошибка видимо связанная с этим местом:
Part::partd: Part specification {0.,Null}[[1,1]] is longer than depth of object. >>

помогите советом, пожалуйста
Изображение
Изображение
Кто не курит и не пьёт - ровно дышит, больно бьёт!

Selin
Сообщения: 43
Зарегистрирован: Чт апр 14, 2011 11:14 am

Сообщение Selin » Пт мар 29, 2013 11:44 am

Уважаемая, прежде всего отмечу, что ваш jpg-текст, практически, нечитаем. При попытке увеличения размывается. Посему рекомендую впредь давать в txt-формате – и читабельнее, и просто копировать помогающему на свой комп, а не набирать вручную с ваших рисунков. Неужели вы думаете, что форумчанам больше делать нечего?!

Теперь по диагностике, взятой из текста. См. пример:

In[2038]:= {0., Null}[[1, 1]]
Part::partd: Part specification {0.,Null}[[1,1]] is longer than depth of object. >>

Неправомочно простой 2-элементный список отождествлен с вложенным списком. Если хотели выделить первый элемент, то

In[2040]:= {0.`, Null}[[1]]
Out[2040]= 0.

Ваш вариант работает для вложенных списков, например:

Out[2038]= {0., Null}[[1, 1]]
In[2039]:= {{a, b}, {c, d}}[[1, 1]]
Out[2039]= a
In[2040]:= {{x, y}, {a, b}, {c, d}}[[2, 2]]
Out[2040]= b

Все же рекомендую сначала изучить основы работы со списками, а в целом и с основами Mathematica, ибо подобных элементарнейших проколов будет немеряно.

VVL
Сообщения: 4
Зарегистрирован: Чт мар 28, 2013 12:57 pm

Сообщение VVL » Пт мар 29, 2013 11:54 am

спасибо за ответ, но я сама поразбиралась и поняла, и поняла что проблема другая меня волнует:

при переходи из версии 5 на версию шесть возникла ошибка, вероятнее всего синтаксическая.

вот строка с ошибкой:
ListPlot[inipool[[All, cellAuxinIndex]], Joined -> True];
где inipool - матрица грубо говоря, а cellAuxinIndex - номер столбца.
эта строчка работала в 5-й версии, а в 6-й не хочет.
может заменить на что-то можно?

помогите советом, пожалуйста

полный код функции:
createInitialCells[numIniCells_] :=
Module[{arrCellIniRads, arrCellIniLocs, curPos, nextPos, inipool},
curPos = nextPos = 0;
arrCellIniRads = RandomReal[{0.3`, 0.65`}, numIniCells];

arrCellIniLocs =
Function[{curCellIniRad}, curPos = nextPos - curCellIniRad;
nextPos -= 2 curCellIniRad; curPos] /@ arrCellIniRads;
arrCellIniLocs += -Last[arrCellIniLocs];

inipool =
MapThread[
Function[{curCellIniPos, curCellIniRad, i},
cell[-i, 1, curCellIniPos, curCellIniRad, 0, 0, 0,
If[i == 1, gShootID, -(i - 1)],
If[i == numIniCells, gGroundID, -(i + 1)]]], {arrCellIniLocs,
arrCellIniRads, Range[1, Length[arrCellIniLocs]]}];
inipool[[All, cellAuxinIndex]] =
Function[{curCellIniPos}, N[5 E^-(3 - curCellIniPos)^2]] /@
arrCellIniLocs;

ListPlot[inipool[[All, cellAuxinIndex]], Joined -> True];

inipool];
Кто не курит и не пьёт - ровно дышит, больно бьёт!

Selin
Сообщения: 43
Зарегистрирован: Чт апр 14, 2011 11:14 am

Сообщение Selin » Пт мар 29, 2013 12:15 pm

Уважаемая, в строке

ListPlot[inipool[[All, cellAuxinIndex]], Joined -> True];

ошибка, о чем и говорит ";". Будьте внимательнее при копировании чужих кодов. Извините, но нет времени заниматься этим.

VVL
Сообщения: 4
Зарегистрирован: Чт мар 28, 2013 12:57 pm

Сообщение VVL » Пт мар 29, 2013 12:31 pm

я понимаю, что ошибка - не настолько уж я тупая, не понимаю почему - чего-то не хватает?
Кто не курит и не пьёт - ровно дышит, больно бьёт!