matlab-对分法,牛顿法,黄金分割法,抛物线插值法

matlab代码:

%  对分法
e = 0.1;
a = -3;
b = 5;
while abs(a-b)>=e
    c=(a+b)/2;
    if (2*c-3<0)
        a=c;
        if(abs(a-b)<e)
            t=(a+b)/2;
            break;
        end
    elseif (2*c-3==0)
        t=c;
        break;
    else
        b=c;
        if(abs(a-b)<e)
            t=(a+b)/2;
            break;
        end
    end   
end
t
t*t-3*t

结果:

第一题:

第一题matlab代码:

%加步搜索法
t0 = 0;
h0 = 1;
a = 2;
f0 = t0*t0*t0-2*t0+1;
k = 0;
while 1
    t = t0+h0;
    f = t*t*t-2*t+1;
    if f<f0
        h0 = a*h0;
        t0 = t;
        f0 = f;
        k = k+1;
    else
        if k ==0
            h0 = -h0;
            t0 = t;
        else
            break;
        end
    end
end
A = min(t,t0)
B = max(t,t0)

第一题结果:

把第一题结果带入第三题,得到上下限分别是1和3

matlab代码:

%牛顿法
e = 0.01;
a = 1;
b = 3;
t0 = 1;
while 1
    t = t0 -(3*t0*t0-2)/(6*t0);
    if abs(t-t0) >= e
        t0 = t;
    else
        break;
    end
end
t
t*t*t-2*t+1

结果:

 

matlab代码:

a = -3;
b = 5;
beta = 0.382;
e = 0.001;
while 1
    t2 = a + beta *(b-a);
    f2 = t2*t2+2*t2;
    t1 = a+b-t2;
    f1 = t1*t1+2*t1;
    if abs(t1-t2) < e
        t = (t1+t2)/2;
        break
    elseif f1<f2
        a = t2;
        t2 = t1;
        f2 = f1;
    else
        b = t1;
        t1 = t2;
        f1 = f2;
        t2 = a+beta*(b-a);
        f2 = t2*t2+2*t2;
    end
end
t
t*t+2*t

结果:

 matlab代码:

t0 = 1;
t1 = 0;
t2 = 2;
e = 0.001;
while 1
    tt = 0.5 * ((t0*t0-t2*t2)*(8*t1*t1*t1-2*t1*t1-7*t1+3)+...
        (t2*t2-t1*t1)*(8*t0*t0*t0-2*t0*t0-7*t0+3)+...
        (t1*t1-t0*t0)*(8*t2*t2*t2-2*t2*t2-7*t2+3))/...
        ((t0-t2)*(8*t1*t1*t1-2*t1*t1-7*t1+3)+...
        (t2-t1)*(8*t0*t0*t0-2*t0*t0-7*t0+3)+...
        (t1-t0)*(8*t2*t2*t2-2*t2*t2-7*t2+3)); 
    if abs(tt - t0) < e
        t = tt;
        break;
    else
        if tt > t0
            if (8*tt*tt*tt-2*tt*tt-7*tt+3) <= (8*t0*t0*t0-2*t0*t0-7*t0+3)
                t2 = t0;
                t0 = tt;
            else
                t1 = tt;
            end
        else
            if (8*tt*tt*tt-2*tt*tt-7*tt+3) <= (8*t0*t0*t0-2*t0*t0-7*t0+3)
                t1 = t0;
                t0 = tt;
            else
                t2 = tt;
            end
        end
    end
end
t
8*t*t*t-2*t*t-7*t+3

结果:

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值