Как правильно построить плавно возрастающую функцию в MATLAB?
Дана задача: построить плавно возрастающую функцию. Пытался решить таким образом:
clear,clc
X=-5:1:10
y1=[]
y2=[]
K=0:0.1:1.3
for x=X
if x<0
y1=[y1 0]
end
end
for k=K
if k<=1
y2=[y2 x*k]
end
end
Y=[y1 y2]
plot(X,Y)
Но на графике идет резкое искривление кривой, т.е. x=y. Я же рассчитывал на значения по типу x=1, y=1 * 0.1, x=2,y=2 * 0.2 и т.д. Помогите, пожалуйста, разобраться.
Ответы (2 шт):
После выполнения первого цикла в переменной x остаётся последнее значение X, т.е. 10. Соответственно в y2 во втором цикле попадают значения 10 * 0, 10 * 0.1 и т.д., т.е. 0, 1, 2, ... Если вы хотите получить в y2 значения 10.1, 20.2 и т.д., то, наверное, и умножать k нужно не на 10, а на 101:
for k=K
if k<=1
y2=[y2 101*k]
end
end
Вернее, тут первый элемент будет 0, если он вам не нужен, то сделайте y2=[y2 101*(k+1)]
Всё значительно проще:
x=-5:10;
y=0.1*x.*(x>=0);
plot(x,y)
И ставьте точку с запятой в конце строки, чтобы на дисплей не выводились все результаты, особенно большие массивы чисел.