数值分析matlab编程,数值分析Matlab作业

1.对方程f(x)=0,先用二分法得到一个较好的初始解,再用牛顿迭代法求一个精度较高的解。

一、Matlab编程

1.先用二分法得到较好初始解

syms x;

fun=input('(输入函数形式)fx=');

a=input('(输入二分法下限)a=');

b=input('(输入二分法上限)b=');

d=input('输入误差限d=')%二分法求根

%f=inline(x^2-4*x+4);

%修改需要求解的inline函数的函数体

f=inline(fun);%修改需要求解的inline函数的函数体

e=b-a; k=0 ;

while e>d

c=(a+b)/2;

if f(a)*f(c)<0

b=c;

elseif f(a)*f(c)>0

a=c;

else

a=c;b=c

end

e=e/2; k=k+1;

end

x=(a+b)/2;

x%x为答案

k%k为次数

2.初始解作为初值,利用牛顿迭代法求精度较高的解

function [x,k]=Newtondd(f,x0,e)

%%牛顿迭代法,求f(x)=0在某个范围内的根。

%%f为f(x),x0为迭代初值(选用上述初始解),e为迭代精度,k为迭代次数

x_a=x0;

x_b=x_a-subs(f,x_a)/subs(diff(f),x_a);

k=1;

while abs(x_a-x_b)>e,

k=k+1;

x_a=x_b;

x_b=x_a-subs(f,x_a)/subs(diff(f),x_a);

end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值