文档库 最新最全的文档下载
当前位置:文档库 › Matlab积分函数

Matlab积分函数

Matlab积分函数
Matlab积分函数

一.相关函数:

syms x

fx=sin(x);%fx为被积分函数

fx1=int(fx,'x','0','pi')%fx为被积分函数,x,为自变量0,pi为一重积分上下限

fx2=int(int(int(fx,'x','0','pi')),'x','0','2*pi')%x为自变量0,2*pi为二重积分上下限fx3=int(int(int(fx,'x','0','pi'),'x','0','2*pi'),'x','0','t')%x为自变量0,t为二重积分上下限三重积分

%符号积分

int(f,v)

int(f,v,a,b)

%数值积分

trapz(x,y)%梯形法沿列方向求函数Y关于自变量X的积分

cumtrapz(x,y)%梯形法沿列方向求函数Y关于自变量X的累计积分

quad(fun,a,b,tol)%采用递推自适应Simpson法计算积分

quad1(fun,a,b,tol)%采用递推自适应Lobatto法求数值积分

dbquad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%二重(闭型)数值积分指令triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%三重(闭型)数值积分指令

二.示例:

例1:计算f(t)=exp(-t^2)在[0,1]上的定积分

本例演示:计算定积分常用方法

>>symsx

int(exp(-x^2),0,1)

ans=

1/2*erf(1)*pi^(1/2) %erf为误差函数

>>vpa(int(exp(-x^2),0,1))

ans=

.7468241328124270

>>d=0.001;x=0:d:1;d*trapz(exp(-x.^2))

ans=

0.7468

>>quad('exp(-x.^2)',0,1,1e-8)

ans=

0.7468

例2:计算f(t)=1/log(t)在[0,x],0

注意:被积函数于x=0无义,在x-->1^-处为负无穷

本例演示:用特殊函数表示的积分结果,如何用mfun指令

(1)

symstx

ft=1/log(t);

sx=int(ft,t,0,x)

sx=

-Ei(1,-log(x)) %完全椭圆函数

(2)

x=0.5:0.1:0.9

sx_n=-mfun('Ei',1,-log(x))

x=

0.5000 0.6000 0.7000 0.8000 0.9000

sx_n=

-0.3787 -0.5469 -0.7809 -1.1340 -1.7758

(3)%图示被函数和积分函数

clf

ezplot('1/log(t)',[0.1,0.9])

gridon

holdon

plot(x,sx_n,'LineWidth',3)

Char1='1/ln(t)';

Char2='{int_0^x}1/ln(t)dt';

title([Char1,' and ',Char2])

legend(Char1,Char2,'Location','SouthWest')

例3:计算f(t)=exp(-sin(t))在[0,4]上的定积分

注意:本题被函数之原函数无"封闭解析表达式",符号计算无法解题!

本例演示:符号计算有限性

(1)符号计算解法

symstx

ft=exp(-sin(t))

sx=int(ft,t,0,4)

ft=exp(-sin(t))

Warning:Explicitintegralcouldnotbefound.

>Insym.intat58

sx=

int(exp(-sin(t)),t=0..4)

(2)数值计算解法

dt=0.05; %采样间隔

t=0:dt:4; %数值计算适合于有限区间上,取有限个采样点

Ft=exp(-sin(t));

Sx=dt*cumtrapz(Ft); %计算区间内曲线下图形面积,为小矩形面积累加得

Sx(end) %所求定积分值

%图示

plot(t,Ft,'*r','MarkerSize',4)

holdon

plot(t,Sx,'.k','MarkerSize',15)

holdoff

xlabel('x')

legend('Ft','Sx')

>>ans=

3.0632

例4:绘制积分图形,y=2/3*exp(-t/2)*cos(sqrt(3)/2*t);积分

s(x)=int(y,t,0,x)于[0,4*pi]上

symsttao

y=2/3*exp(-t/2)*cos(sqrt(3)/2*t);

s=subs(int(y,t,0,tao),tao,t); %获得积分函数

subplot(2,1,1)

%

ezplot(y,[0,4*pi]),ylim([-0.2,0.7]) %单变量符号函数可视化,多变量用ezsurf

gridon

subplot(2,1,2)

ezplot(s,[0,4*pi])

gridon

title('s=inty(t)dt')

int的积分可以是定积分,也可以是不定积分(即有没有积分上下限都可以积)可以得到解析的解,比如你对x^2积分,得到的结果是1/3*x^3,这是通过解析的方法来解的。如果int(x^2,x,1,2)得到的结果是7/3

quad是数值积分,它只能是定积分(就是有积分上下限的积分),它是通过simpson数值积分来求得的(并不是通过解析的方法得到解析解,再将上下限代入,而是用小梯形的面积求和得到的)。如果f=inline('x.^2');quad(f,1,2)得到的结果是2.333333,这个数并不是7/3

%% 符号变量与符号表达式%%%%%%%%%%%%%%%%%%%%%%%%%%%

%1.符号变量与符号表达式%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all ;

clc;

close all;

% f =sym( 'sin(x)+5x')

% f ——符号变量名

% sin(x)+5x——符号表达式

% ' '——符号标识

% 符号表达式一定要用' ' 单引号括起来matlab才能识别

% ' ' 的内容可以是符号表达式,也可以是符号方程。

% 例:

% f1=sym('a*x^2+b*x+c') ——二次三项式

% f2=sym('a*x^2+b*x+c=0' )——方程

% f3=sym('Dy+y^2=1') ——微分方程

% 符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算% syms 命令用来建立多个符号量,一般调用格式为:

% syms 变量1 变量2 ... 变量n

%% 符号矩阵的创建

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%2.符号矩阵的创建%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 数值矩阵A=[1,2;3,4]

% A=[a,b;c,d] ——不识别

% @1.用matlab函数sym创建矩阵(symbolic的缩写)

% 命令格式:A=sym('[ ]')

% ※符号矩阵内容同数值矩阵

% ※需用sym指令定义

% ※需用' '标识

% 例如:

A = sym('[a , 2*b ; 3*a , 0]')

% A =

% [ a, 2*b]

% [3*a, 0]

% 这就完成了一个符号矩阵的创建。

% 注意:符号矩阵的每一行的两端都有方括号,这是与matlab数值矩阵的一个重要区别。

%@2.用字符串直接创建矩阵(这种方法创建的没有什么用处)

% ※模仿matlab数值矩阵的创建方法

