二階微分方程是應該有兩個邊界條件,但是一個邊界條件在左邊一個在右邊怎麼用龍格庫塔算我就不知道了。然鵝我可以給你介紹一個新朋友:有限差分。演算法是把x=0~1等分成n+1個點,每兩個點的距離 。第一個點theta你知道等於0,需要求第2個到n+1一共n個點的theta。有限差分裡邊, 所以你列n個方程解一下就好了。最右邊的邊界條件是
n=100;
dx=1/n;
m=4;
matrixA=zeros(n+1);
for i=2:n+1
if i==2
matrixA(i,1)=1/dx^2;
else
matrixA(i,i-1)=1/dx^2;
end
matrixA(i,i)=-1/dx^2-m^2;
if i~=n+1
matrixA(i,[i+1 i])=matrixA(i,[i+1 i])+[1 -1]/dx^2;
theta=ones(n+1,1);
theta(2:n+1)=-matrixA(2:end,2:end)\matrixA(2:end,1);
plot((0:n)/n,theta)
二階微分方程是應該有兩個邊界條件,但是一個邊界條件在左邊一個在右邊怎麼用龍格庫塔算我就不知道了。然鵝我可以給你介紹一個新朋友:有限差分。演算法是把x=0~1等分成n+1個點,每兩個點的距離 。第一個點theta你知道等於0,需要求第2個到n+1一共n個點的theta。有限差分裡邊, 所以你列n個方程解一下就好了。最右邊的邊界條件是
n=100;
dx=1/n;
m=4;
matrixA=zeros(n+1);
for i=2:n+1
if i==2
matrixA(i,1)=1/dx^2;
else
matrixA(i,i-1)=1/dx^2;
end
matrixA(i,i)=-1/dx^2-m^2;
if i~=n+1
matrixA(i,[i+1 i])=matrixA(i,[i+1 i])+[1 -1]/dx^2;
end
end
theta=ones(n+1,1);
theta(2:n+1)=-matrixA(2:end,2:end)\matrixA(2:end,1);
plot((0:n)/n,theta)