Сообщение об ошибке здесь примерно так же самоочевидно, как и получается. Вы не определяете переменную с именем x
, поэтому, когда вы ссылаетесь на нее в первой строке вашей функции, MATLAB не знает, что использовать. Вам нужно либо определить его в функции, прежде чем ссылаться на него, передать его в функцию или определить его где-нибудь дальше по стеку, чтобы он был доступен при вызове LaplaceTransform.
Поскольку вы пытаетесь численно интегрировать по отношению к x
, я предполагаю, что вы хотите, чтобы x
принимал значения, равномерно распределенные в вашем домене [0,1]. Вы можете сделать это, например,
x = linspace(a,b,N);
РЕДАКТИРОВАТЬ: здесь есть несколько других проблем: во-первых, когда вы определяете g
, вам нужно использовать .*
вместо *
для умножения элементов в массивах (по умолчанию MATLAB интерпретирует умножение как матрицу умножение). Во-вторых, ваши вызовы g(a)
и g(b)
трактуют g
как функцию, а не как массив значений функции. Это то, к чему нужно привыкнуть в MATLAB; вместо g(a)
вам действительно нужен первый элемент вектора g
, который задается как g(1)
. Аналогично, вместо g(b)
вам нужен последний элемент g
, который задается как g(length(g))
или g(end)
. Если это не имеет смысла, я бы посоветовал взглянуть на базовое руководство по MATLAB, чтобы понять, как используются векторы и функции.