用Matlab编写差分方程:L_h*u_i=-1/h^2*[p_(i+1/2)*u_(i+1)-(p_(i+1/2)+p_(i-1/2))*u_i+p_(i-1/2)*u_(i-1)]+r_i*(u_(i+1)-u_(i-1))/2h+q_i*u_i=fi
时间: 2024-05-25 07:16:31 浏览: 120
用Matlab求解差分方程问题.pdf
function [u] = solve_diff_eqn(L, p, r, q, f, h, n)
% L: 差分方程中的L_h
% p: 差分方程中的p_i+1/2和p_i-1/2
% r: 差分方程中的r_i
% q: 差分方程中的q_i
% f: 差分方程中的f_i
% h: 步长
% n: 离散点数目
% 初始化u
u = zeros(n, 1);
% 计算差分方程
for i = 2:n-1
u(i) = (-1/h^2)*(p(i+1/2)*u(i+1)-(p(i+1/2)*p(i-1/2))*u(i)+p(i-1/2)*u(i-1))...
+(r(i)/2/h)*(u(i+1)-u(i-1))...
+(q(i)*u(i)-f(i));
end
% 处理边界
u(1) = 0;
u(n) = 0;
end
阅读全文