二分法非线性方程求解
时间:2025-05-03
时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:容易读错的字一览表1