% ※需保证同一列中各元素字符串有相同的长度。

% 例:

A =['[ a,2*b]'; '[3*a, 0]']

% A =

% [ a, 2*b]

% [3*a, 0]

%@3.符号矩阵的修改

% a.直接修改

% 可用光标键找到所要修改的矩阵,直接修改

% b.指令修改

% ※用A1=sym(A,*,*,'new') 来修改。这个经过测试,不能运行

% ※用A1=subs(A, 'new', 'old')来修改

% % 例如:A =[ a, 2*b]

% [3*a, 0]

A = sym('[a , 2*b ; 3*a , 0]')

% A1=sym(A,2,2,'4*b') %%等效于A(2,2)='4*b';

% A1 =[ a, 2*b]

% [3*a, 4*b]

A1=subs(A,'0','4*b')

A2=subs(A1, 'c', 'b')

% A2 =[ a, 2*c]

% [3*a, 4*c]

%@4.符号矩阵与数值矩阵的转换

% ※将数值矩阵转化为符号矩阵

% 函数调用格式:sym(A)

A=[1/3,2.5;1/0.7,2/5]

% A =

% 0.3333 2.5000

% 1.4286 0.4000

B=sym(A)

% ans =

% [ 1/3, 5/2]

% [10/7, 2/5]

% ※将符号矩阵转化为数值矩阵

% 函数调用格式:numeric(A)

% B =

% [ 1/3, 5/2]

% [10/7, 2/5]

%numeric(B) 这个函数不存在了

VPA(B,4) %发现这个函数可用

% R = VPA(S) numerically evaluates each element of the double matrix % S using variable precision floating point arithmetic with D decimal

% digit accuracy, where D is the current setting of DIGITS.

% The resulting R is a SYM.

%

% VPA(S,D) uses D digits, instead of the current setting of DIGITS.

% D is an integer or the SYM representation of a number.

% ans =

% [ .3333, 2.500]

% [ 1.429, .4000]

%% 符号运算

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%3. 符号运算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 例1:

f=sym( '2*x^2+3*x-5'); g=sym( 'x^2+x-7');

h= f+g

% h=

% 3*x^2+4*x-12

% 例2:

f=sym('cos(x)');g=sym('sin(2*x)');

f/g+f*g

% ans =

% cos(x)/sin(2*x)+cos(x)*sin(2*x)

%% 查找符号变量

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%4.查找符号变量%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % findsym(expr) 按字母顺序列出符号表达式expr 中的所有符号变量

% % findsym(expr, N) 列出expr 中离x 最近的N 个符号变量

% 若表达式中有两个符号变量与x 的距离相等,则ASCII 码大者优先。

% ※常量pi, i, j 不作为符号变量

% 例:

f=sym('2*w-3*y+z^2+5*a');

findsym(f)

% ans =

% a, w, y, z

findsym(f,3)

% ans =

% y,w,z

findsym(f,1)

% ans =

% y

%% 计算极限

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%5.计算极限%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % limit(f,x,a): 计算f(x)当x趋向于a的极限

% limit(f,a): 当默认变量趋向于a 时的极限

% limit(f): 计算a=0 时的极限

% limit(f,x,a,'right'): 计算右极限

% limit(f,x,a,'left'): 计算左极限

% 例:计算

syms x h n;

L=limit((log(x+h)-log(x))/h,h,0)

% L =

% 1/x

M=limit((1-x/n)^n,n,inf)

% M =

% exp(-x)

%% 计算导数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%6.计算导数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % g=diff(f,v):求符号表达式f 关于v 的导数

% g=diff(f):求符号表达式f 关于默认变量的导数

% g=diff(f,v,n):求f 关于v 的n 阶导数

syms x;

f=sin(x)+3*x^2;

g=diff(f,x)

% g =

% cos(x)+6*x

%%计算积分

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%7.计算积分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % int(f,v,a,b): 计算定积分f(v)从a到b

% int(f,a,b): 计算关于默认变量的定积分

% int(f,v): 计算不定积分f(v)

% int(f): 计算关于默认变量的不定积分

f=(x^2+1)/(x^2-2*x+2)^2;

I=int(f,x)

% I =

% 3/2*atan(x-1)+1/4*(2*x-6)/(x^2-2*x+2)

K=int(exp(-x^2),x,0,inf)

% K =

% 1/2*pi^(1/2)

%%函数运算

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%8.函数运算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.合并、化简、展开等函数

% collect函数:将表达式中相同幂次的项合并;

% factor函数:将表达式因式分解;

% simplify函数:利用代数中的函数规则对表达式进行化简;

% numden函数:将表示式从有理数形式转变成分子与分母形式。

% 2.反函数

% finverse(f,v)对指定自变量为v的函数f(v)求反函数

% 3.复合函数

% compose(f,g) 求f=f(x)和g=g(y)的复合函数f(g(y))

% compose(f,g,z) 求f=f(x)和g=g(y)的复合函数f(g(z))

% 4.表达式替换函数(前面讲到了)

% subs(s) 用赋值语句中给定值替换表达式中所有同名变量

% subs (s, old, new) 用符号或数值变量new替换s中的符号变量old

%%

% mtaylor(f,n) ——泰勒级数展开

% ztrans(f) —— Z变换

% Invztrans(f) ——反Z变换

% Laplace(f) ——拉氏变换

% Invlaplace(f) ——反拉氏变换

% fourier(f) ——付氏变换

% Invfourier(f) ——反付氏变换

%%

clear

f1 =sym('(exp(x)+x)*(x+2)');

f2 = sym('a^3-1');

f3 = sym('1/a^4+2/a^3+3/a^2+4/a+5');

f4 = sym('sin(x)^2+cos(x)^2');

collect(f1)

% ans =

% x^2+(exp(x)+2)*x+2*exp(x)

% ans =

% exp(x)*x+2*exp(x)+x^2+2*x

factor(f2)

% ans =

% (a-1)*(a^2+a+1)

[m,n]=numden(f3)

%m为分子,n为分母

% m =

% 1+2*a+3*a^2+4*a^3+5*a^4

% n =

% a^4

simplify(f4)

% ans =

% 1

clear

syms x y

finverse(1/tan(x)) %求反函数,自变量为x

% ans =

% atan(1/x)

f = x^2+y;

finverse(f,y) %求反函数,自变量为y

% ans =

% -x^2+y

clear

syms x y z t u;

f = 1/(1 + x^2);

g = sin(y);

