作业帮 > 综合 > 作业

抛物线显示差分格式matlab,与u=e^(-t)sinx比较,我只给的起那么多分了,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/24 17:02:45
抛物线显示差分格式matlab,与u=e^(-t)sinx比较,我只给的起那么多分了,
显示格式的效果比较差,而且对时间步长有限制,不然解就比较差了.下面是matlab的代码,其实主要部分是离散格式,掌握好网格划分与差分格式,其他的都是编程问题了.
%不知道你想比较什么,直接运行出图吧
N = 10;%建议取值10与30进行对比,取10时网格比较粗糙但效果可以,取30时结果发散.
%希望不要追问隐式格式的,那个又是另一种了.
T = 1;
X = pi;
dt = T/(N-1);
dx = X/(N-1);
t = 0:dt:T;
x = 0:dx:X;
co = dt/dx/dx;
u = zeros(N);
u(1,:) = sin(x);
u(:,1) = 0;
u(:,N) = 0;
for i = 2:N
for j = 2:N-1
u(i,j) = co*(u(i-1,j-1)+u(i-1,j+1)-2*u(i-1,j))+u(i-1,j);
end
end
v = zeros(N);
for i = 1:N
for j = 1:N
v(i,j) = exp(-t(i))*sin(x(j));
end
end
figure();
surf(x,t,u);
figure();
surf(x,t,v);
再问: 我想要的是数据的比较,发我邮箱吧,942069078@qq.com
再答: 你要的是分析结果吗?还是什么?上面程序中的u就是计算的近似值,v就是准确解,想比较就用 abs(u)-abs(v) 看看这个矩阵的最大值和最小值就是你想要的了 如果按误差公式就是求不同的范数就行了 norm(u-v,?); 主要问题是你想要用哪种方法算误差。
再问: 我也不知道老师要我们做什么的,能不能一堆u值,一堆V值,再加上他们的绝对值
再答: 估计就是比较数值解与精确解的误差,如果是一个未知数当然就是差的绝对值比较,现在是矩阵当然是按矩阵范数为准。范数是等价的,所以你选哪个是无所谓的。就直接norm(u-v)/norm(v) 表示个相对还是绝对误差?我也记不得了。就这样了。交上去应该没问题。主要就是想让你知道离散的过程和显示格式的缺点。