牛顿法和弦切法原理及使用(代码环境:matlab)

题目:

已知一个具有半球形圆顶、10米高的直圆柱形粮仓的体积是400立方米。

  1. 用牛顿法求粮仓的底半径,精确到4位有效小数。
  2. 用弦截法求粮仓的底半径,精确到4位有效小数。‘

牛顿法:

  1. 牛顿法原理:
    牛顿法和弦切法原理及使用(代码环境:matlab)_第1张图片
  2. matlab代码如下:
x0=input('choose initial value:');
i=1;
f0=fx(x0);
f_0=f_x(x0);

x1=x0-f0/f_0;
f1=fx(x1);
f_1=f_x(x1);
fprintf('The %d times radius is %12.5f\n',i,x1);
%设s为δ;e为ε;C=1  误差计算
C=1;
if (abs(x1)e && abs(f1)>e)
    x0=x1;f0=f1;f_0=f_1;
    
    x1=x0-f0/f_0;
    f1=fx(x1);
    f_1=f_x(x1);
    i=i+1;
    fprintf('The %d times radius is %12.5f\n',i,x1);
    if (abs(x1)

运行结果:
牛顿法和弦切法原理及使用(代码环境:matlab)_第2张图片

弦切法:

  1. 弦切法原理:
    牛顿法和弦切法原理及使用(代码环境:matlab)_第3张图片
    牛顿法和弦切法原理及使用(代码环境:matlab)_第4张图片
  2. matlab代码如下:
%设s为δ,e为ε,C=1  误差计算
x0=input('choose x0 initial value:');
x1=input('choose x1 initial value:');
N=input('MAx times:');
e=0.5*10^(-3);
k=0;
f0=fx(x0);
f1=fx(x1);

x2=x1-f1*(x1-x0)/(f1-f0);
k=k+1;
f2=fx(x2);
fprintf('The %d times radius is %12.5f\n',k,x2);

while (abs(x2-x1)>e && abs(f2)>e)
    if (k==N)
        fprintf('error');
    end
    x0=x1;x1=x2;f0=f1;f1=f2;
    
    x2=x1-f1*(x1-x0)/(f1-f0);
    k=k+1;
    f2=fx(x2);
    fprintf('The %d times radius is %12.5f\n',k,x2);
end
root=x2;
fprintf('The final radius is %12.4f\n', root);

运行结果:
牛顿法和弦切法原理及使用(代码环境:matlab)_第5张图片

你可能感兴趣的:(牛顿法和弦切法原理及使用(代码环境:matlab))