h = x^t; p = exp(-y/u); compose(f,g) %求f = f(x) 和g = g(y)的复合函数f(g(y)) % ans =

% 1/(1+sin(y)^2)

clear

syms a b

subs(a+b,a,4) %用4替代a+b中的a

% ans =

% 4+b

subs(cos(a)+sin(b),{a,b},{sym('alpha'),2}) %多重替换% ans =

% cos(alpha)+sin(2)

f=sym('x^2+3*x+2')

% f =

% x^2+3*x+2

subs(f, 'x', 2) %求解f当x=2时的值

% ans =

% 12

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%9.方程求解%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 1代数方程

% 代数方程的求解由函数solve实现:

% solve(f) 求解符号方程式f

% solve(f1,…,fn) 求解由f1,…,fn组成的代数方程组

%

% 2常微分方程

% 使用函数dsolve来求解常微分方程:

% dsolve('eq1, eq2, ...', 'cond1, cond2, ...', 'v')

clear

syms a b c x

f=sym('a*x*x+b*x+c=0')

solve(f)

% ans =

% [ 1/2/a*(-b+(b^2-4*c*a)^(1/2))]

% [ 1/2/a*(-b-(b^2-4*c*a)^(1/2))]

solve('1+x=sin(x)')

% ans =

% -1.9345632107520242675632614537689

dsolve( ' Dy=x ','x') %求微分方程y'=x的通解,指定x为自变量。

% ans =

% 1/2*x^2+C1

dsolve(' D2y=1+Dy ','y(0)=1','Dy(0)=0' ) %求微分方程y''=1+y'的解,加初始条件% ans =

% -t+exp(t)

[x,y]=dsolve('Dx=y+x,Dy=2*x') %微分方程组的通解

% x =

% -1/2*C1*exp(-t)+C2*exp(2*t)

% y =

% C1*exp(-t)+C2*exp(2*t)

% ezplot(y)方程解y(t)的时间曲线图

%% funtool

funtool %该命令将生成三个图形窗口,Figure No.1用于显示函数f的图形,

% Figure No.2用于显示函数g的图形,

% Figure No.3为一可视化的、可操作与显示一元函数的计算器界面。

% 在该界面上由许多按钮,可以显示两个由用户输入的函数的计算结果:

% 加、乘、微分等。funtool还有一函数存储器,允许用户将函数存入,

% 以便后面调用。在开始时,

% funtool显示两个函数f(x) = x与g(x) = 1在区间[-2*pi, 2*pi]上的图形。

% Funtool同时在下面显示一控制面板,

% 允许用户对函数f、g进行保存、更正、重新输入、联合与转换等操作。

%% taylortool %该命令生成一图形用户界面,显示缺省函数f=x*cos(x) % 在区间[-2*pi,2*pi]内的图形,同时显示函数f

% 的前N=7项的T aylor多项式级数和(在a=0附近的)图形,

% 通过更改f(x)项可得不同的函数图形。

% taylortool('f') %对指定的函数f,用图形用户界面显示出T aylor展开式

%% maple内核访问函数

%

% 可以访问maple内核的matlab函数:

% maple ———访问maple内核函数

% mapleinit —— maple函数初始化

% mpa ———— maple函数定义

% mhelp ——— maple函数帮助命令

% procread —— maple函数程序安装

% 具体的操作参看相关说明

数值积分的matlab实现

