专业课-计算方法(实验)

写在前面
昨天晚上粘贴代码的时候手机卡了,今天试了一下又卡了,手机体验感不太好。

实验一:二分法求f(x)根的近似值

过程:
1.f(x)在[a,b]内连续,若f(a)*f(b)<0,则f(x)存在根
2.令x=(a+b)/2,判断f(a)*f(x) 与 f(x)*f(b) 哪一个为0,确定下一个二分区间。若都为0,说明两个区间都有根。

思想:
二分是将区间分成两部分,判断根处于哪一区间,不断进行二分,当得到的x为根,或者达到需要的精度,停止二分。
Matlab实现
代码1:
(发现CSDN代码块选项中没有Matlab选项,代码不长所以贴图片吧)
二分函数:
二分函数
命令框指令:
fname = inline (‘x^2-1’);
x=agui_bisect(fname,0,2,1e-3)
注:
代码1只得到最后结果,没有记录中间迭代过程的数值。

代码2:
二分函数用矩阵记录迭代过程数值方法

命令框指令:
fname =inline(‘x^2-1’);
x=agui_disect2(fname,0,2,1e-3)
注:
代码2使用x1进行计算,将x作为矩阵用于记录迭代过程中的数值。

代码3

实验二:牛顿迭代法求根的近似值

1.初值选取(x0的选取):f(x0)•f’’(x0)>0
2.迭代公式:xk+1=xk-f(x)/f’(x)
Matlab 实现:
代码1:
牛顿迭代,不判断初值

注:
代码1未判断初值选取是否合适

命令框指令:
fname = inline (‘x^2-1’);
dfname=inline (‘2x’);
x=agui_newton(fname,dfname,0,1e-3);

代码2:
牛顿迭代,判断初值

命令框指令:
fname=(‘x^2-1‘);
x=agui_newton2(fname,1e-3)

注:
代码2对初值的选取是否合适进行了判断,并且不需要人工计算一阶与二阶导数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值