matlab近似怎么表示,【原创】有理多项式pade近似Matlab代码
function [np,dp]=pdefcn(fun,r,m,n)%有理多项式pade近似%%输入参数 -fun 需要进行pade近似的函数,必须是符号变量%-r 分子多项式采用的级数%-m 分母多项式采用的阶数%-n 对目标函数进行taylor展开使用的阶数,默认10%注意:n>=m+r+1%输出参数 -np pade近似的分子多项式系数%-dp pade近似的分母多形式的系数%...
function [np,dp]=pdefcn(fun,r,m,n)
%有理多项式pade近似
%
%输入参数 -fun 需要进行pade近似的函数,必须是符号变量
% -r 分子多项式采用的级数
% -m 分母多项式采用的阶数
% -n 对目标函数进行taylor展开使用的阶数,默认10
%注意:n>=m+r+1
%输出参数 -np pade近似的分子多项式系数
% -dp pade近似的分母多形式的系数
%
%Example
%>>fun='exp(-2*x)';
%>>pdefcn(fun,0,5,10)
%rewrite by dynamic
%more information http://www.matlabsky.cn
%2009.1.10
if nargin<4,n=10;end
c=taylor(fun,n);
c=sym2poly(c);
c=c(end:-1:1);
w=-c(r+2:m+r+1)';
vv=[c(r+1:-1:1)';zeros(m-1-r,1)];
W=rot90(hankel(c(m+r:-1:r+1),vv));
V=rot90(hankel(c(r:-1:1)));
x=[1 (W\w)'];
y=[1 x(2:r+1)*V'+c(2:r+1)];
dp=x(m+1:-1:1)/x(m+1);
np=y(r+1:-1:1)/x(m+1);
figure('name','Pade Demo——by Matlabsky','numbertitle','off')
ezplot(fun,[0 10]);
hold on
xx=1:0.1:10;
yy=polyval(np,xx)./polyval(dp,xx);
plot(xx,yy,'r:')
legend('精确图','近似图')
xlabel('x')
ylabel('y')
exp(-2*x)
n =
3.7500
m =
1.0000 2.5000 5.0000 7.5000 7.5000 3.7500
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)