实验10 数值积分 实验目的: 1.了解数值积分的基本原理; 2.熟练掌握数值积分的MATLAB 实现; 3.会用数值积分方法解决一些实际问题。 实验内容: 积分是数学中的一个基本概念,在实际问题中也有很广泛的应用。同微分一样,在《微积分》中,它也是通过极限定义的,由于实际问题中遇到的函数一般都以列表形式给出,所以常常不能用来直接进行积分。此外有些函数虽然有解析式,但其原函数不是初等函数,所以仍然得不到积分的精确值,如不定积分?1 0 d sin x x x 。这时我们一般考虑用数值方法计算其 近似值,称为数值积分。 10.1 数值微分简介 设函数()y f x =在* x 可导,则其导数为 h x f h x f x f h ) ()(lim )(**0* -+='→ (10.1) 如果函数()y f x =以列表形式给出(见表10-1),则其精确值无法求得,但可由下式求得其近似值 h x f h x f x f ) ()()(*** -+≈' (10.2) 表 10-1 一般的,步长h 越小,所得结果越精确。(10.2)式右端项的分子称为函数()y f x =在 *x 的差分,分母称为自变量在*x 的差分,所以右端项又称为差商。数值微分即用差商近似 代替微商。常用的差商公式为: 000()() ()2f x h f x h f x h +--'≈ (10.3) h y y y x f 243)(2 100-+-≈ ' (10.4)

h y y y x f n n n n 234)(12+-≈ '-- (10.5) 其误差均为2 ()O h ,称为统称三点公式。 10.2 数值微分的MATLAB 实现 MATLAB 提供了一个指令求解一阶向前差分,其使用格式为: dx=diff(x) 其中x 是n 维数组,dx 为1n -维数组[]21321,, ,n x x x x x x ---,这样基于两点的数值导 数可通过指令diff(x)/h 实现。对于三点公式,读者可参考例1的M 函数文件diff3.m 。 例1 用三点公式计算()y f x =在=x 1.0,1.2,1.4处的导数值,()f x 的值由下表给 解:建立三点公式的M 函数文件diff3.m 如下: function f=diff3(x,y) n=length(x);h=x(2)-x(1); f(1)=(-3*y(1)+4*y(2)-y(3))/(2*h); for j=2:n-1 f(j)=(y(j+1)-y(j-1))/(2*h); end f(n)=(y(n-2)-4*y(n-1)+3*y(n))/(2*h); 在MATLAB 指令窗中输入指令: x=[1.0,1.1,1.2,1.3,1.4];y=[0.2500,0.2268,0.2066,0.1890,0.1736];diff3(x,y) 运行得各点的导数值为:-0.2470,-0.2170,-0.1890,-0.1650,-0.0014。所以()y f x =在=x 1.0,1.2,1.4处的导数值分别为-0.2470,-0.1890和-0.0014。 对于高阶导数,MATLAB 提供了几个指令借助于样条函数进行求导,详细使用步骤如下: step1:对给定数据点(x,y ),利用指令pp=spline(x,y),获得三次样条函数数据pp ,供后面ppval 等指令使用。其中,pp 是一个分段多项式所对应的行向量,它包含此多项式的阶数、段数、节点的横坐标值和各段多项式的系数。 step2:对于上面所求的数据向量pp ,利用指令[breaks,coefs,m,n]=unmkpp(pp)进行处理,生成几个有序的分段多项式pp 。 step3:对各个分段多项式pp 的系数,利用函数ppval 生成其相应导数分段多项式的系数,再利用指令mkpp 生成相应的导数分段多项式 step4:将待求点xx 代入此导数多项式,即得样条导数值。 上述过程可建立M 函数文件ppd.m 实现如下: function dy=ppd(pp) [breaks,coefs,m]=unmkpp(pp);

关于MATLAB中分段函数的画法

关于MATLAB中分段函数的画法 最近拿到一题关于MATLAB的分段函数画法的题目,我在网上找了挺久,但没发现很多有用的资料.所以感觉很棘手.但是问题还是要解决,所以我就自己整理了些东西,不怕大家见笑. 我把这些分段函数分为两类: 一.对于y=f(x)这个模型来讲,一类是关于其中一个段是y为常量的一个模型,举例说明. 例 1.y={0,(x<0);1,(x>=0)};在x>-10&x<10区间内的图形 代码如下 : x=-10:0.01:10; y=ones(size(x)); y(x<=0)=0; plot(x,y); axis([-10 10 -0.5 1.5]); 这样的处理方法就是对于x是变量而Y为常量的而直接定义常数矩阵,再通过判断进行修改,只适合于Y为常量的基础上. ________________________________________________华丽分割线_______________________________________________ 二.第二种是y=f(x),y是关于x的一个变量.需要将x进行赋值的分段函数.这种处理方法比较多. 这里引用一段经典matlab分段画图的例子给大家(代码为蓝色区域): 例 2: x=-3:0.01:3; y1=zeros(size(x)); y2=zeros(size(x)); y3=zeros(size(x)); N=length(x); for k=1:N if x(k)<-1&x(k)>=-3; y1(k)=(-x(k).^2-4*x(k)-3)/2; elseif x(k)>=-1&x(k)<1 ; y2(k)=-x(k).^2+1; else x(k)<=3&x(k)>=1 ; y3(k)=(-x(k).^2+4*x(k)-3)/2; end end y=y1+y2+y3; plot(x,y) 这里运用的是将Y的值设置成三个与x的数量相等的空变量.然后分别依次讲X 的值通过f(x)转换为Y然后画出图形并将三个图形进行组合.

【数学建模学习】Matlab的数值积分

Matlab 的数值积分问题 (1)求和命令sum 调用格式. 如果x 是向量,则sum(x) 给出x 的各个元素的累加和;如果x 是矩阵,则sum(x)是一个元素为x 的每列列和的行向量. 例3.1 调用命令sum 求向量x 的各个元素的累加和。 解:输入 x=[1,2,3,4,5,6,7,8,9,10]; sum(x) 得到 ans=55 例3.2 调用命令sum 求矩阵x 的各列元素的累加和。 解:输入 x=[1,2,3;4,5,6;7,8,9] x= 1 2 3 4 5 6 7 8 9 sum(x) 得到 ans=12 15 18 2.定积分的概念. 定积分是一个积分和的极限. 例如取x e x f =)(,求定积分?10dx e x 的近似值。 积分区间为[0,1],等距划分为20个子区间, x=linspace(0,1,21); 选取每个子区间的端点,并计算端点处的函数值. y=exp(x); 取区间的左端点处的函数值乘以区间长度全部加起来. y1=y(1:20); s1=sum(y1)/20 s1=1.6757 s1可作为定积分?10dx e x 的近似值。 若选取右端点: y2=y(2:21); s2=sum(y2)/20 s2=1.7616 s2也可以作为定积分?10dx e x 的近似值。 下面我们画出图象. plot(x,y);hold on for i=1:20 fill([x(i),x(i+1),x(i+1),x(i),x(i)],[0,0,y(i),y(i),0],'b')

end 如果选取右端点,则可画出图象. for i=1:20 fill([x(i),x(i+1),x(i+1),x(i),x(i)],[0,0,y(i+1),y(i+1),0],'b') hold on end plot(x,y,'r') 在上边的语句中,for … end 是循环语句,执行语句体内的命令20次,fill 命令可以填充多边形,在本例中,用的是兰色(blue)填充. 可试取50个子区间看一看结果怎样.下面按等分区间计算。 syms k n s=symsum(exp(k/n)/n,k,1,n); limit(s,n,inf) 得结果 ans=exp(1)-1 3.计算定积分 例3.6 计算?10dx e x . 解:输入命令: syms x; int(exp(x),0,1) 得结果 ans=exp(1)-1. 这与我们上面的运算结果是一致的. ⒈ 由给定数据进行梯形求积 假设已经建立起向量T N T N y y y y x x x x ],,,[,],,,[2121 ==,则可用以下语句进行梯形求积: sum((2*y(1:end-1,:)+diff(y)).*diff(x))/2 MATLAB 提供的trapz()函数也可直接用梯形法求解积分问题,该函数调用格式为 S=trapz(x,y) [例1-6-17] 试用梯形法求出),0(π∈x 区间内,函数sin(x),cos(x),sin(x/2)的定积分值。 [求解] >> x1=[0:pi/30:pi]'; y=[sin(x1) cos(x1) sin(x1/2)]; x=[x1 x1 x1]; S=sum((2*y(1:end-1,:)+diff(y)).*diff(x))/2 >> S1=trapz(x1,y) [例1-6-18] 用定步长方法求解积分?2 /30)15cos(πdx x 。 [求解] 鉴于求解区域内被积函数有很强的振荡,可先用下述语句绘制被积函数的曲线。 >> x=[0:0.01:3*pi/2,3*pi/2]; y=cos(15*x); plot(x,y) 采用不同的步距,可分别得到积分近似结果。 >> syms x, A=int(cos(15*x),0,3*pi/2) % 求理论值 >> h0=[0.1,0.01,0.001,0.0001,0.00001,0.000001]; v=[]

Matlab考试题库+答案(中北大学)

1、标点符号; _______可以使命令行不显示运算结果, %——用来表示该行为注释行。 2、x为0~4pi,步长为0.1pi的向量,使用命令_______创建。 x=0:0.1*pi:4*pi 3、输入矩阵A=,使用全下标方式用A(2,2) 取出元素“-5”,使用单下标方式用_______取出元素“-5”。 A(5) 4、符号表达式sin(2*a+t)+m中独立的符号变量为_______。 t 5、M脚本文件和M函数文件的主要区别是M脚本文件没有函数定义和M函数文件有函数定义_______。 6. 设x是一维数组,x的倒数第3个元素表示为_______; 设y为二维数组,要删除y的第34行和48列,可使用命令_______; _______; x(_end-2_) y(34,:)=[] y(:,48)=[] 7. 将变量x以Ascii文本格式存储到文件fname.txt,应使用命令_________ _; save _x 8. 在while 表达式, 语句体, End 循环语句中,表达式的值__ __时表示循环条件为真,语句体将被执行,否则跳出该循环语句; 非零 9.要从键盘读入一个字符串并赋值给变量x,且给出提示“Who is she?”,应使用命令_________; x=input(‘Who is she?’,’s’)_ 10.设A=和B=和C=均为m*n矩阵,且存在于WorkSpace中,要产生矩阵D=,可用命令________ _, 计算可用命令________; D=(A-C)/B.^C det(inv(A’*B) 11. 在MATLAB命令窗口中的“>>”标志为MATLAB的_______提示符,“│”标志为_______提示符。 命令行 输入 12.已知A=[1 2 3;4 5 0;7 8 9];B=[1 0 3;1 5 0;0 1 2];写出下列各指令运行的结果。 A+B; A.*B; A==B ; ans= [2,2,6;5,10,0;7,9,11] ans= [1,0,9;4,25,0;0,8,18] ans= [1,0,1;0,1,1;0,0,0] 13.已知A是矩阵,求A的对角矩阵函数是_______, 求A的下三角矩阵函数是_______。 diag tril 14.MATLAB的程序文件和Simulink模型文件的扩展名分别是_______、。 .m .mdl 15.MATLAB最基本的绘图函数为_______。 plot() 16. A=[1,2,3;4,5,6]; A(:,[1,3])=[];A=__________________ [2;5] 17. fix(-1.5)=___ ________, round(-1.5)=__ _______________. -1 -2

数值积分算法与MATLAB实现陈悦5133201讲解

东北大学秦皇岛分校 数值计算课程设计报告 数值积分算法及MATLAB实现 学院数学与统计学院 专业信息与计算科学 学号5133201 姓名陈悦 指导教师姜玉山张建波 成绩 教师评语: 指导教师签字: 2015年07月14日

1 绪论 数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值检索方其理论与软件的实现.而数值分析主要研究数值计算. 现科学技术的发展与进步提出了越来越多的复杂的数值计算问题,这些问题的圆满解决已远人工手算所能胜任,必须依靠电子计算机快速准确的数据处理能力.这种用计算机处理数值问题的方法,成为科学计算.今天,科学计算的应用范围非常广泛,天气预报、工程设计、流体计算、经济规划和预测以及国防尖端的一些科研项目,如核武器的研制、导弹和火箭的发射等,始终是科学计算最为活跃的领域. 1.1 数值积分介绍 数值积分是数值分析的重要环节,实际问题当中常常需要计算积分,有些数值方法,如微分方程和积分方程的求解,也都和积分计算相联系. 求某函数的定积分时,在多数情况下,被积函数的原函数很难用初等函数表达出来,因此能够借助微积分学的牛顿-莱布尼兹公式计算定积分的机会是不多的.另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解.由于以上原因,数值积分的理论与方法一直是计算数学研究的基本课题.对微积分学做出杰出贡献的数学大师,如I.牛顿、L.欧拉、C.F.高斯、拉格朗日等人都在数值积分这个领域作出了各自的贡献,并奠定了这个分支的理论基础. 构造数值积分公式最通常的方法是用积分区间上的n 次插值多项式代替被积函数,由此导出的求积公式称为插值型求积公式.特别在节点分布等距的情形称为牛顿-科特斯公式,例如梯形公式(Trapezoidal Approximations)与抛物线公式(Approximations Using Parabolas)就是最基本的近似公式.但它们的精度较差.龙贝格算法是在区间逐次分半过程中,对梯形公式的近似值进行加权平均获得准确程度较高的积分近似值的一种方法,它具有公式简练、计算结果准确、使用方便、稳定性好等优点,因此在等距情形宜采用龙贝格求积公式(Rhomberg Integration).当用不等距节点进行计算时,常用高斯型求积公式计算,它在节点数目相同情况下,准确程度较高,稳定性好,而且还可以计算无穷积分.数值积分还是微分方程数值解法的重要依据.许多重要公式都可以用数值积分方程导出.现探讨数值积分算法以及运用MATLAB软件的具体实现

数值积分用matlab实现

数值积分用m a t l a b实 现

东北大学秦皇岛分校 数值计算课程设计报告 数值积分及Matlab实现 学院数学与统计学院 专业信息与计算科学 学号5133117 姓名楚文玉 指导教师张建波姜玉山 成绩 教师评语: 指导教师签字: 2015年07月14日

1 绪论 在科研计算中,经常会碰到一些很难用公式定理直接求出精确解的积分问题,对于这类问题,我们一般转化为数值积分问题,用计算机来实现求解问题. 1.1 课题的背景 对于定积分()b a f x dx ?在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里 茨公式()()()b a I f x dx F b F a ==-?可以计算定积分的值,但在很多情况下的原函数() f x 不易求出或非常复杂.被积函数的原函数很难用初等函数表达出来,例如 2 sin (),x x f x e x -= 等;有的函数()f x 的原函数()F x 存在,但其表达式太复杂,计算量太大,有的甚至无法有解析表达式.因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的.另外,许多实际问题中的被积函数()f x 往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值.因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算.而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数在一些节点上的信息求出定积分的近似值.微积分的发明是人类科学史上一项伟大的成就,在科学技术中,积分是经常遇到的一个重要计算环节数值积分是数学上重要的课题之一,是数值分析中重要的内容之一.随着计算机的出现,近几十年来,对于数值积分问题的研究已经成为一个很活跃的研究领域.现在,数值积分在计算机图形学,积分方程,工程计算,金融数学等应用科学领域都有着相当重要的应用,所以研究数值积分问题有着很重要的意义.国内外众多学者在数值积分应用领域也提出了许多新方法.在很多实际应用中,只能知道积分函数在某些特定点的取值,比如天气测量中的气温、湿度、气压等,医学测量中的血压、浓度等等.通过这个课题的研究,我们将会更好地掌握运用数值积分算法求出特殊积分函数的定积分的一些基本方法、理论基础;并且通过Matlab 软件编程的实现,应用于实际生活中. 1.2 课题的主要内容框架

数值积分算法与MATLAB实现

数值积分算法与MATLAB实现 本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意! 摘要:在求一些函数的定积分时,由于原函数十分复杂难以求出或用初等函数表达,导致积分很难精确求出,只能设法求其近似值,因此能够直接借助牛顿-莱布尼兹公式计算定积分的情形是不多的。数值积分就是解决此类问题的一种行之有效的方法。积分的数值计算是数值分析的一个重要分支;因此,探讨近似计算的数值积分方法是有着明显的实际意义的。本文从数值积分问题的产生出发,详细介绍了一些数值积分的重要方法。 本文较详细地介绍了牛顿-科特斯求积公式,以及为了提高积分计算精度的高精度数值积分公式,即龙贝格求积公式和高斯-勒让德求积公式。除了研究这些数值积分算法的理论外,本文还将这些数值积分算法在计算机上通过MATLAB软件编程实现,并通过实例用各种求积公式进行运算,分析比较了各种求积公式的计算误差。 【关键词】数值积分牛顿-科特斯求积公式高精度求积公式MATLAB软件

前言 对于定积分,在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里茨公式可以计算定积分的值,但在很多情况下的原函数不易求出或非常复杂。被积函数的原函数很难用初等函数表达出来,例如等;有的函数的原函数存在,但其表达式太复杂,计算量太大,有的甚至无法有解析表达式。因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的。另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值。因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算。而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数在一些节点上的信息求出定积分的近似值。 微积分的发明是人类科学史上一项伟大的成就,在科学技术中,积分是经常遇到的一个重要计算环节。数值积分是数学上重要的课题之一,是数值分析中重要的内容之一,也是应用数学研究的重点。随着计算机的出现,近几十年来,对于数值积分问题的研究已经成为一个很活跃的研究领域。现在,数值积分在计算

matlab使用指导(2012)

一、基础知识 1.1 常见数学函数 如:输入x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则: ceil(x)= -4 -2 0 2 5 7 fix(x) = -4 -2 0 1 4 6 floor(x) = -5 -3 -1 1 4 6 round(x) = -5 -2 0 1 5 7 1.2 系统的在线帮助 1 help 命令: 1.当不知系统有何帮助内容时,可直接输入help以寻求帮助: >>help(回车) 2.当想了解某一主题的内容时,如输入: >> help syntax(了解Matlab的语法规定) 3.当想了解某一具体的函数或命令的帮助信息时,如输入: >> help sqrt (了解函数sqrt的相关信息)

2 lookfor命令 现需要完成某一具体操作,不知有何命令或函数可以完成,如输入: >> lookfor line (查找与直线、线性问题有关的函数) 1.3 常量与变量 系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意 1 数值型向量(矩阵)的输入 1.任何矩阵(向量),可以直接按行方式 ...输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。所有元素处于一方括号([ ])内; 例1: >> Time = [11 12 1 2 3 4 5 6 7 8 9 10] >> X_Data = [2.32 3.43;4.37 5.98] 2

上面函数的具体用法,可以用帮助命令help得到。如help zeros,可查到zeros的具体用法。 例:meshgrid(x,y) 输入x=[1 2 3 4]; y=[1 0 5]; [X,Y]=meshgrid(x, y),则 X = Y = 1 2 3 4 1 1 1 1 1 2 3 4 0 0 0 0 1 2 3 4 5 5 5 5 目的是将原始数据x,y转化为矩阵数据X,Y。 2 符号向量(矩阵)的输入 1.用函数sym定义符号矩阵: 函数sym实际是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的符号或者是表达式,而且长度没有限制。只需将方括号置于单引号中。 例2: >> sym_matrix = sym('[a b c;Jack Help_Me NO_WAY]') sym_matrix = [ a, b, c] [Jack, Help_Me, NO_WAY] 2.用函数syms定义符号矩阵 先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入符号矩阵。 例3: >> syms a b c ; >> M1 = sym('Classical'); >> M2 = sym(' Jazz'); >> M3 = sym('Blues'); >> A = [a b c;M1,M2,M3;sym([2 3 5])] A = [ a, b, c] [Classical, Jazz, Blues] [ 2, 3, 5]

matlab求定积分之实例说明

一、符号积分 符号积分由函数int来实现。该函数的一般调用格式为: int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分; int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分; int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。该函数求被积函数在区间[a,b]上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。当a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。 例: 求函数x^2+y^2+z^2的三重积分。内积分上下限都是函数,对z积分下限是sqrt(x*y),积分上限是x^2*y;对y积分下限是sqrt(x),积分上限是x^2;对x的积分下限1,上限是2,求解如下: >>syms x y z %定义符号变量 >>F2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) %注意定积分的书写格式 NORMINV(probability,mean,standard_dev) Probability 正态分布的概率值。 Mean 分布的算术平均值。 Standard_dev 分布的标准偏差。 F2 = 1610027357/6563700-6072064/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2^(3/4) %给出有理数解 >>VF2=vpa(F2) %给出默认精度的数值解 VF2 = 224.92153573331143159790710032805 二、数值积分 1.数值积分基本原理 求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)?法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。 2.数值积分的实现方法 基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为: [I,n]=quad('fname',a,b,tol,trace) 基于变步长、牛顿-柯特斯(Newton-Cotes)法,MATLAB给出了quadl函数来求定积分。该函数的调用格式为: [I,n]=quadl('fname',a,b,tol,trace) 其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积

