1. 程式人生 > >matlab畫曲面圖和顯示latex標記

matlab畫曲面圖和顯示latex標記

一般來說學習數學建模,常用的軟體有五種,分別是Matlab、 Lingo、 Mathematica、 SPSS和SAS。對於數學規劃的模型,建議大家使用Lingo軟體求解比較方便,對於其它問題,如時間序列模型,你使用什麼軟體求解都可以,關鍵看個人的喜好和對某種軟體的熟悉程度,例如你可以使用SPSS, SAS或Eviews, R軟體等求解時間序列模型。
畫出x^2+(y-5)^2=16繞x軸旋轉一週的旋轉曲面。

旋轉面引數方程為

x  =  4cosα,
y=(5+4sinα)cosβ
z=(5+4sinα)sinβ

利用surf畫圖,其中α,βε[0,2π] 。畫圖的Matlab程式如下。

>> alpha=[0:.1:2*pi]';
>> beta=[0:0.1:2*pi];
>> x=4*cos(alpha)*ones(size(beta));
>> y=(5+4*sin(alpha)*cos(beta));
>> z=(5+4*sin(alpha)*sin(beta));
>> surf(x,y,z)

畫圖的Matlab程式也可以寫成

>> x=@(alpha,beta)4*cos(alpha); 
y=@(alpha,beta)(5+4*sin(alpha))*cos(beta);
z=@(alpha,beta)(5+4*sin(alpha))*sin(beta);
ezsurf(x,y,z)


對於其它的二次曲面,如果可以寫成單支的顯函式,直接使用命令ezmesh或ezsurf 畫圖,杏則必須先化成引數方程.
例2 繪製二元函式
z=sin(xy)/xy;

的三維表面圖.

>> [x,y]=meshgrid([-3:0.2:3]);
>> z=(sin(x.*y)+eps)./(x.*y+eps);
>> surf(x,y,z)


第二種方法是用符號函式

>> ezsurf('sin(x*y)/(x*y)');

第三種方法是用匿名函式

z=@(x,y)sin(xy+eps)/(xy+eps);%定義匿名函式

ezsurf(z);


x=3cosα 
y  =  2sinα, 
z=t, tεR. 

>> ezmesh(x,y,z)
>> x=@(alpha,t) 3*cos(alpha);
>> y=@(alpha,t) 2*sin(alpha);
>> z=@(alpha,t) t;
>> ezmesh(x,y,z)


4、在matlab的圖形中,利用Interpreter(翻譯器、直譯器、註釋)的屬性值為Latex,可以使用數學公式。


latex數學公式的前後要加上”$” 或 ”\( “和 ”\)“,比如:”$f(x) = 3x + 7$ “和 ”\(f(x) = 3x + 7\) “效果是一樣的;
如果用 \[ \],或者使用 $$ $$,則改公式獨佔一行;
如果用
\begin{equation}\end{equation},則公式除了獨佔一行還會自動被新增序號, 如何公式不想編號則使用\begin{equation*}\end{equation*}.

latex說明

clc,clear %清除命令視窗 清除工作空間

>> x=-2*pi:0.1:2*pi;
>> y1=sin(x);
>> y2=sin(x+pi/3)+2;
>> y3=cos(x);
>> plot(x,y1,'.-')
>> hold on%圖形保持命令
>> plot(x,y2,'*-')
>> plot(x,y3,'-o')
>> h=legend('sin($x$)','sin($x+\frac{\pi}{3}$)','cos($x$)')%1atex格式顯示 legend為說明、圖例 latex分數:\frac{numerator}{denominator}

h =

  181.0056

Warning: Unable to interpret TeX string "sin($x+\frac{\pi}{3}$)" 
>> set(h,'Interpreter','latex') %此時才真正為latex
>> xlabel('$x$','Interpreter','latex')%x標籤用latex格式顯示
>> ylabel('$y$','Interpreter','latex')%latex格式顯示