Как выполнить кусочное уравнение с несколькими переменными в Matlab? - PullRequest
2 голосов
/ 08 декабря 2010

Я пытался сделать следующую кусочную функцию:

y(x,t) = {  0                   (t - 5) < 0 
         { (t - 5)*(t - x)      x < (t - 5) 
         { (t + x^2)            x >= (t - 5) 

Кажется, я не понимаю, как построить график этой функции, поскольку x = 0: .5: 10 и t = 0: .1: 10. Я знаю, как сделать это без т, но я теряюсь, когда т включен и имеет другие интервалы по сравнению с х.

Спасибо, Y_Y

1 Ответ

3 голосов
/ 08 декабря 2010

Умножение на значение истинности обычно работает, а затем вы просто складываете значения вместе:

y = @(x,t)( (t-5).*(t-x).*(x<(t-5)) + (t+x.^2).*(x>=(t-5)) );

Я не могу проверить это сейчас, поскольку у меня нет ноутбука MATLAB, но он должен работать так, как вы хотите.


Ваша настоящая проблема, похоже, связана с тем, что x и t имеют разные измерения. Это можно «исправить» с помощью функции meshgrid, которая создает две матрицы для использования в многомерных функциях:

[X, T] = meshgrid([1:.5:10], [0:.1:10]);
Z = y(X, T); % With y(x,t) as above

Z теперь является матрицей, содержащей значения y для различных x и t соответственно. Это может быть нанесено на поверхность как surf:

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