1.变量与函数

语句表达一般式:变量 = 表达式

a=3;b=4;
y=a*b+a/b

注意:有无“;”的区别
每条命令后若为逗号或无标点符号,则显示命令结果;
若命令后为分号,则禁止显示结果。
“%”后面所有文字为注释;

  • 变量命名规则
    1.变量名必须是不含空格的单个词;
    2.变量名区分大小写;
    3.变量名最多不超过19个字符;
    4.变量名必须以字母打头,之后可以是任意字母、数字或下划线

2.M文件与矩阵

编写函数文件,函数文件是文件名后缀为m的文件,这类文件的第一行必须是以特殊字符function开始,格式为:
function 因变量名 = 函数名(自变量名)
2.
x(i)表示访问数组x的第i个元素;
x(a : b : c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1;
产生列向量有两种方法:
直接产生

c=[1;2;3;4]%以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素

转置产生

b=[1 2 3 4];c=b'

3.矩阵运算

  • 矩阵加法:A+B
  • 矩阵乘法:A*B
  • 方阵的行列式:det(A)
  • 方阵的逆:inv(A)
  • 方阵的特征值与特征向量:[V,D]=eig[A]

3.控制流

Matlab提供三种决策或控制流结构:
for循环、while循环、if-else-end结构。
1.for循环:允许一组命令以固定的和预定的次数重复
for x=array
{commands}
end

for n=1 : 10
    x(n)=sin(n*pi/10)
end
x

2.while循环以不定的次数求一组语句的值
while expression
{commands}
end

while (x<20000)
    x=10000*(1+0.1125)^year;
end
year

3.if-else-end
if expression
{commands}
end
如果在表达式(expression)里的所有元素为真,就执行if和end语句之间的命令串{commands}
if (expression1)
{commands1}
elseif (expression2)
{commands2}
elseif (expression3)
{commands3}
else
{commmands}
end

function f=fun(x)
if(x>1)
    f=x^2+1;
elseif((0<x)&&(x<=1))
    f=2*x;
else
    f=(x)^3;
end

4.练习

1.用起泡法对10个数由小到大排序,即将相邻两个数比较,将小的调到前头。

a=[1 3 5 7 3 8 9 5 3 6];
b=length(a);
for i=1:b-1
    for j=1:b-i
        if (a(j)>a(j+1))
            temp=a(j);
            a(j)=a(j+1);
            a(j+1)=temp;
        end
    end
end
a

在这里插入图片描述
2.有一个4x5矩阵,编程求出其最大值及其所处的位置。

clc;
clear;
a=fix(100*rand(4,5))%随机生成一个4x5的整数矩阵
for i=1:4
    b=max(a(i,:));
end
c=max(b)
[i,j]=find(a==c)

在这里插入图片描述
3.一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第10次落地时,共经过多少米?第10次反弹有多高?

function [s,h]=fun(n)
z=100;
s=z;
n=10;
for i=1:n-1
    z=z/2;
    s=s+2*z;
end
h=z/2
s

在这里插入图片描述
4.有一个函数f(x,y)=x^2+sin(xy)+2y,写一程序,输入自变量的值,输出函数值。

在这里插入图片描述

5.画图

Matlab作图是通过描点、连线来实现的
PLOT(X,Y,S)
X,Y是向量,分别表示点集的横坐标和纵坐标;S表示线型
例:在[0,2*pi]用红线画sin(x),用绿圈画cos(x).
在这里插入图片描述

在这里x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,y,'r',x,z,'c')

'c’蓝绿色;‘r’红色;‘y’黄色;‘m’洋红

5.1ezplot

ezplot(‘f(x)’,[a,b])
表示在a<x<b绘制显函数f=f(x)的函数图
例在[0,pi]上画y=sin(x)的图形

ezplot('sin(x)',[0,pi])

ezoplot(‘f(x,y)’,[xmin,xmax,ymin,ymax])表示在区间xmin<x<xmax和ymin<y<ymax绘制隐函数f(x,y)=0的函数图
例在[0,2*pi]上画x=cost^3 ,y=sint^3星形图形

ezplot('cos(t)^3','sin(t)^3',[0,2*pi])

ezplot(‘x(t)’,‘y(t)’,[tmin,tmax])表示在区间tmin<t<tmax绘制参数方程x=x(t),y=y(t)的函数图
例在[-2,0.5],[0,2]上画隐函数e^x+sin(x*y)=0的图形

ezplot('exp(x)+sin(x*y)',[-2,0.5,0,2])

5.2fplot

fplot(‘fun’.lims)
表示绘制字符串fun指定的函数在lims=【xmin,xmax】的图形
注意:1.fun必须是M文件的函数名或是独立变量为x的字符串。
2.fplot函数不能画参数方程和隐函数图形但在一个图上可以画多个图形。
例:在[-1,2]上画y=e2*x+sin(3*x2)的图形
先建M文件myfun1.m

function y=myfun1(x)
y=exp(2*x)+sin(3*x^2)

再输入命令fplot('myfun1',[-1,2])
在这里插入图片描述

5.3三维图形

1.一条曲线
PLOT3(x,y,z,s)
例:在区间[0,10*pi]画出参数曲线x=sin(t),y=cos(t),z=t.

 t=0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> rotate3d
>> 

在这里插入图片描述
2.多条曲线

>> x=-3:0.1:3;y=1:0.1:5;
>> [X,Y]=meshgrid(x,y);%生成一个以向量x为行,向量y为列的矩阵
>> Z=(X+Y).^2;
>> plot3(X,Y,Z)

在这里插入图片描述
3.surf(x,y,z)画出数据点(x,y,z)表示的曲面。
Mesh(x,y,z)画出网格曲面。
GRID ON 加格栅
GRID OFF删除格栅
例 在区间[0,2*pi]画sin(x)的图形,并加注图例“自变量X”,“自变量Y”,“示意图”,并加格栅。
在这里插入图片描述

x=linspace(0,2*pi,30);
>> y=sin(x)
>> plot(x,y)
>> xlabel('自变量X')
>> ylabel('自变量Y')
>> title('示意图')
>> grid on

overover
干饭!干饭!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