利用Matlab实现Romberg数值积分算法----系统建模与仿真结课作业

利用Matlab 实现Romberg 数值积分算法 一、内容摘要 针对于某些多项式积分,利用Newton —Leibniz 积分公式求解时有困难,可以采用数值积分的方法,求解指定精度的近似解,本文利用Matlab 中的.m 文件编写了复化梯形公式与Romberg 的数值积分算法的程序,求解多项式的数值积分,比较两者的收敛速度。 二、数值积分公式 1.复化梯形公式求解数值积分的基础是将区间一等分时的Newton —Cotes 求积公式: I =(x)[f(a)f(b)]2 b a b a f dx -≈ +? 其几何意义是,利用区间端点的函数值、与端点构成的梯形面积来近似(x)f 在区间[a,b]上的积分值,截断误差为: 3" (b a)()12 f η-- (a,b)η∈ 具有一次的代数精度,很明显,这样的近似求解精度很难满足计算的要求,因而,可以采用将积分区间不停地对分,当区间足够小的时候,利用梯形公式求解每一个小区间的积分近似值,然后将所有的区间加起来,作为被求函数的积分,可以根据计算精度的要求,划分对分的区间个数,得到复化梯形公式: I =1 1 (b a)(b a) (x)dx [f(a)f(b)2(a )]2n b a k k f f n n -=--≈+++∑? 其截断误差为:

