2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 MatLab - рисование графика
Сообщение12.05.2007, 19:55 
Аватара пользователя


22/08/06
756
Здравствуйте. Мне потребовалось нарисовать 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 
Экс-модератор
Аватара пользователя


23/12/05
12064
для тех, кто вдруг столкнется с подобной проблемой, правильно записать:

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


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

 Профиль  
                  
 
 Построение графиков в Matlab
Сообщение11.07.2008, 16:18 


07/06/08
3
Здравствуйте!
Наверное это покажется простым, но тем не менее вопрос такой: скажите пожалуйста как построить график функции 3D, в случае, если данные заданы в файле в столбцах, каждая строка - определенная точка поверхности, какие команды я должен использовать, чтобы считать данные и построить поверхность?
Заранее спасибо тем, кто поможет.

 Профиль  
                  
 
 
Сообщение11.07.2008, 17:04 
Экс-модератор
Аватара пользователя


23/12/05
12064
посмотрите help и примеры.

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

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


29/10/09
1
$$

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

 Профиль  
                  
 
 Re: Построение графиков в Matlab
Сообщение29.10.2009, 18:17 
Экс-модератор
Аватара пользователя


23/12/05
12064
Вычислите положение нулей и экстремумов, соберите их в отдельный массив и постройте на том же графике какими-нибудь выделяющимися символами.

 Профиль  
                  
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 13:45 
Заслуженный участник


11/05/08
32166
Типичный код:

Используется синтаксис 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 
Экс-модератор
Аватара пользователя


23/12/05
12064
ewert, лучше избегать циклов в матлабе, а работать с массивами. Я бы использовал конструкцию типа

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

 Профиль  
                  
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 14:46 
Заслуженный участник


11/05/08
32166
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 
Экс-модератор
Аватара пользователя


23/12/05
12064
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 
Заслуженный участник


11/05/08
32166
Я просто никогда с командой find не имел дела.

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

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

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

 Профиль  
                  
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 16:11 
Экс-модератор
Аватара пользователя


23/12/05
12064
ewert, насчет упрощения с find() - согласен, насчет выводить вместе - наглядность теряется, а так, конечно, можно. Почему взял sign? - по идее это очень быстрая функция

 Профиль  
                  
 
 Re: Построение графиков в Matlab
Сообщение30.10.2009, 16:25 
Заслуженный участник


11/05/08
32166
Ну, операция сравнения (по идее) ещё эффективнее. Хотя бы потому, что она одна, а не две.

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

 Профиль  
                  
 
 Re: MatLab - рисование графика
Сообщение12.12.2009, 20:27 


12/12/09
5
Всех приветствую. Нужна помощь в посторении графика в Матлабе с помощью 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 
Заслуженный участник


11/05/08
32166
Графика чего?...

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group