我寫關於解決在使用拍攝二分法下邊界值問題的程序:MATLAB情節載體必須是相同的長度
y''-y+x=0, y(0)=y(1)=0.
我第一次將它轉換爲一階微分方程的系統,設置
y'=z
然後我讓dydt代表矢量(Y 'Z'),並拿出腳本文件:
function dydt=shoot(t,y)
dydt=[y(2);y(1)-t]
end
有了這個,然後我想出了下面的代碼:
clear
clc
a=0;
b=1;
alpha=0;
beta=0;
s(1)=(beta-alpha)/(b-a);
s(2)=-1
[G,Y]=ode113('shoot',[a b],[alpha;s(1)]);
[G,Z]=ode113('shoot',[a b],[alpha;s(2)])
hold
tol=1e-4
u=s(1);
v=s(2);
while abs(u-v)>tol;
s(3)=(u+v)/2;
[G,W]=ode113('shoot',[a b],[alpha;s(3)]);
if W(end,1)>0
u=s(3);
else
v=s(3);
end
end
[G,W]=ode113('shoot',[a b],[alpha;s(3)])
plot(G,Y(:,1),'-o', G,Z(:,1),'-o',G,W(:,1),'-o')
然後我運行程序,MATLAB說我使用的是情節的說法不正確,在情節的載體必須是相同的長度。我不知道如何解決這個問題。任何幫助表示讚賞。
'G'的大小和'Y(:,1)'的大小是多少?他們需要是相同的大小。 – Suever
如果您要使用割線方法(或包含方括號的變體的regula falsi方法),則您的迭代將在一個步驟中終止。問題是線性的,因此第二個邊界值與第一個邊界值線性相關,並且線性函數可以由兩個點確定。 – LutzL
@LutzL我認爲我在兩次槍擊後使用了二分法。你的意思是我的循環在這種情況下一步之後終止? –