2" (b a)h ()12 R f η--= (a,b)η∈ 2.Romberg 数值积分算法 使用复化的梯形公式计算的数值积分,其收敛速度比减慢,为此,采用Romberg 数值积分。其思想主要是,根据I 的近似值2n T 加上I 与2n T 的近似误差,作为新的I 的近视,反复迭代,求出满足计算精度的近似解。 用2n T 近似I 所产生的误差可用下式进行估算: 12221 ()3 n n n I T T T -?=-=- 新的I 的近似值: 122 n n j T T -=?+ j =(0 1 2 ….) Romberg 数值积分算法计算顺序 i=0 (1) 002T i=1 (2) 102T (3) 012T i=2 (4) 202T (5) 112T (6) 022T i=3 (7) 302T (8) 212T (9) 122T (10) 032T i=4 (11) 402T (12) 312T (13) 222T (14) 132T … … … … 其中,第一列是二阶收敛的,第二列是四阶收敛的,第三列是六阶收敛的,第四列是八阶收敛的,即Romberg 序列。

用matlab绘制各种数字信号中的函数还有分段函数及翻褶平移

《数字信号处理》 (一)实验目的 使用stem绘图函数分别画出离散时间信号在指定范围内的图形。画图时使用xlabel,ylabel,title,legend等函数进行注释。复习MATLAB的基本应用,如:函数的定义、画图……并巩固理论知识中的多种离散时间信号及其图形,以及延迟与翻褶的函数变换等。 (二)程序的运行与截图 1)用stem绘制单位阶跃序列u(n) clear all;close all;clc;%清除所有变量 n=0:50;%取值范围 y=(n>=0);%n>=0,y=1;n<0,y=0 stem(n,y);%显示出当0<=n<=50 时,函数u(n)的取值范围 xlabel('n');%对横轴进行注释 ylabel('y=u(n)');%对纵轴进行注释 title('y=u(n)的图形');%对图像的标题进行注释 legend('y=u(n)',2);%对图中曲线进行注释,标注在第二象限 2)用stem绘制单位抽样(冲激)序列δ(n) clear all;close all;clc; %清除所有变量

