Edward asked in 科學其他:科學 · 1 decade ago

matlab(數值分析),有誰會寫的不太會

利用二分法決定需要的阻力係數,使得質量80kg的高空彈跳者在自由落下4s之後速度為36m/s。

注意,重力加速度為9.8m/s2。起始的猜測是x1=0.1及xu=0.2,以及迭代到近代相對誤差小於2%。

5.6 (a)以圖形法求解f(x)=-12-21x+18x2-2.75x3的根,另外,以外列方法決定函數的函數的第一個根

(b)二分法以及(c)試位法。對於(b)以及(c)起始猜測為x1=-1以及xu=0並且停止準則為1%。

6.4求解f(x)=7sin(x)e-x-1最低的正根:

(a)圖形法。

(b)使用牛頓拉夫生法(三次迭代,xi=0.3)

(c)使用正割法(五次迭代,xi=1=0.4 以及xi=0.3).

(d)使用修改的正割法(五次迭代,xi=0.4 以及δ=0.01)

2 Answers

Rating
  • 老師
    Lv 7
    1 decade ago
    Favorite Answer

    利用解析解來預測自由落下的速度為v(t)=sqrt(g*m/c)*tanh(sqrt(g*c/m)*t)請參考書名:"使用MATLAB應用數值方法",作者: Steven C. Chapra,譯者 :王晉中,滄海書局上式兩邊減去 v(t) 得f(a)=sqrt(g*m/c)*tanh(sqrt(g*c/m)*t)-v(t)其中 m 為質量 c 為阻力係數 g 為重力加速度  t 為時間 v 為速度利用二分法解上式即可>> f=inline('sqrt(9.8*80/c).*tanh(sqrt(9.8*c/80)*4)-36')f =     Inline function:     f(c) = sqrt(9.8*80/c).*tanh(sqrt(9.8*c/80)*4)-36>> xb=bisection(f,0.1,0.2,2)xb =    0.1391二分法程式請參考書名:"使用MATLAB應用數值方法",作者: Steven C. Chapra,譯者 :王晉中,滄海書局 , p.5-16或copy下方程式function root = bisection(func,xl,xu,es,maxit)% root = bisection(func,xl,xu,es,maxit):%   uses bisection method to find the root of a function% input:%   func = name of function %   xl, xu = lower and upper guesses%   es = (optional) stopping criterion (%)%   maxit = (optional) maximum allowable iterations% output:%   root = real rootif func(xl)*func(xu)>0  %if guesses do not bracket a sign change  disp('no bracket')    %display an error message  return                %and terminate end% if necessary, assign default valuesif nargin<5, maxit=50; end     %if maxit blank set to 50if nargin<4, es=0.001; end     %if es blank set to 0.001% bisectioniter = 0;xr = xl;while (1)  xrold = xr;  xr = (xl + xu)/2;  iter = iter + 1;  if xr ~= 0, ea = abs((xr - xrold)/xr) * 100; end  test = func(xl)*func(xr);  if test < 0    xu = xr;  elseif test > 0    xl = xr;  else    ea = 0;  end  if ea <= es | iter >= maxit, break, endendroot = xr;     

    2007-03-30 09:57:17 補充:

    你的bisection程式是不是跟上面一樣

    錯誤訊息是說

    你給了太多的輸入值

    Source(s): 其他的因為字數限制無法回答
  • 1 decade ago

    老師:

    不好意思,我輸入

    xb=bisection(f,0.1,0.2,2)之後按Enter,卻會出現以下訊息,請問是為什麼?可以請教您嗎?

    Error using ==> bisection

    Too many input arguments.

Still have questions? Get your answers by asking now.