欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【MATLAB】计算黄金分割比的N种方法

程序员文章站 2022-05-11 23:00:34
...

写作时间:2020-07-16
目录:
1.推荐一本书
2.开始第一课

3.总结一下

正文
1.推荐一本书

推荐一本书,《Numerical Computing with MATLAB》。
这本书是MATLAB 创始人 Clever B.Moler 编写。
该书强调 数学理论 基础,MATLAB作为工具,两者结合。
MATLAB官网上有该书英文版pdf、代码、小工具。

声明:
以下绝大部分内容来源于该书,只选取部分内容,整理学习,文章结构安排并非按照原文。
翻译参考了张老师的中译本内容。
强烈推荐看原著或者中译本。

2.lesson1-黄金分割比
2.1 黄金分割比的来历
【MATLAB】计算黄金分割比的N种方法
大的矩形和小的矩形相似。
当然还有另一种表示方式:一维线段的表示方式。

即就是 :
1/x=(x-1)/1;

x^2-x-1=0
求解:
p(x)=x^2-x-1

2.2 使用MATLAB计算黄金分割比的N种方法
方法1

%方法1:
p=[1,-1,-1];
% 代表 p(x)=x^2-x-1
x=roots(p)
%结果如下---------------------------
% x =
% 
%    -0.6180
%     1.6180

方法2

%方法2:
syms x
r=solve(1/x == x-1);
%结果如下---------------------------
% r =
%  1/2 - 5^(1/2)/2
%  5^(1/2)/2 + 1/2

方法3

%方法3:
syms x
r=solve(1/x == x-1);
pretty(r)
%结果如下---------------------------
% / 1   sqrt(5) \
% | - - ------- |
% | 2      2    |
% |             |
% | sqrt(5)   1 |
% | ------- + - |
% \    2      2 /

更高精度显示

phi=r(1);
vpa(phi,50)
%结果如下---------------------------
%ans =
 
%-0.61803398874989484820458683436563811772030917980576
 
double(phi)
%结果如下---------------------------
%ans =
%ans =

%   -0.6180

方法4

f=@ (x)1./x-(x-1);%利用匿名函数,f是函数句柄
f
fplot(f,[0.1,4]);
phi=fzero(f,1);
hold on;
grid on;
plot(phi,0,'o');

运行结果:
【MATLAB】计算黄金分割比的N种方法
绘制黄金分割矩形

phi =(1+sqrt(5))/2;
%绘制矩形依次的点x(k),y(k),注意是5个点,要回到第一个点
x=[0 phi phi 0 0];
y=[0 0 1 1 0];
%依次的点u(k),v(k)
u=[1 1];
v=[0 1];
plot(x,y,'b.-',u,v,'b.--');
text(phi/2,1.05,'\phi');
text((1+phi)/2,-0.05,'\phi-1');
text(-0.05,0.5,'1');
text(0.5,-0.05,'1');
axis equal;
axis off;
set(gcf,'color','white');

运行结果:
【MATLAB】计算黄金分割比的N种方法
方法5:
利用迭代

3.总结一下

以黄金分割为例子,学习使用MATLAB计算数值的几种方法。


THE END~

相关标签: MATLAB(free)