MATLAB與數學實驗 課後第二章部分練習題

1.

function y=home2_1(m,n,er)
syms x xk
ff=x^5+sin(x)-1;
k=0;
a=m;
b=n;
while b-a>er
    xk=(a+b)/2;
    fa=subs(ff,x,a);
    fx=subs(ff,x,xk);
    k=k+1;
    if fx==0
        y(k)=xk;
        break;
    elseif fx*fa<0
        b=xk;
    else
        a=xk;
    end
    y(k)=xk;
end
plot(y,'.-');
grid on

ab=home2_1(0,1,1e-5)

ab =

  1 至 11 列

    0.5000    0.7500    0.8750    0.8125    0.7813    0.7969    0.7891    0.7852    0.7832    0.7822    0.7827

  12 至 17 列

    0.7830    0.7831    0.7831    0.7831    0.7831    0.7831

>> vpa(ab,8)
 
ans =
 
[ 0.5, 0.75, 0.875, 0.8125, 0.78125, 0.796875, 0.7890625, 0.78515625, 0.78320312, 0.78222656, 0.78271484, 0.78295898, 0.78308105, 0.78314209, 0.78311157, 0.78309631, 0.78310394]

 

 

3.

function x=home2_3(xx,n)
x=zeros(1,n+1);
x(1)=xx;
for i=1:n
    x(i+1)=x(i)-(x(i)^3-2*x(i)^2-5*x(i)+12)/(3*x(i)^2-4*x(i)-5);
end

>> format long
>> x=home2_3(1,10)

x =

  1 至 5 列

   1.000000000000000   2.000000000000000   4.000000000000000   3.111111111111111   2.490119512483730

  6 至 10 列

   1.779311405698884   2.697367296425390   2.103276523844542  15.788962803889621  10.830254403292455

  11 列

   7.557158585074190

4.

function [y,k]=home2_4(er,n,xa,xb)
syms x xk
x0=xa;
x1=xb;
ff=exp(x)-2*x^2-1;
y(1)=xa;
y(2)=xb;
k=2;
while abs(x1-x0)>er&k<n
    f1=subs(ff,x,x1);
    f0=subs(ff,x,x0);
    x2=x1-f1*(x1-x0)/(f1-x0);
    k=k+1;
    y(k)=x2;
    x0=x1;
    x1=x2;
end

>> [r,n]=home2_4(1e-5,100,1000,0)

r =

        1000           0           0


n =

     3

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章