2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2, 3  След.
 
 MatLab - рисование графика
Сообщение12.05.2007, 19:55 
Аватара пользователя
Здравствуйте. Мне потребовалось нарисовать 2 графика функции:
$
y=ax^b
$

$
y=a^{bx}
$
, где a и b - произвольные коэффициенты
Я стал действовать так:
Используется синтаксис Matlab M
x=-20:20
y=2*x^4
plot(x,y)

но программа выдала ошибку о том, что матрица должна быть квадратной и аргумент функции не должен содержать степень. Что мне нужно сделать, что бы избежать такой ошибки?

P.S. Я понимаю, что вопрос глупый, но я только вчера первый раз сел за MatLab, соответственно, ничего в нем не знаю.

Добавлено спустя 46 минут 12 секунд:

Все, тему можите закрывать. Я сам разобрался.

 
 
 
 
Сообщение14.05.2007, 00:40 
Аватара пользователя
для тех, кто вдруг столкнется с подобной проблемой, правильно записать:

Код:
y=2*x.^4;


наличие точки обеспечит поэлементное возведение в степень, а не попытку умножить матрицу саму на себя, а точки с запятой - отключит вывод результата вычисления на экран (это медленная операция, в данном примере всего 51 точка - не страшно, но когда ворочаются массивы в десятки мегабайт, то их вывод на экран займет почти все время, которое требуется для выполнения программы ;))

 
 
 
 Построение графиков в Matlab
Сообщение11.07.2008, 16:18 
Здравствуйте!
Наверное это покажется простым, но тем не менее вопрос такой: скажите пожалуйста как построить график функции 3D, в случае, если данные заданы в файле в столбцах, каждая строка - определенная точка поверхности, какие команды я должен использовать, чтобы считать данные и построить поверхность?
Заранее спасибо тем, кто поможет.

 
 
 
 
Сообщение11.07.2008, 17:04 
Аватара пользователя
посмотрите help и примеры.

Для считывания из файла функция load(), для построения поверхности mesh(), surf(), contour()

 
 
 
 Re: Построение графиков в Matlab
Сообщение29.10.2009, 15:10 
$$

помогите,пожалуйста.Как на графике отметить корни и экстремумы?

 
 
 
 Re: Построение графиков в Matlab
Сообщение29.10.2009, 18:17 
Аватара пользователя
Вычислите положение нулей и экстремумов, соберите их в отдельный массив и постройте на том же графике какими-нибудь выделяющимися символами.

 
 
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 13:45 
Типичный код:

Используется синтаксис Matlab M
t=a:(b-a)/300:b;
z=[];
for k=1:length(t)-1
    if t(i)*t(i+1)<=0
        z=[z, fzero('f', t(i))];       % очередной корень
    end      
end

plot(t,f(t), z,z*0,'o'),    grid


(Некоторые корни могут случайно сдублироваться, но для графика это неважно.)

 
 
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 14:26 
Аватара пользователя
ewert, лучше избегать циклов в матлабе, а работать с массивами. Я бы использовал конструкцию типа

Используется синтаксис Matlab M
t(1:end-1).*t(2:end)

 
 
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 14:46 
photon в сообщении #256630 писал(а):
ewert, лучше избегать циклов в матлабе, а работать с массивами.

Я в курсе; но что Вы собираетесь делать с этим замечательным массивом дальше? Всё равно ведь потом придётся его прореживать.

Цикл дешевле обойдётся. Другое дело, что (в целях оптимизации) лучше применить его к примерно Вашему массиву. Точнее, к примерно такому:
Используется синтаксис Matlab M
y=f(t);
find=(y([1:length(y)-1])*y([2:length(y)]<=0);
for i=1:length(find)
    if find(i)
    . . . . . . . . .

 
 
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 15:36 
Аватара пользователя
ewert, зачем же так циклить? А уж применять в качестве имен переменных названия стандартных функций совсем нехорошо.

Используется синтаксис Matlab M
x=1:0.01:20;
y=sin(x);
plot(x,y)
hold on
roots_pos=find(sign(y(1:end-1).*y(2:end))-1);
plot(x(roots_pos),y(roots_pos),'o', 'Color', 'red'), grid on


ну можно дополнить использованием FZero, если хотите

 
 
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 16:08 
Я просто никогда с командой find не имел дела.

Но -- тоже выражу некоторое недоумение.

Во-первых: зачем же холдить, если можно вывести график сразу?

Во-вторых: гораздо проще и понятнее
Используется синтаксис Matlab M
roots_pos=find(y(1:end-1).*y(2:end)<=0)

 
 
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 16:11 
Аватара пользователя
ewert, насчет упрощения с find() - согласен, насчет выводить вместе - наглядность теряется, а так, конечно, можно. Почему взял sign? - по идее это очень быстрая функция

 
 
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 16:25 
Ну, операция сравнения (по идее) ещё эффективнее. Хотя бы потому, что она одна, а не две.

А hold я не люблю без необходимости. Вечно приходится не забывать его отключить.

 
 
 
 Re: MatLab - рисование графика
Сообщение12.12.2009, 20:27 
Всех приветствую. Нужна помощь в посторении графика в Матлабе с помощью plot.

F=3x1+x2 -> max
при ограничениях
х1 + 3х2 <= 21
2х1+ х2 <= 12
х1 <= 5
x1>=0, x2 >=0
НУжен тест построения графика в матлабе. Заранее спасибо.

 
 
 
 Re: MatLab - рисование графика
Сообщение12.12.2009, 20:37 
Графика чего?...

 
 
 [ Сообщений: 42 ]  На страницу 1, 2, 3  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group