mfile编辑器:菜单file-new-m_file 调试:
调用:
方法1) type function1.m
方法2)[k,piancha,xdpiancha,xk]=diedai1(2,50)
>> type function1.m
function average=function1(value) average=sum(value)/length(value); >> average=function1(value)
average =
2
方法2)示例
function [k,piancha,xdpiancha,xk]=diedai1(x0,k)
结合上例,下面对M 文件必须遵循的规则及两种类型的异同做简要介绍。 (1)从函数名必须与文件名相同。
(2)脚本式M 文件没有输入参数或输出参数,而函数式M 文件有输入参数和输出参数。 (3)函数可以有零个或多个输入和输出变量。函数nargin 和nargout 包含输入和输出变 量的个数。在运行时,可以按少于M 文件中规定的输入和输出变量的个数进行函数调用,但
不能多于这个标称值。
从运行上看,与脚本文件不同的是,函数文件被调用时,MATLAB 会专门为它开辟一个 临时工作空间,称为函数工作空间(Function workspace),用来存放中间变量,当执行完函
数文件的最后一条命令或者遇到return 时就结束该函数文件的运行,同时该临时函数空间及 其所有的中间变量将被清除。函数工作空间相对于基本空间是临时的、独立的,在MATLAB 运行期间,可以产生任意多个临时函数空间。
(4)在M 文件中,包括脚本和函数,到第一个非注释行为止的注释行是帮助文本,当需 要帮助时,返回该文本,通常用来说明文件的功能和用法。
(5)函数M 文件中的所有变量除特殊声明外都是局部变量,而脚本中的变量都是全局 变量。
(6)变量的命名可以包括字母、数字和下划线,但必须是以字母开头。并且在M 文件设 计中是区分大小写的。变量的长度不能超过系统函数namelengthmax 所规定的值。
(7)假设在函数文件中发生对某脚本文件的调用,那么该脚本文件运行产生的所有变量 都存放于此函数空间中,而不是存在基本工作空间中。 通常M 文件是文本文件,所以可使用一般的文本
二、解线性方程 方法一、矩阵法 方法二、solve法 方法三、迭代法
注意矩阵的运算
matlab中mpower什么意思?
在函数编辑中出现的错误,“Error using ==> mpower”
mpower是矩阵的指数运算 如果A是一个矩阵,则A^p是指A的p次幂,而A.^p是A的每个元素的p次方,其他'和.'、+和.+、-和.-、*和.*都是这样,一个是针对矩阵本身一个是元素
方法二:
求方程的解
solve('m^2+m*2-10=0')
方法三:
2.4 迭代法及其MATLAB程序
确定根的近似位置以后,接下来的工作就是将根精确化,即按某种方法将初始近似值逐 步精确化,直到满足所要求的精确度为止. 上节介绍的二分法是将根精确化的方法之一,但 是它的收敛速度较慢,且不能求出偶重根.迭代法可以克服这种缺陷.迭代法是求解方程的 根、线性和非线性方程组的解的基本而重要的方法
2.4.2 迭代法的MATLAB程序1
迭代法需要自行编制程序.下面提供的迭代法的MATLAB程序1使用时只需输入迭代初始 值0 x 、迭代次数k、迭代公式xk+1=(xk)和一条命令,运行后就可以输出求迭代序列{ } k x 、 迭代k次得到的迭代值k x 和相邻两次迭代的偏差piancha =| 1 k k x x | (简称偏差)和偏 差的相对误差xdpiancha=| 1 k k x x | k x 的值,并且具有警报功能(若迭代序列发散, 则提示用户“请重新输入新的迭代公式”;若迭代序列收敛,则屏幕会出现“祝贺您!此迭 代序列收敛,且收敛速度较快”).我们可以用这个程序来判断迭代序列的敛散性,也可以 用于比较由一个方程得到的几个迭代公式的敛散性的优劣. 迭代法的MATLAB程序1
输入的量:初始值0 x 、迭代次数k和迭代公式( ) ( 0,1,2, ) 1 L x x k k k ; 运行后输出的量:迭代序列{ } k x 、迭代k 次得到的迭代值k x 、相邻两次迭代的偏差 piancha =| 1 k k x x |和它的偏差的相对误差xdpiancha= xk xk1 xk 的值.
根据迭代公式(2.4)和已知条件,现提供名为diedai1.m的M文件如下
function [k,piancha,xdpiancha,xk]=diedai1(x0,k) % 输入的量--x0是初始值,k是迭代次数 x(1)=x0; for i=1:k
x(i+1)=10/(x(i)+2);%fun1(x(i));%程序中调用的fun1.m为函数y=φ(x) piancha= abs(x(i+1)-x(i)); xdpiancha= piancha/( abs(x(i+1))+eps); i=i+1;xk=x(i);[(i-1) piancha xdpiancha xk] end
if (piancha >1)&(xdpiancha>0.5)&(k>3)
disp('请用户注意:此迭代序列发散,请重新输入新的迭代公式') return; end
if (piancha < 0.001)&(xdpiancha< 0.0000005)&(k>3) disp('祝贺您!此迭代序列收敛,且收敛速度较快') return; else
disp('收敛速度不够,或次数太少,增加K值') return end
p=[(i-1) piancha xdpiancha xk]';
xk1 10 /(xk 2)
因篇幅问题不能全部显示,请点此查看更多更全内容