• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

MATLAB入门学习(四)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

今天我们开始学编程啦~ 点击左上角的这个进入编程界面

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

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

 

下面我们来编写一个hello world 程序~

输入disp(\'Hello World!\');

然后点击运行    你看~

是不是很无聊。。。那就来个好一点的~

输入:
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)

 

插一句:关于循环语句 ,和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

二维同理~

 

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi深入DLL编程(2)(转载)发布时间:2022-07-18
下一篇:
如何用Delphi开发网游外挂 - 癫狂编程发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap