没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
第1章 数据分析
数据分析和处理是各种应用中非常重要的问题。针对数据分析和处理,MATLAB 7.0 提
供大量的函数方便用户使用。本章将介绍 MATLAB 7.0 强大的数据分析和处理功能。
本章 6.1 小节介绍多项式函数,这些函数用于多项值求值、多项式乘法、多项式除法、多
项式求导等。6.2 小节介绍插值函数。MATLAB 7.0 提供数个不同的插值算法,这些算法的性能
比较将在本小节中详细介绍。6.3 小节涵盖内容比较多,包括基本的数据分析函数(例如矩阵的
平均值)、协方差和相关矩阵、有限差分和梯度、信号滤波和卷积以及傅立叶变换。6.4 小节介绍功能函
数,包括函数的表示方法、函数的画图、函数的最小值和最大值、函数的数值积分以及在功能
函数中使用参数的方法。6.5 小节介绍了三类微分方程组问题的解法,包括常微分方程组的初值
问题、延迟微分方程组数值解和常微分方程组的边界问题。
6.1 多项式函数
MATLAB 7.0 提供了一些处理多项式的基本函数,如求多项式的值、多项式的根和多项
式的微分等。另外,MATLAB 7.0 也提供了一些高级函数处理多项式,如曲线拟合和多项式的
部分分式表示。这些函数保存在 MATLAB 7.0 工 具箱的polyfun 子目录下,如表 6-1 所示。
表 6-1 多项式函数
函数名
功能描述
conv
多项式乘法
deconv
多项式除法
poly
求多项式的系数
polyfit
多项式曲线拟合
polyder
求多项式的一阶导数
polyint
求多项式的积分
polyvar
求多项式的值
polyvarm
求矩阵多项式的值
residue
部分分式展开
roots
求多项式的根
此外在 MATLAB 7.0 的符号工具箱(Symbolic Math Toolbox)中还有一些是用于处理多项
式的函数,在表 6-1 中没有提到。
6.1.1
多项式表示法
MATLAB 7.0 采用行向量来表示多项式,将多项式的系数按降幂次序存放在行向量中。多
项式 P(x)=a
0
x
n
+ a
1
x
n-
1
+...+ a
n-
1
x+a
n
的系数行向量为 P=[a
0
a
1
...a
n
],注意顺序必须是从高次幂
到低次幂。例如,多项式 x
4
+3x
3
+4x+5 可以用系数向量[1 3 0 4 5]来表示,注意多项
MATLAB 7.0
式中缺少的幂次要用“0”补齐。
例如,设计一个函数 poly2str(),实现把一个行向量表示的多项式转换为常见的字符串表示的
多项式,代码设置如下:
–187–
%修正如果 0 次幂为 0 时,造成字符串末尾有多余的字符串’+ ’
end;
if(Y(1)==’+’)
Y(1)=[];
end;
%如果不是最后一项,输出’+’
%0 次幂不输出x^n
%其他情况输出x^n
%输出x^n
%1 次幂输出字符串’x’
%如果该次幂系数为 1,可以不输出系数,只输出x^n
%其他情况输出系数
if(i==n-1),
Y=[Y ’x’];
elseif(i==n),
Y=Y;
else
Y=[Y ’x^’ num2str(n-i)];
end;
%输出系数
%如果该次幂系数为 0,则不输出字符串
%把多项式的每一次幂转换为字符串
%如果是正系数,必须添加‘+’字符
if(X(i)==0),
continue;
elseif(X(i)==1&&i~=n),
Y=Y;
else
Y=[Y num2str(X(i))];
end;
%输出字符串
end;
Y=’’;
n=length(X);
for i=1:n,
if(i~=1&&X(i)>0)
Y=[Y ’+’];
end;
%poly2str.m
%把多项式的行向量表示转换为字符串表示
function Y=poly2str(X)
%X 是表示一个多项式的向量
%Y 多项式的字符串表示
%输入检查,如果X 不是一个向量则退出
if isvector(X)==0,
disp(’输入错误:输入 X 不是一个向量,请输入一个代表多项式的向量!’);
return; %函数返回
MATLAB 7.0
以下语句说明了函数 poly2str()的用法:
poly2str([0 1 -2 3 -5 0 1 0 -1])
上述语句得到输出代码如下:
上面字符串中 x^n 表示 x 的 n 次幂。
例如,设计一个函数实现从多项式的字符串表示转换为多项式的行向量表示,要求输入
不必降幂排列,并且函数具有实现多项式同类项合并功能,代码设置如下:
–188–
ans =
x^7-2x^6+3x^5-5x^4+x^2-1
%str2poly.m
%把多项式的字符串表示转换为行向量表示
function Y=str2poly(X)
%X 是字符串形式的多项式
%Y 是行向量形式的多项式
%输入格式检查
if(ischar(X)==0)
disp(’输入错误:输入 X 必须是一个字符串!’);
end;
%用正则表达式寻找’+’或者’-’的下标位置
index=regexp(X,’\+|\-’);
%多项式的项数
L=length(index);
%用于存储多项式每一项信息的单元字符串矩阵
term=cell(1,L+1);
term(1)=cellstr(X(1:(index(1)-1)));
for i=1:L-1,
term(i+1)=cellstr(X(index(i):(index(i+1)-1)));
end;
term(L+1)=cellstr(X(index(L):end));
%如果第一项为空,则删除该项
if(isempty(char(term(1))))
term(1)=[];
%多项式的项数减一
L=L-1;
end;
%多项式系数矩阵
coefficient=[];
%多项式幂次矩阵,它与多项式系数矩阵一一对应
power=[];
for i=1:L+1,
%单项多项式字符串表达式
MATLAB 7.0
–189–
substring=char(term(i));
%用正则表达式,寻找字符串’x^’,由于’^’是正则表达式中的特殊字符,多以用’\^’来表示
index2=regexp(substring,’x\^’);
if(isempty(index2)==0),
%如果匹配上
if(index2(1)==1),
%单项多项式字符串为’x^*’形式
coefficient=[coefficient 1];
power=[power str2num(substring((index2(1)+2):end))];
elseif(index2(1)==2),
%单项多项式字符串为’+x^*’或者’-x^*’,’3x^*’形式
if(substring(1)==’+’),
coefficient=[coefficient 1];
power=[power str2num(substring((index2(1)+2):end))];
elseif(substring(1)==’-’),
coefficient=[coefficient -1];
power=[power str2num(substring((index2(1)+2):end))];
end;
else
%单项多项式字符串为’2.2x^*’
coefficient=[coefficient str2num(substring(1:(index2(1)-1)))];
power=[power str2num(substring((index2+2):end))];
end;
else
%单项多项式字符串不含’x^’
%用正则表达式,寻找字符串’x’
index2=regexp(substring,’x’);
if(isempty(index2)==0),
%如果匹配上’x’
if(index2(1)==1),
%单项多项式字符串为’x*’形式
coefficient=[coefficient 1];
power=[power 1];
elseif(index2(1)==2),
%单项多项式字符串为’+x*’或者’-x*’,’3x*’形式
if((substring(1)==’+’)==1),
coefficient=[coefficient 1];
power=[power 1];
elseif(substring(1)==’-’),
coefficient=[coefficient -1];
MATLAB 7.0
以下语句把一个多项式的字符串表示转换为一个多项式的向量表示,然后再把多项式的
向量表示转回成多项式的字符串表示,代码设置如下:
由上述语句得到输出代码如下:
由上述结果可以看出,输入多项式的同类项被合并了,这正是我们设计函数 str2poly()
时所希望的。
6.1.2
多项式求值
在 MATLAB 7.0 中使用函数 polyval()来计算多项式的值。其调用方式如下:
–190–
power=[power 1];
else
%单项多项式字符串为’2.2x*’
coefficient=[coefficient str2num(substring(1:(index2-1)))];
power=[power 1];
end;
else
coefficient=[coefficient str2num(substring(1:(index2-1)))];
power=[power 1];
end;
else
%单项多项式字符串不含’x^’,’x’,则断定它是常数项
coefficient=[coefficient str2num(substring)];
power=[power 0];
end;
end;
end;
%合并同类项
N=max(power)+1;
Y=zeros(1,N);
for i=1:N,
index3=find(power==(N-i));
Y(i)=sum(coefficient(index3));
end;
Str =
-1x^7+4x^5-2x^2-1
0 -1
0 -2
0
4
0
-1
P =
X=’-10x^2+8x^2-x^3+4x^5+x^3-10+9-x^7’;
P=str2poly(X)
Str=poly2str(P)
剩余61页未读,继续阅读
资源评论
蚁库
- 粉丝: 31
- 资源: 99
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 驱动代码驱动代码驱动代码驱动代码
- SVID_20240523_141155_1.mp4
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
- A pure Python library for adding tables to a Tkinter application
- Vector资源文件.zip
- MobaXterm-Installer
- 88-520告白(520气球).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功