⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 golden.txt

📁 机械优化设计及数值计算中常用的黄金分割法源程序 为M函数文件 需要调用该函数 方可运行
💻 TXT
字号:
程序:定义函数


%黄金分割法
function f=gnew(f,a,b,epsilon);%定义函数和精度
la=0.618;
x1=b-la*(b-a);f1=f(x1);%左试点
x2=a+la*(b-a);f2=f(x2);%右试点
for k=1:(log(epsilon/(b-a))/log(0.618)+2)
    fprintf(1,'   迭代次数 k= %3.0f\n',k)
    if f1<=f2
        b=x2;x2=x1;f2=f1;
        x1=b-la*(b-a);f1=f(x1);
    else
        a=x1;x1=x2;f1=f2;
        x2=a+la*(b-a);f2=f(x2);
    end
    x=0.5*(b+a);
    fprintf(1,'   迭代区间-左端 a=% 3.4f\n',a)
    fprintf(1,'   试点1坐标值    x1=% 3.4f\n',x1)
    fprintf(1,'   函数值         f1 =% 3.4f\n',f1)
    fprintf(1,'   迭代区间-右端 b=% 3.4f\n',b)
    fprintf(1,'   试点2坐标值    x2=% 3.4f\n',x2)
    fprintf(1,'   函数值         f2=% 3.4f\n',f2)
   fprintf(1,'   区间中点        x=% 3.4f\n',x)
   disp ' '
end



调用函数,输入条件,运行结果;>> format long;gnew(inline('x^2+2*x'),-3,5,0.001),format short;
   迭代次数 k=   1
   迭代区间-左端 a=-3.0000
   试点1坐标值    x1=-1.1114
   函数值         f1 =-0.9876
   迭代区间-右端 b= 1.9440
   试点2坐标值    x2= 0.0560
   函数值         f2= 0.1151
   区间中点        x=-0.5280
 
   迭代次数 k=   2
   迭代区间-左端 a=-3.0000
   试点1坐标值    x1=-1.8326
   函数值         f1 =-0.3068
   迭代区间-右端 b= 0.0560
   试点2坐标值    x2=-1.1114
   函数值         f2=-0.9876
   区间中点        x=-1.4720
 
   迭代次数 k=   3
   迭代区间-左端 a=-1.8326
   试点1坐标值    x1=-1.1114
   函数值         f1 =-0.9876
   迭代区间-右端 b= 0.0560
   试点2坐标值    x2=-0.6654
   函数值         f2=-0.8881
   区间中点        x=-0.8883
 
   迭代次数 k=   4
   迭代区间-左端 a=-1.8326
   试点1坐标值    x1=-1.3868
   函数值         f1 =-0.8504
   迭代区间-右端 b=-0.6654
   试点2坐标值    x2=-1.1114
   函数值         f2=-0.9876
   区间中点        x=-1.2490
 
   迭代次数 k=   5
   迭代区间-左端 a=-1.3868
   试点1坐标值    x1=-1.1114
   函数值         f1 =-0.9876
   迭代区间-右端 b=-0.6654
   试点2坐标值    x2=-0.9410
   函数值         f2=-0.9965
   区间中点        x=-1.0261
 
   迭代次数 k=   6
   迭代区间-左端 a=-1.1114
   试点1坐标值    x1=-0.9410
   函数值         f1 =-0.9965
   迭代区间-右端 b=-0.6654
   试点2坐标值    x2=-0.8358
   函数值         f2=-0.9730
   区间中点        x=-0.8884
 
   迭代次数 k=   7
   迭代区间-左端 a=-1.1114
   试点1坐标值    x1=-1.0061
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.8358
   试点2坐标值    x2=-0.9410
   函数值         f2=-0.9965
   区间中点        x=-0.9736
 
   迭代次数 k=   8
   迭代区间-左端 a=-1.1114
   试点1坐标值    x1=-1.0463
   函数值         f1 =-0.9979
   迭代区间-右端 b=-0.9410
   试点2坐标值    x2=-1.0061
   函数值         f2=-1.0000
   区间中点        x=-1.0262
 
   迭代次数 k=   9
   迭代区间-左端 a=-1.0463
   试点1坐标值    x1=-1.0061
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9410
   试点2坐标值    x2=-0.9812
   函数值         f2=-0.9996
   区间中点        x=-0.9936
 
   迭代次数 k=  10
   迭代区间-左端 a=-1.0463
   试点1坐标值    x1=-1.0214
   函数值         f1 =-0.9995
   迭代区间-右端 b=-0.9812
   试点2坐标值    x2=-1.0061
   函数值         f2=-1.0000
   区间中点        x=-1.0138
 
   迭代次数 k=  11
   迭代区间-左端 a=-1.0214
   试点1坐标值    x1=-1.0061
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9812
   试点2坐标值    x2=-0.9966
   函数值         f2=-1.0000
   区间中点        x=-1.0013
 
   迭代次数 k=  12
   迭代区间-左端 a=-1.0061
   试点1坐标值    x1=-0.9966
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9812
   试点2坐标值    x2=-0.9907
   函数值         f2=-0.9999
   区间中点        x=-0.9937
 
   迭代次数 k=  13
   迭代区间-左端 a=-1.0061
   试点1坐标值    x1=-1.0002
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9907
   试点2坐标值    x2=-0.9966
   函数值         f2=-1.0000
   区间中点        x=-0.9984
 
   迭代次数 k=  14
   迭代区间-左端 a=-1.0061
   试点1坐标值    x1=-1.0025
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9966
   试点2坐标值    x2=-1.0002
   函数值         f2=-1.0000
   区间中点        x=-1.0013
 
   迭代次数 k=  15
   迭代区间-左端 a=-1.0025
   试点1坐标值    x1=-1.0002
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9966
   试点2坐标值    x2=-0.9988
   函数值         f2=-1.0000
   区间中点        x=-0.9995
 
   迭代次数 k=  16
   迭代区间-左端 a=-1.0025
   试点1坐标值    x1=-1.0011
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9988
   试点2坐标值    x2=-1.0002
   函数值         f2=-1.0000
   区间中点        x=-1.0007
 
   迭代次数 k=  17
   迭代区间-左端 a=-1.0011
   试点1坐标值    x1=-1.0002
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9988
   试点2坐标值    x2=-0.9997
   函数值         f2=-1.0000
   区间中点        x=-1.0000
 
   迭代次数 k=  18
   迭代区间-左端 a=-1.0011
   试点1坐标值    x1=-1.0006
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9997
   试点2坐标值    x2=-1.0002
   函数值         f2=-1.0000
   区间中点        x=-1.0004
 
   迭代次数 k=  19
   迭代区间-左端 a=-1.0006
   试点1坐标值    x1=-1.0002
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9997
   试点2坐标值    x2=-1.0000
   函数值         f2=-1.0000
   区间中点        x=-1.0001
 
   迭代次数 k=  20
   迭代区间-左端 a=-1.0002
   试点1坐标值    x1=-1.0000
   函数值         f1 =-1.0000
   迭代区间-右端 b=-0.9997
   试点2坐标值    x2=-0.9999
   函数值         f2=-1.0000
   区间中点        x=-1.0000
 

ans =

     Inline function:
     ans(x) = x^2+2*x

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -