Matlab方程與方程組求解之二分法求解
控制代碼
圖形控制代碼和圖形之間是一種一一對應關係,簡單的說圖形控制代碼就是指向了這個圖形的一個變數,通過它可以設定該圖形的各種屬性。
控制代碼是matlab語言獨有的引數,相當於C語言的指標。控制代碼分為多種,如函式柄,物件柄,圖形柄等。圖形控制代碼就指一個圖形,在生成圖形時同時得到一代號,如語句 h=plot(x,y),h 就是一個圖形控制代碼,在後來的某一個地方就可用h代表這個圖,如 set(h,....),對這個圖形進行再設定。
函式控制代碼是MATLAB資料型別,包含用於引用函式資訊;優點:簡化函式實現,提高重複效能;用@來建立函式控制代碼;
比如定義f(x)=x^2,可以寫為:
其中@(x)(x.^2)就是匿名函式,第一個括號裡面是自變數,第二個括號裡面是表示式,@是函式指標
[email protected](x)(x.^2)表示將匿名函式@(x)(x.^2)賦值給f,於是f就表示該函式。
於是f(2)=2.^2=4;f(1:3)=[1:3].^2=[1 4 9]等等
定義匿名函式時也可以呼叫別的匿名函式,比如
[email protected](x,y)(x.^2+y.^2) 定義了函式x^2+y^2
[email protected](x)(f1(x(1),x(2))) 定義了函式x(1)^2+x(2)^2
使用匿名函式時一定要注意函式本身的引數形式,如:
f1(2,3):表示2^2+3^2
f2(3)=3:表示3^2+4
f3([1,2]):表示1^2+2^2
說白了就是函式指標
例子:
求方程:x^3+x^2-1=0在區間[0 1]的根?
主函式:
[email protected](x) x^3+x^2-1;
x=erfen(h,[0 1])
h(x)
子函式(erfen.m):
function X=erfen(h,x)
a=x(1);
b=x(2);
fa=h(a);
fb=h(b);
while 1 %一直迴圈
fc=h(a/2+b/2);
if abs(fc)<1e-5
X=(a/2+b/2);
return;
else
if fa*fc<0
b= a/2+b/2;
else
a= a/2+b/2;
end
end
end
注意:
MATLAB中return;break;contiue;keyboad的使用規則是:
break就是直接跳出該層迴圈;continue就是直接進入該層迴圈的下一次迭代;return就是直接退出程式或函式返回了;return>break>continue;