1. 程式人生 > >Matlab方程與方程組求解之二分法求解

Matlab方程與方程組求解之二分法求解

控制代碼

      圖形控制代碼和圖形之間是一種一一對應關係,簡單的說圖形控制代碼就是指向了這個圖形的一個變數,通過它可以設定該圖形的各種屬性。

     控制代碼是matlab語言獨有的引數,相當於C語言的指標。控制代碼分為多種,如函式柄,物件柄,圖形柄等。圖形控制代碼就指一個圖形,在生成圖形時同時得到一代號,如語句 h=plot(x,y),h 就是一個圖形控制代碼,在後來的某一個地方就可用h代表這個圖,如 set(h,....),對這個圖形進行再設定。

       函式控制代碼是MATLAB資料型別,包含用於引用函式資訊;優點:簡化函式實現,提高重複效能;用@來建立函式控制代碼;

       比如定義f(x)=x^2,可以寫為:

[email protected](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]

(t)(f1(t,2))                             定義了函式t^2+4

[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;