matlab直接解超越方程函数,用matlab 解超越方程~

共回答了26个问题采纳率:92.3%

使用二分法 求解上面超越方程

下面是二分法的函数文件,你直接设置输入参数就可以了

function [c,err,yc]=bisect(f,a,b,delta)

%Input - f is the function

% - a and b are the left and right endpoints

% - delta is the tolerance

%Output - c is the zero

% - yc= f(c)

% - err is the error estimate for c

%If f is defined as an M-file function use the @ notation

% call [c,err,yc]=bisect(@f,a,b,delta).

%If f is defined as an anonymous function use the

% call [c,err,yc]=bisect(f,a,b,delta).

% NUMERICAL METHODS:Matlab Programs

% (c) 2004 by John H.Mathews and Kurtis D.Fink

% Complementary Software to accompany the textbook:

% NUMERICAL METHODS:Using Matlab,Fourth Edition

% ISBN:0-13-065248-2

% Prentice-Hall Pub.Inc.

% One Lake Street

% Upper Saddle River,NJ 07458

ya=f(a);

yb=f(b);

if ya*yb > 0,return,end

max1=1+round((log(b-a)-log(delta))/log(2));

for k=1:max1

c=(a+b)/2;

yc=f(c);

if yc==0

a=c;

b=c;

elseif yb*yc>0

b=c;

yb=yc;

else

a=c;

ya=yc;

end

if b-a < delta,break,end

end

c=(a+b)/2;

err=abs(b-a);

yc=f(c);

结果

[answer,error,value]=bisect(@(x)log(x)-cos(x),1,5,1e-8)

answer =

1.303

error =

7.4506e-009

value =

-5.2774e-009

[answer,error,value]=bisect(@(x)log(x)-cos(x+pi/8),1,5,1e-8)

answer =

1.0909

error =

7.4506e-009

value =

-2.4967e-010

[answer,error,value]=bisect(@(x)log(x)-cos(x+pi/4),0,10,1e-8)

answer =

0.89573

error =

9.3132e-009

value =

-5.8866e-009

answer =

0.72301

error =

9.3132e-009

value =

2.5559e-009

1年前

1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值