我们被要求在 MATLAB 上定义自己的微分算子,我按照一系列步骤完成了,然后我们应该使用微分算子来解决边值问题:
-y'' + 2y' - y = x, y(0) = y(1) =0
我的代码如下,它被用来计算这个(一阶和二阶导数)
h = 2;
x = 2:h:50;
y = x.^2 ;
n=length(x);
uppershift = 1;
U = diag(ones(n-abs(uppershift),1),uppershift);
lowershift = -1;
L= diag(ones(n-abs(lowershift),1),lowershift);
% the code above creates the upper and lower shift matrix
D = ((U-L))/(2*h); %first differential operator
D2 = (full (gallery('tridiag',n)))/ -(h^2); %second differential operator
d1= D*y.'
d2= ((D2)*y.')
然后我把它贴在这里并得到一个鼓励使用身份矩阵的回复后将其更改为这个,但是我似乎仍然无处可去。
h = 2;
n=10;
uppershift = 1;
U = diag(ones(n-abs(uppershift),1),uppershift);
lowershift = -1;
L= diag(ones(n-abs(lowershift),1),lowershift);
D = ((U-L))/(2*h); %first differential operator
D2 = (full (gallery('tridiag',n)))/ -(h^2); %second differential operator
I= eye(n);
eqn=(-D2 + 2*D - I)*y == x
solve(eqn,y)
我不确定如何进行此操作,例如我应该定义 y 和 x,或者究竟是什么?我一无所知!