Матлаб графика ошибок

у меня есть список функций:

[ x - 3^(1/2)/2, x - 4967757600021511/81129638414606681695789005144064, x + 3^(1/2)/2, x - 4160783518353059/4503599627370496, x - 1723452963400281/4503599627370496, x + 3446905926800561/9007199254740992, x + 4160783518353059/4503599627370496, x - 8566355544790271/9007199254740992, x - 2647149443198255/4503599627370496, x - 4967757600021511/81129638414606681695789005144064, x + 5294298886396509/9007199254740992, x + 8566355544790271/9007199254740992, x - 8700286382685973/9007199254740992, x - 2^(1/2)/2, x - 291404338770025/1125899906842624, x + 2331234710160199/9007199254740992, x + 2^(1/2)/2, x + 2175071595671493/2251799813685248, x - 8781369964030313/9007199254740992, x - 7042111946219083/9007199254740992, x - 3908077291623905/9007199254740992, x - 4967757600021511/81129638414606681695789005144064, x + 122127415363247/281474976710656, x + 880263993277385/1125899906842624, x + 4390684982015157/4503599627370496]

и я хотел бы построить функции с помощью этой команды «plot (funciones_che (1))», но когда я делаю график, выдает следующую ошибку:

Error using plot. A numeric or double convertible argument is expected

Я также пробовал x = -10: 10 и plot (x, funciones_che (1)), но получаю ту же ошибку.


person Jac    schedule 10.09.2015    source источник


Ответы (1)


У вас нет вектора функций. Переменная funciones_che — это просто длинная связанная последовательность чисел. Если вы запустите size(funciones_che), вы должны получить 1 x m*n, где m — это length(x), а n — это количество «функций», которые у вас есть. Наличие истинного вектора функций на самом деле излишне усложнило бы вашу жизнь.

Если где-то в строке есть символьное выражение, его может быть немного сложно очистить: -engine.html" rel="nofollow">http://www.mathworks.com/help/symbolic/clear-assumptions-and-reset-the-symbolic-engine.html. Я рекомендую сбросить весь символический движок со всеми его предположениями на всякий случай: reset(symengine).

MATLAB очень хорош для построения матриц, подобных той, что у вас есть, но размер должен быть правильным:

  1. Разделяйте графики точкой с запятой (;), а не запятой (,):

    funciones_che=[ x - 3^(1/2)/2; x - 4967757600021511/81129638414606681695789005144064; x + 3^(1/2)/2; .....]
    

    Теперь size(funciones_che) будет n x m.

  2. Транспонируйте матрицу (чтобы plot правильно ее интерпретировал):

    funciones_che = funciones_che';
    

    Теперь size(funciones_che) будет m x n.

Постройте, как вы хотели: plot(funciones_che(:, 1)) для первого вектора или plot(funciones_che), чтобы поместить их все на один и тот же график. Если вас не интересует вторая версия, вам не нужно транспонировать матрицу. Если вы не транспонируете матрицу, вместо этого используйте plot(funciones_che(1, :)).

Заключительный момент: вам нужно инициализировать x, например, до -10:10, как вы пытались.

person Mad Physicist    schedule 10.09.2015
comment
Спасибо за ответ, но выдает ту же ошибку. Ошибка использования сюжета. Ожидается числовой или двойной конвертируемый аргумент - person Jac; 10.09.2015
comment
Как вы определяете x? - person Mad Physicist; 10.09.2015
comment
Я определяю это как: x=-10:10; - person Jac; 10.09.2015
comment
Запустите clear x funciones_che, затем снова x=-10:10; funciones_che=...;. - person Mad Physicist; 10.09.2015
comment
Возможно, вы перезаписали некоторые переменные значениями странного типа в другом месте. - person Mad Physicist; 10.09.2015
comment
Если это не сработает, каков результат class(x) и class(funciones_che)? - person Mad Physicist; 10.09.2015
comment
Я очистил все рабочее пространство, но выдает ту же ошибку:/ - person Jac; 10.09.2015
comment
Код, который у меня есть, работает нормально и создает график, но я удалил ...... Можете ли вы опубликовать полное определение вектора? И результат class(funciones_che)? - person Mad Physicist; 10.09.2015
comment
класс (x) = двойной и класс (functions_che) = sym - person Jac; 10.09.2015
comment
Ах. Это бы сработало. Я обновил свой ответ. Просто запустите команду сброса, чтобы сделать все double вместо sym. - person Mad Physicist; 10.09.2015
comment
Если вы нашли этот ответ полезным, пожалуйста, выберите его как правильный. - person Mad Physicist; 12.09.2015