- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x2 1 x 1 例 设 f ( x) 2 x 0 x 1, 求f (2), f (0.5), f ( 1) x3 x0
先建立M文件fun2.m来定义函数f(x),再在 MATLAB命令窗口输入fun2(2),fun2(0.5), fun2(-1)即可. MATLAB(fun2)
function yy=ff(x) yy=sqrt(x.^2+100^2)+sqrt((120-x).^2+120^2);
命令窗口 fplot('ff ',[0, 120]) grid x=fmin('ff ',40,60) hold on plot(x,ff(x),'ro')
x = 54.5455
17/18
调试程序步骤: (1)在程序可疑处设置断点; (2)执行程序; (3)检查程序运行至断点处变量当前值 (4)在程序中一步步执行 (5)结束调试状态。 (6)取消断点。 执行程序之后,程 序会停在断点处。 并出现箭头.同时 调试工具栏由灰色 变为深色
18/18
二、Matlab编程实例
例 1 分析并计算函数极值点 编缉窗口
factorial(11)
ans = 39916800
简单函数编写技巧- 建立内嵌函数 使用格式 inline(expr) 根据expr建立内部函数,函数自变 量根据表达式自动搜索; inline(expr, arg1, arg2, ...) 指定参数,arg1等参 数是字符串参数 inline(expr, N) 参数为 x,P1,P2,…,PN
MATLAB的程序调试方法
MatLab在执行程序有错时会自动终止运行,并在 其命令窗口(Matlab Command Windows)中给出相 应错误的提示信息 同时MATLAB的编辑器(Editor)具有程序调试功能, 可用调试命令用来检查程序的正确性
单 步 执 行
断 点 间 执 行
终 止 调 试
只要在表达式(expression)里的所有元素为真,就执行 while和end语句之间的命令串{commands}. 例 设银行年利率为11.25%.将10000元钱存入银行,问 多长时间会连本带利翻一番?
MATLAB(while1)
MATLAB(while1)
money=10000
years=0 while money<20000
(3)编程求 n!
n 1
20
(4)一球从100米高度自由落下,每次落地后反跳回原 高度的一半,再落下. 求它在第10次落地时,共经过多 少米?第10次反弹有多高?
2 f ( x , y ) x sin xy 2 y ,写一程序,输入 (5)有一函数 自变量的值,输出函数值.
返回
谢Байду номын сангаас谢!
x2 1 x 1 例 设f ( x) , 求f (2), f (1) x 1 2x
MATLAB命令窗口输入fun1(2),fun1(-1)即可. MATLAB(fun1)
MATLAB(fun1)
function f=fun1(x)
if x>1
f=x^2+1 end
if x<=1
a=0.001;b=0.002;k=0; f=inline('1500*(1-1/((1+x)^180))/x-230000'); ya=f(a); while (b-a)>0.0000001 x0=.5*(a+b);y0=f(x0); if ya*y0<0 b=x0; else a=x0;ya=y0; end k = 14 k=k+1; end x0 = 0.0018 k x0
Matlab编程
一、Matlab编程
二、Matlab编程实例
一、Matlab编程
MATLAB的内部函数是有限的,有时为了研究某 一个函数的各种性态,需要为MATLAB定义新函数, 为此必须编写函数文件. 函数文件是文件名后缀为M的 文件,这类文件的第一行必须是一特殊字符function开 始,格式为: function 因变量名=函数名(自变量名) 函数值的获得必须通过具体的运算实现,并赋给 因变量.
例4 小猴吃桃问题
有一天小猴摘下了若干个桃子,当即吃掉了一半,又 多吃了一个.第二天接着吃了剩下的一半,又多吃了一个 以后每天都是吃掉尚存的桃子的一半零一个.到第十天 早上,小猴准备吃桃子时,看到只剩下 1 个桃子了.问 小猴第一天共摘下了多少个桃子?
解:设第k天的桃子数为pk,(k=1,· · · ,10)则规律为
years=years+1
money=money*(1+11.25/100) end
3. if-else-end结构 (1)有一个选择的一般形式是: if (expression) {commands} end 如果在表达式(expression)里的所有元素为真, 就执行if和end语句之间的命令串{commands}.
1. for循环:允许一组命令以固定的和预定的次数重复
for x=array {commands} end 在for和end语句之间的命令串{commands}按数组(array) 中的每一列执行一次. 在每一次迭代中,x被指定为数组的下一列, 即在第n次循环中,x=array(:,n) 例 对n=1,2,…,10,求xn= sin
例子:g = inline('t^2') f = inline('xyz','x','y','z') g = inline('x^P1+x^P2',2)
例3 分期付款购一套 30万元住房 . 首付7万,以后 每月付1500元,15年后付清. 这实际上是贷款购房, 问这样贷款的利息是多少 ?
解:设代款总额A=230000,每月付款P=1500,银行 利率为x,贷款期 m = 15×12 =180. A(1+x)m = P + P(1+x) + P(1+x)2 +· · · + P(1+x)m-1 m 1 ( 1 x ) P m A(1 x ) P A [1 (1 x ) m ] 1 (1 x ) x 1500 180 f ( x) [1 (1 x ) ] 230000 x
f=2*x end
2) 有三个或更多的选择的一般形式是: if (expression1) {commands1} else if (expression2) {commands2} else if (expression3) {commands3} else if …… ………………………………… else {commands} end end end …… end
图形窗口
例2 函数的递归调用: 阶乘计算 function fac=fact(n) if n==1|n==0; fact(11) fac=1; ans = 39916800 return fact(21) end ans = fac=n*fact(n-1);
另两条MATLAB语句
5.109094217170944e+019 prod(1:11) ans = 39916800
n=input(‘input n=’); %输入数据 while n~=1 r=rem(n,2); %求n/2的余数 if r = =0 n=n/2 %第一种操作 else n=3*n+1 %第二种操作 end end n=5 16, 8, 4, 2, 1
18/18
实验作业
对以下问题,编写M文件: (1)用起泡法对10个数由小到大排序. 即将相邻两个 数比较,将小的调到前头. (2)有一个 4 5 矩阵,编程求出其最大值及其所处的 位置.
k=10;p(k)=1; 1 while k>=2 pk pk 1 1 2 k=k-1; p(k)=2*(p(k+1)+1); Pk-1 =2(pk +1) end ans = 1534 p(1) 16/18
例5 角谷猜想.
对任一自然数n,按如下法则进行运算:若n为偶数, 则将n除2;若n为奇数,则将n乘3加1。将运算结果按 上面法则继续运算, 重复若干次后计算结果最终是1.
返回
function f=fun2(x)
MATLAB(fun2)
if x>1
f=x^2+1 else if x<=0 f=x^3 else f=2*x end end
分段函数可表示为:
function f=fun3(x)
f=(x^2+1)*(x>1)+2*x*(x>0&x<=1)+x^3*(x<=0)
n 的值. 10
MATLAB(for1)
MATLAB(for1)
for n=1:10
x(n)=sin(n*pi/10); end
x
2. While循环
与for循环以固定次数求一组命令相反,while循环以不定的 次数求一组语句的值.
while
(expression) {commands} end
M文件建立方法:1. 在MATLAB中,点:File→New → M-file
2. 在编辑窗口中输入程序内容 3. 点File → Save,存盘,M文件名必须
与函数名一致.
MATLAB的应用程序也以M文件保存.
控制流
MATLAB提供三种决策或控制流结构: for循环、while循环、if-else-end结构. 这些结构经常包含大量的MATLAB命令,故经常出现在 MATLAB程序中,而不是直接加在MATLAB提示符下.