n=0:50; %取值范围 y=(n==0);%n=0,y=1;n!=0,y=1 stem(n,y);%显示出当0<=n<=50 时,函数δ(n)的取值范围xlabel('n');%对横轴进行注释 ylabel('y=δ(n)');%对纵轴进行注释 title('y=δ(n)的图形');%对图像的标题进行注释 legend('y=δ(n)',2);%对图中曲线进行注释,标注在第二象限

3)用stem绘制矩形序列Rn(n)clear all;close all;clc; %清除所有变量 n=0:50; %取值范围 R10=((n>=0)&(n-9)<=0);%0<=n<=10,y=1;n>10,y=0 stem(n,R10);%显示出当0<=n<=50 时,函数Rn(n)的取值范围xlabel('n');%对横轴进行注释 ylabel(' y=R10(n)');%对纵轴进行注释 title('y=R10(n)的图形');%对图像的标题进行注释 legend('y=R10(n)',2);%对图中曲线进行注释,标注在第二象限

[整理]Matlab积分.

一.数值积分的实现方法 1.变步长辛普生法 基于变步长辛普生法,MA TLAB给出了quad函数来求定积分。该函数的调用格式为:[I,n]=quad('fname',a,b,tol,trace) 其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积分精度,缺省时取tol=0.001。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。 例8-1 求定积分。 (1) 建立被积函数文件fesin.m。 function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2) 调用数值积分函数quad求定积分。 [S,n]=quad('fesin',0,3*pi) S = 0.9008 n = 77 2.牛顿-柯特斯法 基于牛顿-柯特斯法,MA TLAB给出了quad8函数来求定积分。该函数的调用格式为:[I,n]=quad8('fname',a,b,tol,trace) 其中参数的含义和quad函数相似,只是tol的缺省值取10-6。?该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。 (1) 被积函数文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x)); (2) 调用函数quad8求定积分。 I=quad8('fx',0,pi) I = 2.4674 分别用quad函数和quad8函数求定积分的近似值,并在相同的积分精度下,比较函数的调用次数。 调用函数quad求定积分: format long; fx=inline('exp(-x)'); [I,n]=quad(fx,1,2.5,1e-10) I = 0.28579444254766 n = 65 调用函数quad8求定积分: format long; fx=inline('exp(-x)'); [I,n]=quad8(fx,1,2.5,1e-10) I = 0.28579444254754 n = 33

用matlab画分段函数y

例1.用matlab画分段函数y=sin(x), 当y<0时y=0 ;当y>0.8时y=0.8 x=-2:0.1:2; y=0.*(x<0)+sin(x).*(x<=0.8&x>=0)+0.8*(x>0.8); plot(x,y,'r') 例2 高数中的的取整函数y=[x] Ex-1: >> x=0:0.001:4; >> y=0*(x<1&x>=0)+(x<2&x>=1)+2*(x<3&x>=2)+3*(x<4&x>=3); >> plot(x,y,'-r') Ex-2: x=0:0.001:4; y=0*(x<1&x>=0)+(x<2&x>=1)+2*(x<3&x>=2)+3*(x<4&x>=3); k1= find(x==1); k2= find(x==2); k3= find(x==3); k4= find(x==4); plot(x(1:k1-1),y(1:k1-1),'b', x(k1+1:k2-1),y(k1+1:k2-1),'r') hold on plot(x(k2+1:k3-1),y(k2+1:k3-1),'c',x(k3+1:k4-1),y(k3+1:k4-1),'m')

例3 matlab 绘制分段函数x>=1,y=exp(-(x-1)^2); x<1,y=x^2.其中曲线为绿虚线,并进行标注 x=-4:0.01:4; y=(x<1).*(x.^2)+(x>=1).*(exp(-(x-1).^2)); plot(x,y,'b') text(-2,5,'\leftarrow y=x^2','FontSize',9) text(2,0.7,'\leftarrow y=exp(-(x-1)^2)','FontSize',9)

