Протабулировать функцию на заданном промежутке [a,b]. матлаб

программирование информатика с++ паскаль матлаб


MATLAB
Протабулировать функцию f(x) на заданном промежутке [a,b] , при N разбиениях.
Если N=28; a=1 ;h=28/10

f(x)= система уравнений 1. sin^8(6x) если 0<x<pi
2. x^0.3-ln(x) если x>pi

h - шаг. (h=N/10) Я побывал его вписать сюда for i = 1:h:(N+1) но тогда прога почему то не работала. Я смотрел пример - i = 1:h:10 но здесь почему не сработало



В общем, я вынес описание функции в отдельный файл, f.m:
function y = f(x)
if ((0<x) & (x<pi))
y=(sin(6.*x)).^8;
elseif (x>=pi)
y=(x.^0.3)-log(x);
else
y=NaN;
end;


Тогда основная программа будет выглядеть так:
clc
clear
q=1;
while q==1;
z=inputdlg({'a=:','N=:','b='},'exersise',1);
a=str2double(z(1,1));
N=str2double(z(2,1));
b=str2double(z(3,1));
x=a:(b-a)/N:b
for i = 1:(N+1)
y(i)=f(x(i));
end
disp (y)
q=menu('repit?','yes','no');
end

Примечание:
вопрос можно закрывать

function y = f(x)
if ((0<x) & (x<pi))
y=(sin(6.*x)).^8;
elseif (x>=pi)
y=(x.^0.3)-log(x);
else
y=NaN;
end;


clc
clear
q=1;
while q==1;
z=inputdlg({'a=:','N=:','b='},'exersise',1);
a=str2double(z(1,1));
N=str2double(z(2,1));
b=str2double(z(3,1));
h=(b-a)./N;
for i = 1:N+1
x(i)=a+h*(i-1);
y(i)=f(x(i));
end
q=menu('repit?','yes','no');
end
a
b
N
' x y'
[x; y]'



Результат:
a =
1
b =
6
N =
10
ans =
x y
ans =
1.0000 0.0000
1.5000 0.0008
2.0000 0.0069
2.5000 0.0320
3.0000 0.1012
3.5000 0.2034
4.0000 0.1294
4.5000 0.0662
5.0000 0.0112
5.5000 -0.0371

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.