二分法非线性方程求解

时间:2025-05-03

中南大学matlab程序设计实践全部答案(很多自己搜)标题是第一题题目(只供参考)

1、编程实现以下科学计算算法,并举一例应用之(参考书籍《精通MATLAB科学计算》,王正林等编著,电子工业出版社,2009年) “二分法非线性方程求解”

二分法的具体求解步骤如下。

(1)计算函数f(x)在区间[a,b]中点的函数值f((a+b)/2),并作下面的判断:

f(如果f(a)

a b

2

) 0,转到(2);

a ba b

) 0,令 a ,转到(1); 22a ba b

) 0,则 x 如果 f(a)f(为一个跟。 22a bb 3a

| ( 为预先给定的精度)(2)如果 |a ,则x 为一个根,否24

a b

则令b ,转到(1)。

2

如果f(a)f(

在MATLAB中编程实现的二分法函数为:HalfInterval。 功能:用二分法求函数在某个区间上的一个零点。 调用格式:root=HalfInterval(f,a,b,eps). 其中,f函数名; a为区间左端点; b为区间右端点;

eps为根的精度; root为求出的函数零点。

二分法的MATLAB程序代码如下:

function root=HalfInterval(f,a,b,eps) %二分法求函数f在区间[a,b]上的一个零点 %函数名:f %区间左端点:a %区间右端点:b %根的精度:eps %求出的函数零点:root if(nargin==3) eps=1.0e-4;

中南大学matlab程序设计实践全部答案(很多自己搜)标题是第一题题目(只供参考)

end

f1=subs(sym(f),findsym(sym(f)),a); %两端点的函数值 f2=subs(sym(f),findsym(sym(f)),b); if(f1==0) root=a; end if(f2==0) root=b; end if(f1*f2>0)

disp('两端点函数值乘积大于0!'); return; else

root=FindRoots(f,a,b,eps); %调用求解子程序 end

function r=FindRoots(f,a,b,eps) f_1=subs(sym(f),findsym(sym(f)),a); f_2=subs(sym(f),findsym(sym(f)),b);

mf=subs(sym(f),findsym(sym(f)),(a+b)/2); %中点函数值 if(f-1*mf>0) t=(a+b)/2;

r=FindRoots(f,t,b,eps); %右递归 else

if(f_1*mf==o) r=(a+b)/2;

else

if(abs(b-a)<=eps)

r=(b+3*a)/4; %输出根 else

s=(a+b)/2;

r=FindRooots(f,a,b,eps); %左递归 end end end

流程图:

中南大学matlab程序设计实践全部答案(很多自己搜)标题是第一题题目(只供参考)

实例应用:

采用二分法求方程x3 3x 1 0在区间[0,1]上的一个根。

中南大学matlab程序设计实践全部答案(很多自己搜)标题是第一题题目(只供参考)

解: 流程图:

在MATLAB命令窗口中输入:

r=HalfInterval('x^3-3*x+1',0,1)

运行结果:

2、编程以解决以下科学计算问题。

试验6 现有一平面上的封闭曲线,取一点建立坐标系,每隔据如下表:

弧度测一点,数9

中南大学matlab程序设计实践全部答案(很多自己搜)标题是第一题题目(只供参考)

用周期样条求曲线轮廓并作图。 分析:

将周期样条分成两部分来求,最后画在一个图上。用spline进行拟合。 流程图:

源程序:

>> x1=[0 5 17 32 63 100 134 164 180 198];

y1=[280.5 324.9 369.4 413.8 458.3 503 525 514.3 451 326.5]; x11=[0:1:198]; y11=spline(x1,y1,x11);

plot(x11,y11,'*-',x1,y1,'-.rd') hold on

x2=[198 195 186 160 136 100 66 35 15 0 ];

y2=[326.5 188.6 92.2 59.6 62.2 102.7 147.1 191.6 236.0 280.5]; x22=[198:-1:0]; y22=spline(x2,y2,x22);

中南大学matlab程序设计实践全部答案(很多自己搜)标题是第一题题目(只供参考)

plot(x22,y22,'*-',x2,y2,'-.rd') legend('计算数据','实验数据') 运行结果:

实验7 用电压V=10伏的电池给电容器,电容器上t时刻的电压

V(t) V (V V0)exp( t/r),其中V0是电容器的初始电压,t是充电常数,试由下面一组V,t数确定V0和r。

分析:

采用最小二乘法进行拟合,对V(t)=V-(V-V0)exp(-t/τ)两边求自然对数得到:log(V-V(t))=log(V- V0)-t/τ

令k=-1/τ,w=log(V- V0),x=t,y=log(V-V(t))。 得到方程:y=kx+w

流程图:

中南大学matlab程序设计实践全部答案(很多自己搜)标题是第一题题目(只供参考)

编程如下: t=[0.5 1 2 3 4 5 7 9];

V=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63]; V1=log(10-V); [p, s]=polyfit(t, V1, 1); [V1p, delta]=polyval(p, t, s); t0= -1/p(1) V0 = 10 - exp(p(2))

plot(t, V, '--r', t, 10 - (10 - V0)*exp(-t/ t0)) legend('实验数据','拟合数据') 结果: t0 =

中南大学matlab程序设计实践全部答案(很多自己搜)标题是第一题题目(只供参考)

3.5269 V0 =

5.6221

实验 8 假定某天的气温变化记录如下表,试用最小二乘方法找出这一天的气温变化规律。

考虑下列类型函数,计算误差平方和,并作图比较效果: (1)二次函数; (2)三次函数; (3)四次函数;

(4)函数C aexp( b(t c)2)。 分析:

对“二次函数”“三次函数”“四次函数”用最小二乘法进行拟合(polyfit),对指

中南大学matlab程序设计实践全部答案(很多自己搜)标题是第一题题目(只供参考)

数函数首先两边取对数,再通过移项化简,获得普通形式的函数,用最小二乘法进行拟合,并求出相应系数。 流程图: 源程序 t=0:1:24;

T=[15 14 14 14 14 15 16 18 20 22 23 25 28 31 32 31 29 27 25 24 22 20 18 17 16]; %二次函数拟合 [p2, s2]=polyfit(t, T, 2);

中南大学matlab程序设计实践全部答案(很多自己搜)标题是第一题题目(只供参考)< …… 此处隐藏:1825字,全部文档内容请下载后查看。喜欢就下载吧 ……

二分法非线性方程求解.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219