MATLAB-有限差分格式的验证

Matlab-有限差分格式的验证

提示:离散网格边界的向前向后二阶差分


一、代码

clear
clc
x=linspace(-1,1,1001)
y = linspace(-1,1,1001)

h1=0.002;
h2=0.002;
[y,x] = meshgrid(y,x);

syms xx yy z
z = sqrt(10^2-xx^2-yy^2)
fsurf(z)

digits 8

zz = zeros(size(x));
for i=1:101
    for j=1:101
        zz(i,j) = subs(z,[xx,yy],[x(i,j),y(i,j)]);
    end
end


for i=1:101
    for j=1:101
        if i==1&&j==1
            z_xx = -(-9*r(i,j)+24*r(i+1,j)-22*r(i+2,j)+8*r(i+3,j)-r(i+4,j))/4/(h1)^2;
            z_xy = -(-9*r(i,j)+12*r(i,j+1)-3*r(i,j+2)+12*r(i+1,j)-16*r(i+1,j+1)+4*r(i+1,j+2)-3*r(i+2,j)+4*r(i+2,j+1)-r(i+2,j+2))/4/h1/h2;
        end
        
    end
end


f = subs(diff(diff(z,xx),xx),[xx,yy],[-1,-1])%((-1)^2-100)/sqrt(100-1-1)^3
ff = subs(diff(diff(z,xx),yy),[xx,yy],[-1,-1])

二、结果

结果

可以查看两种方法得到的数值结果,并进行对比,可以发现,当差分网格越密集,即离散数越多,有限差分结果与实际求导得到的结果越接近。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值