Numerical analysis 数值分析编程问题 Matlab 实现--二分法计算希尔伯特矩阵问题

希尔伯特Hilbert矩阵是一个n×n矩阵,其对应的第ij个元素的值是1/(i+j-1).令A表示5×5希尔伯特矩阵.它最大的特征值是1.567.使用二分法确定如何改变左上元素A11,使得A的最大特征值等于π.确定A11,精确到小数点后6位.可以使用MATLAB命令hilb、pi、eig和max简化计算任务.

function a11 = Hilbert(n,a,b,tol)
%输入 a,b,为二分法区间上下限;
%输出 a11为希尔伯特矩阵第一行第一列数据。
k=hilb(n);
%生成n阶希尔伯特矩阵。
while(b-a)/2>tol
    c=(a+b)/2;
    k(1,1)=c;fc=max(eig(k))-pi;
    if fc==0
        break
    end
    k(1,1)=a;fa=max(eig(k))-pi;
    if fa*fc<0
        b=c;
    else
        a=c;
    end
end 
a11=(a+b)/2;
end

其中可取n=5,a=0,b=5,tol=0.5*10^-6(准确度控制在6位小数)

结果如下:

 a11=Hilbert(5,0,5,0.5*10^-6)

a11 =

   2.948010861873627

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值