⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xdifferential.m

📁 《实用化工计算机模拟:MATLAB在化学工程中的应用 》这本书光盘里的程序~
💻 M
字号:
function xDifferential
% 分别用有限差分法、多项式拟合方法和三次样条插值方法对离散数据进行数值微分
%
% 有限差分法:用差分函数diff()近似计算导数,即dy=diff(y)./diff(x)%
%
% 多项式拟合方法:先用polyfit()根据离散数据拟合得到多项式插值函数p,
% 再用polyder()计算p的导数pp,然后用polyval()计算pp在x的导数值
%
% 三次样条插值方法:先用csapi()根据离散数据生成三次样条插值函数cs,
% 再用fnder()计算cs的导数pp,然后用fnval()计算pp在xi的导数值
%
%   Author: HUANG Huajiang
%   Copyright 2003 UNILAB Research Center, 
%   East China University of Science and Technology, Shanghai, PRC
%   $Revision: 1.0 $  $Date: 2003/02/9 $

clear all
clc

% 用函数y = cos(x)生成离散数据
x =	[0:pi/20:pi];
y = cos(x);
dy = -sin(x)   % 准确值

% 有限差分法
dy1 = diff(y)./diff(x)
x1 = x(1:length(x)-1);

% 多项式拟合方法
p = polyfit(x,y,5);  % 进行多项式拟合,得到多项式p
pp = polyder(p);     % 对拟合得到的多项式求导,得到导函数pp  
dy2 = polyval(pp,x)  % 计算导函数pp在x的导数值

% 三次样条插值方法
cs = csapi(x,y);    % 生成三次样条插值函数cs
pp = fnder(cs);     % 计算三次样条插值函数cs的导函数pp
dy3 = fnval(pp,x)   % 计算导函数pp在x的导数值

% 多项式拟合方法和三次样条插值方法的结果与准确值之差
disp('多项式拟合方法和三次样条插值方法的结果与准确值之差[dy-dy2;dy-dy3]:')
disp([dy-dy2; dy-dy3])

% 绘制几种方法的导函数曲线
plot(x,dy,'ko',x1,dy1,'k.-',x,dy2,'b-',x,dy3,'k--')
xlabel('x')
ylabel('y')
title('函数cos(x)的导函数曲线')
legend('准确值','有限差分法','多项式拟合方法','三次样条插值方法')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -