MATLAB用SD算法算函数最小值,MATLAB数学实验 - 斐波那契(Fibonacci)方法计算一元函数最小值...

Matlab数学实验 - 斐波那契(Fibonacci)方法计算一元函数最小值

一、斐波那契(Fibonacci)方法简介

斐波那契(Fibonacci)方法基于斐波那契(Fibonacci)数列,关于fei数斐波那契以百度,在这就不说了。

斐波那契方法,是一种计算最值的方法,其基本思想类似二分法,不断缩小区间,从而实现计算最小值。

其缺点也是显而易见的,类似于二分法,只能求得局部的极值。是一种较为简单的计算方法。

二、算法实现步骤

(后续补上)

三、算法代码

斐波那契方法的代码如下:

function anwser=method_fibonacci(a,b,e,formula)

%% 斐波那契方法计算最小值(说明与示例)

% a: 区间左端点

% b: 区间右端点

% e: 精确度(最终区间与初始区间的比值,小于1)

% formula: 对应的公式,格式为文本格式,具体参见例子

%

% 例1:

% method_fibonacci(-1,3,0.32,'x^2-x+2');

%

% 最小值横坐标为:

% 0.5385

%

% 最小值解为:

% 1.7515

%

%

% 例2:

% method_fibonacci(-1,3,0.01,'x^2-x+2');

% 最小值横坐标为:

% 0.5016

%

% 最小值解为:

% 1.7500

%% Step1 初始化

c=(b-a)/e;

n=1;

f=formula;

while fibonacci(n)=F2

a=x1;

x1=x2;

F1=F2;

x2=a+fibonacci(n-k-1)/fibonacci(n-k)*(b-a);

F2=eval(f2);

end

end

%% 精确值判断

if F1=F2

a=x1;

end

x1=x2-0.1*(b-a);

F1=eval(f1);

if F1F2

anwser=0.5*(x1+b);

end

disp('最小值横坐标为:')

disp(anwser)

disp('最小值解为:')

disp(eval(fa))

% X1

% X2

% F1

% F2

end

斐波那契数列函数代码如下:

function f=fibonacci(n)

% 用于产生斐波那契数

n=n+1;

if n>=0

a=(1+sqrt(5))/2;

b=(1-sqrt(5))/2;

c=a.^n-b.^n;

f=c/sqrt(5);

else

error('输入有误!请输入正整数(列)');

end

end

四、样例

ca701b7672b047242e94adb97262e4fc.png

7b4e7cd18d64a2527295b18904f3606a.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值