Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab72_core.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Пример:

  1. Сформировать случайные векторы u и V размера 1×4.

>> n=4;u=rand(1,n);v=rand(1,n);[u;v]

ans =

0.4740 0.9090 0.5962 0.3290

0.4782 0.5972 0.1614 0.8295

  1. На основе этих векторов составить матрицу А=||aij||, aij=uivjj-1.

>> % Выполним все без циклов. Начнем с формирования вектора из единиц

>> w=[linspace(1,1,n)];w=w';

>> % Сделаем первую заготовку

>> A1=(w*u)'

A1 =

0.4740 0.4740 0.4740 0.4740

0.9090 0.9090 0.9090 0.9090

0.5962 0.5962 0.5962 0.5962

0.3290 0.3290 0.3290 0.3290

>> % Составим вторую заготовку, содержащие степени

>> q=[0:1:n-1]; A2=w*q

A2 =

0 1 2 3

0 1 2 3

0 1 2 3

0 1 2 3

>> % Осуществим поэлементную операцию возведения в степень

>> A3=w*v;A3=[A3.^A2]

A3 =

1.0000 0.5972 0.0261 0.5707

1.0000 0.5972 0.0261 0.5707

1.0000 0.5972 0.0261 0.5707

1.0000 0.5972 0.0261 0.5707

>> % Поэлементным умножением матриц приходим к искомому

>> A=A1.*A3

A =

0.4740 0.2831 0.0124 0.2705

0.9090 0.5428 0.0237 0.5188

0.5962 0.3561 0.0155 0.3403

0.3290 0.1964 0.0086 0.1877

>> % Стираем ненужное

>>clear (‘A1’,’A2’,’A3’,’w’)

  1. Для каждого элемента матрицы А вычислить значение полинома с коэффициентами (u+iv). Результаты записать в матрицу В. Превратить ее в вещественную, взяв от каждого элемента его угол поворота. Сколько чистого времени потребовалось на выполнение п.3?

>> tic; B=polyval(u+i*v,A);B=angle(B);toc

Elapsed time is 0.003572 seconds.

  1. Составить анонимную функцию для вычисления площади треугольника по формуле Герона ( , p- полупериметр, a,b,c – стороны). Вычислить площадь для египетского треугольника.

>> % Возможен только один оператор. Площадь полагаем нулю, если из заданных отрезков нельзя составить треугольник

>> geron=@(a,b,c) real(0.25*sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a)));

>> geron(3,4,5)

ans =

6

  1. Построить график зависимости S(a) на отрезке [0,πe], приняв b=e,c=π. Оформить подписи, цвет кривой сделать фиолетовым.

>> % Есть два пути решения. 1-й состоит в переписывании анонимной функции.

>>% Команда figure избыточна. Hfig – указатель на текущий графический объект

>> geron1=@(a,b,c) real(0.25*sqrt((a+b+c).*(a+b-c).*(a+c-b).*(b+c-a)));

>> x=0:0.1:(pi*exp(1));Hfig=figure(1);plot(x,geron1(x,exp(1),pi));

>>% Второй путь, более общий, заставляет обратиться к программированию. Некоторые конструкции типа for…end доступны и в консоли.

>> % Ниже формируется вектор у, длина которого постоянно увеличивается. Затем непосредственно вывод графика.

>> x=0:0.1:(pi*exp(1));y=[ ]; for k=x y=[y,geron(k,exp(1),pi)]; end;

>> Hfig_=figure(2);plot(x,y);

В окне Figure2 щелкнем мышью по иконке со стрелкой, перейдя к режим редактирования. Вызовем контекстное меню, связанное с кривой – пункт Color, и выберем цвет. Аналогичным способом выберем цвет фона. Сделаем и другие манипуляции с осями, подписями и пр. Полезен пункт главного меню Insert, пункт контекстного меню – Show Properties. Удобно также подключить редактор свойств (View – Property Editor). Исполнив File– Generate M-file, можно просмотреть совершенные нами действия в виде команд.

  1. Построить семейство кривых S(a) при пяти значениях b=0,1,2,3,4 и фиксированном с=5. Величина а лежит в пределах [0;8]. Точки маркировать.

>> % Закрыли 2-й график, открыли новый с указанием рисовать все там

>> close(Hfig_);figure(3);hold on;

>> % Инициализируем переменные

>> a=0:0.5:8;b=0:1:4;c=5;

>>% Команды занимают две строки. Организуем цикл, формируем массив указателей на линии, цвет линии в формате RGB (смесь красного, зеленого и синего) случайный

>> Hlines=[ ];for j=1:5, Hline=plot(a,geron1(a,b(j),c)); Hlines=[Hlines Hline]; ...

set(Hline,'Marker','+','Color',[rand rand rand]); end; hold off

>> %Изменим цвета линий на привычные (см. ColorSpec) и добавим подписи к линиям. Вот где понадобились указатели! Названия получаем преобразованием чисел в литералы

>> MyColor=['y' 'm' 'c' 'r' 'g' 'b' 'w' 'k'];

>> for j=1:5, Lname=strcat(num2str(j),': b= ',num2str(b(j))); set(Hlines(j),'Color',MyColor(j),'DisplayName', Lname); end; legend('show');