MATLAB и функция - PullRequest
       15

MATLAB и функция

0 голосов
/ 13 ноября 2009

Я хочу вычислить функцию y(t) из уравнения:

y(t) = -3t^2+5, t>=0
y(t) = 3t^2+5, t<0

for -9 <= t <= with the step-size 0.5

И я хочу построить это с помощью MATLAB. Я подхожу к этому вопросу двумя способами:

Первый

t=0:0.5:9
y=-3*t^2+5

t1=-0.00000000001:0.5:-9
y1=3*t^2+5

plot(t,y,t1,y1)

Второй с использованием цикла

t=-9:0.5:9

if(t>=0)
    y=-3*(t.^2)+5
else
    y=3.*(t.^2)+5
end

plot(t,y)

Моя проблема в том, что два вышеупомянутых способа не дают одинакового ответа ... Какой из них является правильным?

Ответы [ 3 ]

6 голосов
/ 13 ноября 2009

Вы можете использовать функцию sign, чтобы сделать этот конкретный пример немного проще:

t = -9:0.5:9;
y = -sign(t)*3.*t.^2 + 5;
plot(t,y);
1 голос
/ 13 ноября 2009

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

t = -9:0.5:9
y = -3*t.^2+5
y(t<0) = 3*t(t<0).^2+5

plot(t, y)
1 голос
/ 13 ноября 2009

В первой попытке ваше определение t1 должно быть:

t1 = 0:-0.5:-9;

Обратите внимание на знак минуса на приращении.

Используя "петлю", вы, кажется, пропустили фактическую часть петли. Попробуйте что-то вроде

t = -9:0.5:9;
for idx = 1:length(t)
    if t(idx) <= 0
        y(idx) = -3*(t(idx).^2)+5

и т.д.

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