3差分,微分,梯度

2022-05-26 00:46:38   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《3差分,微分,梯度》,欢迎阅读!
差分,梯度,微分
§3 差分 微分 梯度

一、知识背景

差分运算的大体概念:

物理问题(如电磁场)的数值分析的计算方式中,有限差分法是应用最先的一种方式,直至今天,它仍以其简单、直观的特点而取得普遍应用不管是常微分方程、偏微分方程,线性方程或非线性方程,通常都可利用有限差分方式转化为代数方程组,借助运算机求得数值解。

设函数为f(x)其独立变量x有一很小的增量,那么该函数f(x)的增量为:f(x)f(xh)f(x),称为一阶差分。与微分不同,因是有限量的差,因此称有限差分。一阶差分除以增量h的商,为一阶差商:

f(x)f(xh)f(x)

xh

还可计算一阶差分的差分,取得二阶差分,即:2f(x)f(xh)f(x)

能够近似用差商表示函数f(x)的导数及偏导数。咱们能够用各离散点上函数的差商来近似代替该点的偏导数,将需求解的边值问题转化为一组相应的差分方程,依照差分方程组解出位于各离散点上的待求函数值,即相应的数值解。

二、计算差分指令diff

语句格式:diff(x)---

符号意义:假设x是行矢量,那么指令diff(x)计算式为[x(2)-x(1),x(3)-x(2), x(n)-x(n-1)],即后项减前项。

假设x是矩阵,那么指令计算为后行减前行,即对矩阵的行矢量作差分计算所得矩阵为[x(2:n,:)-x(1:n,:)]

diff(x,n) 指令对矩阵x的列矢量计算n阶差分,n应小于或等于矩阵列矢量的元素数。


diff(x,n,dim) 指令对矩阵x中,由dim代表的维作差分计算,若是n大于或等于dim的维元素数,那么返回空矩阵。 1:对矩阵x, 作不同情形下的差分运算。

>>x=[1,3,5;6,4,2],z1=diff(x),z2=diff(x,1,1),z3=diff(x,1,2),z4=diff(x,2,2),z5=diff(x,3,2) x =

1 3 5 6 4 2

z1 =

5 1 -3

z2 = %x的每列进行一阶差分计算,结果为后行减前行,和

diff(x),diff(x,1)结果相同

5 1 -3

z3 = %x的每行进行一阶差分计算,结果是后列减前列

2 2 -2 -2

z4 = %x每行进行二阶差分计算

0 0

z5 = %对每行作三阶差分计算。结果取得一个空矩阵

Empty matrix: 2-by-0

三、微分 导数

一阶差分f(x)f(xh)f(x),一阶差商

f(x)f(xh)f(x)

xh

当增量h很小,差分f(x)与微分df(x)之间不同将很小,因此可用diff


略求微分。而导数可近似用差商计算,

df(x)f(x)f(xh)f(x)

dxxh

另外,也可用gradient(f,h)梯度指令作为数值计算近似公式求导数。 2:对函数y=cos(x2)求导数,用差分、求导公式、求梯度,不同方式运算,并进行比较。 >> h=;x=0:h:pi/2; y=cos(x.^2);

y1=diff(y)/h; %用差商求导 y2=-sin(x.^2)*2.*x; %用求导数公式 y3=gradient(y,h); %用求梯度公式 plot(x,y,'k',x(1:end-1),y1+,'r',x,y2,'b',x,,'g'), grid

2



图中,最上面线为y~x函数曲线,下面三条线别离为:中间蓝色的为用导数公式求的导数曲线,上面红色的为用差商求的导数曲线,下面绿色的为


用梯度求的曲线。上、下两条线已通过技术处置()不然三线大体重在一路。从这结果也看出三种方式求导结果大致相同。可自行绘制y1-y2y3-y2图线,看其情形。

四、矩阵或多维列阵的梯度

语句格式:

[fx fy]= gradient( f ) [fx fy]= gradient( f, h ) [fx fy]= gradient( f, hx, hy ) 符号意义:

fy 代表df/dy,是y()方向的偏微分; fx 代表df/dx,是x()方向的偏微分; f(需求梯度)的矩阵或列阵。

h 标量,是各个方向的步长,其默许值为1

hxhy 为标量或矢量,别离表示在xy方向上的步长,假设为矢量,其长度应与f对应维的元素数相等。 3:已知V线散布。

>>v='(x.^2+y.^2).^'; %以字符串方式输入电势V的方程 xmax=10;ymax=10;ngrid=20; %确信x,y画图范围和网格线数 xplot=linspace(-xmax,xmax,ngrid);

[x,y]=meshgrid(xplot); %生成二维网络x,y网络 vplot=eval(v); %执行输入字符串



[Explot,Eyplot]=gradient(-vplot); %计算电场(E meshc(vplot), %含等高线的三维曲面 figure(2),

1,绘制电场E空间散布图形,E矢量场图和等位

22xy


subplot(1,2,1), meshc(vplot),

xlabel('x'),ylabel('y');zlabel('U'), %加注坐标轴 subplot(1,2,2),

axis([-xmax,xmax,-ymax,ymax]), %等高线图范围及比例 cs=contour(x,y,vplot); %绘制等高线 clabel(cs), %等高线图标出字符 hold on;

quiver(x,y,Explot,Eyplot), %箭头图 xlabel('x'),ylabel('y'), hold off

3



练习三

如何取得VE的数值解?


针对不同V的函数,练习编写程序。观看分析图形。 1Vlog(2x24y2) 2V2x24y2.


本文来源:https://www.wddqxz.cn/dc0ccc4c24d3240c844769eae009581b6bd9bdf2.html

相关推荐