病态问题-数据结构


1.1病态问题


1.1算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题是指问题本身对扰动敏感,反之属于好问题。本实验通过对一个高次多项式方程的求解,初步认识病态问题。

**1.1实验内容

**考虑一个高次的代数多项式
(E.1.1)
显然该多项式的全部根为1,2,…,20,共计20个,且每个根都是单重的(也称为简单的)。现考虑该多项式的一个扰动, (E.1.2)
其中,ε是一个非常小的数。这相当于是对方程(E.1.1)中的系数作一个小的扰动。比较方程(E.1.1)和方程(E.1.2)根的差别,从而分析方程(E.1.1)的解对扰动的敏感性。

实验要求:

1.选择充分小的ε反复进行上述实验, 记录结果的变化并进行分析.
2.将扰动项改成或者其他, 实验中又会有怎么样的现象出现?

1.1程序代码:****

%数值实验1.1病态问题
%输入:[0,20]之间的的扰动项及小的扰动常数
%输出:加扰动后得到的全部根
result = inputdlg({'请选择被扰动项:[0,20]之间的整数:'},'charpt1_1',1,{'19'});%inputdlg函数:创建收集用户输入的对话框
Numb = str2num(char(result));   %定义一个numb变量//str2num将字符数组或字符串转换为数值数组
if((Numb > 20) || (Numb < 0))     %if判断语句
    errordlg('请选择正确的扰动项:[0,20]之间的整数:');   %errordlg函数:创建错误对话框
    return;   %返回上一步
end     %if语句结束
result = inputdlg({'请输入(0,1)之间的扰动常数:'},'charpt1_1',1,{'0.00001'});
ess = str2num(char(result)); %#ok<*ST2NM>
ve = zeros(1,21);    %zeros函数:创建全零数组
ve(21 - Numb) = ess;
root = roots(poly(1:20)+ve);   %多项式的根,求根公式
plot(root,'*');     %plot二维线图,制作出根的函数图像
disp(['对第',num2str(Numb),'加扰动',num2str(ess),',得到的全部根为:']);
disp(num2str(root));    %disp函数:显示变量的值

实验数据及图像:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值