zoukankan      html  css  js  c++  java
  • MATLAB入门学习(四)

    今天我们开始学编程啦~~@[S3[%P8K_PGR]586ZT4{R 点击左上角的这个进入编程界面

    这是新建新的.m文件,也就是matlab命令文件,

    一般命令文件不带输入和输出的参数,只是一些命令的组合,带有输入输出参数的文件是函数文件~

    下面我们来编写一个hello world 程序~JT1ZTDTB{65D{_Z~NMP[N)V

    输入disp('Hello World!');

    然后点击运行ZT9_A3E5NGHR_Z3XX]@Q7PF    你看~)5QD}H_BJ%[)C54S$G[LTZH

    是不是很无聊AG71%B4]V_O6PZ(P53Y_G%Y。。。那就来个好一点的~

    输入:
    t=pi*(0:0.001:1);
    x=sin(t).*sin(10*t);
    comet(t,x)

    然后运行,,自己研究玩去吧~

    m文件就是这样啦,方便多次运行保存和修改,解决复杂的问题更方便~♪(^∇^*)

    我们继续学习。。。

    接下来看看函数文件的编写

    新建一个函数文件

    函数的第一行的格式 :function [输出的参数] =函数名 (输入的参数)

    输入和输出的参数可以有多个

    保存函数文件的时候,注意文件名要和函数名一样

    函数头和函数体之间可以有多行%开始的注释,说明函数的使用方法,当执行 help 函数名 的时候会显示这些注释 ,直到遇到第一个非注释行为止

     

    语法也没什么好讲的,我们直接看一个例子吧 ~(~ ̄▽ ̄)~

    这是二分法求近似值的程序:

    function [x_star,k] = bisect1(fun,a,b,ep)
    %二分法求方程的近似值
    if nargin<4
        ep=1e-5;
    end
    fa=feval(fun,a);fb=feval(fun,b);
    if(fa*fb>0)
        disp('error');
        x_star=NaN;
        k=NaN;
    else
        k=1;
        while abs((b-a)/2)>ep
            x=(a+b)/2;
            fx=feval(fun,x);
            if fa*fx<0
                b=x;fb=fx;
            else
                a=x;fa=fx;
            end
            k=k+1;
        end
        x_star=(a+b)/2;
    end

    (⊙﹏⊙)b看不懂也没关系,看解释~~~

    第一行:
    function [x_star,k] = bisect1(fun,a,b,ep)

    注意输入的参数。x_star, k 都是数字;fun 是函数;a, b, ep都是数字

    这个程序目的是输入一个函数fun以及给定的区间[a,b],求出精确度为ep的零点x_star,k为迭代次数 。

    if nargin<4
        ep=1e-5;
    end

    nargin,nargout 是函数文件里的固有变量,意思是输入(输出)参数的个数

    这句话就是说,如果只输入前三个参数,那么精确度默认为1e-5

    fa=feval(fun,a); fb=feval(fun,b);

    feval(fun,a)用于计算函数fun 在点a 处的函数值,这个命令记住就行了。(๑•̀ㅂ•́)و✧

     

    if(fa*fb>0)
        disp('error');
        x_star=NaN;
        k=NaN;

    上面这段是无解的情况

    else
        k=1;

    迭代次数初始化

    while abs((b-a)/2)>ep
            x=(a+b)/2;
            fx=feval(fun,x);

    区间大于精确度的话就迭代

    每循环一次迭代次数加一~~然后没什么可说的了~~~

    最后把结果赋值给输出的参数
    x_star=(a+b)/2;

    写完保存,记得文件名要和函数名相同(⊙v⊙)

    然后回到命令窗口

    我们来求一个函数f(x)=x^3-x-1 在区间[1,15]上的零点~~

    在命令窗口依次输入:
    fun=inline('x^3-x-1');
    [x_star,k]=bisect1(fun,1,15,0.005)

    3~_0I79{O}5[$Q0$DX7QCSM

    插一句:关于循环语句 ,和c语言一样的有三种

    while
    for
    do while

    注意for(int i=1;i<10;i++)
    matlab写成for i=1:10 ... end

    如果是i=i+2,就写成 for i=1:2:10

    这个和那个线性生成向量的是一样的啦(~ ̄▽ ̄)~

    matlab函数也是可以递归调用的,但是效率很差,不推荐使用喔。

    哦!我突然想起来c语言里的数组,这在MATLAB里就是用向量,向量用起来还是很方便的,使用前不需要声明,不要动态内存分配,随便用个a(i)就行了

    举个例子:求斐波那契数列函数

    function [ F ] = Fibonacci( n )
    F(1)=1;
    F(2)=1;
    for i = 3 : n
        F(i) = F(i-1)+F(i-2);
    end
    
    end

    二维同理~

    自己多写一些练一练喔 ✧(≖ ◡ ≖✿)

  • 相关阅读:
    Javascript中对文字编码的三个函数
    Web.config文件中关于Cookie安全性的考量和设置
    面试时被问到的问题
    JQuery中查找父元素,子元素,追加元素,插入元素和删除元素 及其他常用方法
    JQuery插件开发学习
    Umbraco image中使用Crop URL
    SQL中的row_number() over()解释
    GEO,IGSO,MEO,LEO
    计算机网络端口常识
    VMnet1和VMnet8 未识别的网络的解决方法
  • 原文地址:https://www.cnblogs.com/GraceSkyer/p/6771676.html
Copyright © 2011-2022 走看看