matlab实现数值分析报告插值及积分

Matlab实现数值分析插值及积分 摘要: 数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。在实际生产实践中,常常将实际问题转化为数学模型来解决,这个过程就是数学建模。学习数值分析这门课程可以让我们学到很多的数学建模方法。 分别运用matlab数学软件编程来解决插值问题和数值积分问题。题目中的要求是计算差值和积分,对于问题一,可以分别利用朗格朗日插值公式,牛顿插值公式,埃特金逐次线性插值公式来进行编程求解,具体matlab代码见正文。编程求解出来的结果为:=+。 其中Aitken插值计算的结果图如下: 对于问题二,可以分别利用复化梯形公式,复化的辛卜生公式,复化的柯特斯公式编写程序来进行求解,具体matlab代码见正文。编程求解出来的结果为: 0.6932 其中复化梯形公式计算的结果图如下:

问题重述 问题一:已知列表函数 表格 1 分别用拉格朗日,牛顿,埃特金插值方法计算。 问题二:用复化的梯形公式,复化的辛卜生公式,复化的柯特斯公式计算积分,使精度小于5。 问题解决 问题一:插值方法 对于问题一,用三种差值方法:拉格朗日,牛顿,埃特金差值方法来解决。 一、拉格朗日插值法: 拉格朗日插值多项式如下: 首先构造1+n 个插值节点n x x x ,,,10 上的n 插值基函数,对任一点i x 所对应的插值基函数 )(x l i ,由于在所有),,1,1,,1,0(n i i j x j +-=取零值,因此)(x l i 有因子 )())(()(110n i i x x x x x x x x ----+- 。又因)(x l i 是一个次数不超过n 的多项式,所以只 可能相差一个常数因子,固)(x l i 可表示成: )())(()()(110n i i i x x x x x x x x A x l ----=+- 利用1)(=i i x l 得:

Matlab数值积分与数值微分

M a t l a b数值积分与数值微分 Matlab数值积分 1.一重数值积分的实现方法 变步长辛普森法、高斯-克朗罗德法、梯形积分法 1.1变步长辛普森法 Matlab提供了quad函数和quadl函数用于实现变步长 辛普森法求数值积分.调用格式为: [I,n]=Quad(@fname,a,b,tol,trace) [I,n]=Quadl(@fname,a,b,tol,trace) Fname是函数文件名,a,b分别为积分下限、积分上限; tol为精度控制,默认为1.0×10-6,trace控制是否展 开积分过程,若为0则不展开,非0则展开,默认不展开. 返回值I为积分数值;n为调用函数的次数. --------------------------------------------------------------------- 例如:求 ∫e0.5x sin(x+π )dx 3π 的值. 先建立函数文件 fesin.m function f=fesin(x) f=exp(-0.5*x).*sin(x+(pi/6));再调用quad函数

[I,n]=quad(@fesin,0,3*pi,1e-10) I= 0.9008 n= 365 --------------------------------------------------------------------- 例如:分别用quad函数和quadl函数求积分 ∫e0.5x sin(x+π 6 )dx 3π 的近似值,比较函数调用的次数. 先建立函数文件 fesin.m function f=fesin(x) f=exp(-0.5*x).*sin(x+(pi/6)); formatlong [I,n]=quadl(@fesin,0,3*pi,1e-10) I= n= 198 [I,n]=quad(@fesin,0,3*pi,1e-10) I= n= 365 --------------------------------------------------------------------- 可以发现quadl函数调用原函数的次数比quad少,并 且比quad函数求得的数值解更精确. 1.2高斯-克朗罗德法

matlab实验指导答案详解(非常详细正确)

实验一 MATLAB 工作环境熟悉及简单命令的执行 一、实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单 (Menu )、工具条 (Toolbar )、命令窗口(Command Window)、历史命令窗口、工作 空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。 三、实验步骤: 1、启动MATLAB ,熟悉MATLAB 的桌面。 2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。 (1)(365-52?2-70)÷3 >>(365-52*2-70)/3 ans = 63.6667 (2)>>area=pi*2.5^2 area = 19.6350 (3)已知x=3,y=4,在MATLAB 中求z : () 2 3 2y x y x z -= >>x=3 >>y=4 >>z = x ^2 * y ^3 / (x - y) ^2 z = 576 (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。 m1=???? ? ???? ???11514412679810115133216 执行以下命令 >>m1 =[16 2 3 13 ; 5 11 10 8 ; 9 7 6 12 ; 4 14 15 1 ] >>m1( 2 , 3 ) ans = 10 >>m1( 11 ) ans = 6 >>m1( : , 3 ) ans =3 10 6 15 >>m1( 2 : 3 , 1 : 3 ) ans =5 11 10 9 7 6 >>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) ans = 34 (5)执行命令>>help abs

用matlab绘制各种数字信号中的函数-还有分段函数及翻褶-平移

用matlab绘制各种数字信号中的函数-还有分段函数及翻褶-平移

《数字信号处理》 (一)实验目的 使用stem绘图函数分别画出离散时间信号在指定范围内的图形。画图时使用xlabel,ylabel,title,legend等函数进行注释。复习MATLAB的基本应用,如:函数的定义、画图……并巩固理论知识中的多种离散时间信号及其图形,以及延迟与翻褶的函数变换等。 (二)程序的运行与截图 1)用stem绘制单位阶跃序列u(n) clear all;close all;clc;%清除所有变量 n=0:50;%取值范围 y=(n>=0);%n>=0,y=1;n<0,y=0 stem(n,y);%显示出当0<=n<=50 时,函数u(n)的取值范围 xlabel('n');%对横轴进行注释 ylabel('y=u(n)');%对纵轴进行注释 title('y=u(n)的图形');%对图像的标题进行注释legend('y=u(n)',2);%对图中曲线进行注释,标注在第二象限

2)用stem绘制单位抽样(冲激)序列δ(n)clear all;close all;clc; %清除所有变量 n=0:50; %取值范围 y=(n==0);%n=0,y=1;n!=0,y=1 stem(n,y);%显示出当0<=n<=50 时,函数δ(n)的取值范围 xlabel('n');%对横轴进行注释 ylabel('y=δ(n)');%对纵轴进行注释 title('y=δ(n)的图形');%对图像的标题进行注释 legend('y=δ(n)',2);%对图中曲线进行注释,标

相关文档
相关文档 最新文档