Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Матлаб, как написать код для блок схемы

Дмитрий Климов Ученик (114), открыт 1 месяц назад
Не понимаю что такое f(x) и как его вбить в начало кода, и немного не понимаю как надо сделать алгоритм с подусловием чтобы выполнить возвращение, самая левая стрелка, помогите(
3 ответа
умный шлепа (кот) Профи (845) 1 месяц назад
постараюсь объяснить
f(x) - это функция в математике. Например, f(x)=3 x 2, это значит, что если х равна 2, то функция будет 6.
Чтобы добавить f(x) в начало кода, нужно написать что-то вроде "def f(x):".
Что касается алгоритма с условием для возвращения, можешь дать более конкретный пример того, что тебе нужно? Это будет проще понять.
Дмитрий КлимовУченик (114) 1 месяц назад
Как сделать возвращение от (abs(x4-x1))>2e к
x1=a x4=b и Z=1/3, то есть к началу всего цикла
умный шлепа (кот) Профи (845) Дмитрий Климов, `if abs(x4-x1) > 2.0e-1:` `x1 = a` `x4 = b` `Z = 1/3.0` Вернет `x1 = a`, `x4 = b` и `Z = 1/3` если абсолютное значение разницы между `x4` и `x1` больше 2.0 \* 10-1 (то есть 0.02).
Дмитрий КлимовУченик (114) 1 месяц назад
Если знать как это сделать бы ещё(
умный шлепа (кот) Профи (845) Дмитрий Климов, ладно я помогу тебе
Дмитрий КлимовУченик (114) 1 месяц назад
Товарищ, это не питон, это MATLAB(
Дмитрий КлимовУченик (114) 1 месяц назад
Был бы это питон, я бы радовался жизни
умный шлепа (кот) Профи (845) Дмитрий Климов, что такое питон
Дмитрий КлимовУченик (114) 1 месяц назад
ну, Python, ты правильно расписываешь для него, спору нет, всё равно полезно, а я ковыряюсь в программе MATLAB и там синтаксис ужасный(
Дмитрий КлимовУченик (114) 1 месяц назад
Я нашёл уже ошибки свои, и код тут выглядит аж так
clc
char f(x):3*sin(2*x)-1.5*x-1
a=input('a=');
b=input('b=');
e=input('e=');
x1=a;
x4=b;
z= 1/3;
while (1>0)
x2=x1+z*(x4-x1);
x3=x4-z*(x4-x1);
end
f2=f(x2);f3=f(x3);
if f2<f3
x1=x2;
else
x4=x3;
end
if (abs(x4-x1))>2e-1
x1=a;
x4=b;
z=1/3;
else
x1=(x1+x4)/2;
end
disp(x1)
disp(f(x))
умный шлепа (кот) Профи (845) Дмитрий Климов, ок)
Дмитрий КлимовУченик (114) 1 месяц назад
Но всё равно спасибо)))
Мне только б понять как вывести ответ тут и всё
умный шлепа (кот)Профи (845) 1 месяц назад
Моя почта:iarus33357999@gmail.com
Евгений Мишаков Знаток (306) 1 месяц назад
там в условии должны были дать f(x), а так это функция может иметь любой вид. там же условие стоит |x4-x1|>2e, если да, то возвращается
Centurio Просветленный (33581) 4 недели назад
clear,clc
a=-1;
b=2;
epsl=0.01;
%f=@(x) здесь должно быть записано тело функции f(x)
x1=a;
x4=b;
Z=1/3;
while abs(x4-x1)>2*epsl
x2=x1+Z*(x4-x1);
x3=x4-Z*(x4-x1);
F2=f(x2);
F3=f(x3);
if F2<F3
x4=x3;
else
x1=x2;
end
end
xt=(x1+x4)/2
Ft=f(x)

Это если писать точно по блок-схеме. Но я бы заменил фрагмент с 6-й по 19-ю строки так:
X=[a b];
while abs(diff(X))>2*epsl
v=diff(X)/3;
Xr=X+[v -v];
F=f(Xr);
k=F(1)<F(2)
X=X.*[k ~k]+Xr.*[~k k];
end
Похожие вопросы