Неизвестная функция или переменная "x". в Matlab - PullRequest
0 голосов
/ 05 мая 2020

пытается написать код Matlab для реализации метода Эйлера для решения дифференциального уравнения y '= 2 + 2x-x2 при начальном условии y (0) = 1. Используйте размер шага 0,1 и оцените значение при x = 1 и x = 2.

при запуске кода я получаю нераспознанную функцию или переменную 'x'

dy =(2+2*x-2^2);

  x0 = 1;


  xn = 2;


  y = 1;

  h = 0.1;

  fprintf ('x \t\t y (Euler)\t y (analytical)\n') %data table header 

  fprintf ('%f \t %f\t %f\n' ,x0,y,(x0));


  for x = x0 : h : xn-hypot

   y= y + 2+2*x-2^2 * h;


  x = x + h;


  fprintf ('%f \t %f\t %f\n',x,y,(x));

 end

1 Ответ

2 голосов
/ 05 мая 2020

Проблема находится в первой строке кода:

dy =(2+2*x-2^2);

, поскольку это первая инструкция кода, переменная x не была объявлена, и Matlab возвращает указанную вами ошибку.

Я также хотел бы добавить два комментария:

  1. Потому что в for l oop вы уже ввели производную, y= y + 2+2*x-2^2 * h;, вам не нужно указать производную в начале кода. Прокомментируйте или удалите первую строку.

  2. Однако лучший способ сделать метод Эйлера более общим - использовать дескрипторы функций . Затем вы можете ввести в первой строке кода

    dy = @(x) (2+2*x-2^2);

и для l oop использовать эту функцию:

for x = x0 : h : xn-hypot
   y = y + dy(x) * h;
   x = x + h;
end

Таким образом, вам не нужно менять значение l oop с помощью метода Эйлера, и он фактически работает для любого дифференциального уравнения первого порядка (просто измените функцию dy).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...