Как правильно построить плавно возрастающую функцию в MATLAB?

Рейтинг: 0Ответов: 2Опубликовано: 24.05.2023

Дана задача: построить плавно возрастающую функцию. Пытался решить таким образом:

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 и т.д. Помогите, пожалуйста, разобраться.

Ответы

▲ 1

Всё значительно проще:

x=-5:10;
y=0.1*x.*(x>=0);
plot(x,y)

И ставьте точку с запятой в конце строки, чтобы на дисплей не выводились все результаты, особенно большие массивы чисел.

▲ 0

После выполнения первого цикла в переменной 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)]