计算方法B上机报告――题目三
3次多项式函数的系数由低到高为: 13.3880 -0.2273 0.2075 -0.0084
使用3次多项式函数拟合的误差是131.061822: 平均温度为21.2℃
(3) 四次多项式函数拟合程序运行结果如下所示:
4次多项式函数的系数由低到高为: 16.7939 -3.7050 0.8909 -0.0532 0.0009
使用4次多项式函数拟合的误差是59.041189: 平均温度为21.2℃
13
计算方法B上机报告――题目三
(4) 指数函数p(x)?e?0??1x??2x拟合程序运行结果如下所示:
指数函数的系数是:a=2.383470,b=0.125093,c=-0.004442 使用指数函数拟合的误差是:57.034644 平均温度为21.2℃
2
5. 分析总结
通过比较不同多项式的拟合效果可以看出,随着多项式次数的增加曲线拟合效果越来越好,误差也逐渐减小。因此,为了得到更好的拟合效果,应尽量采用较高次多项式。当数据具有指数的性质时,采用指数函数更为合适,可在比多项式阶数更少的情况下获得更小的误差。
14
计算方法B上机报告――题目四
4 题目四
1. 非线性方程求解
设计算法,求出非线性方程6x5?45x2?20?0的所有实根,并使误差不超过
10?4
2. 实现思想
本题要对非线性方程进行求解,可采用迭代法进行计算。迭代法包括简单迭代法、牛顿法、割线法以及区间法。虽然牛顿迭代法、割线法的收敛速度较快,但容易引起收敛性问题,以及有时方程计算结果虽然满足给定误差界但解和准确解的误差依然有可能很大的情况。因此我们这里采用区间法进行求解。因为区间法总是收敛的,且它的迭代过程确定了一个区间序列,使得每个区间都包含方程的某个解,只要区间长度小于给定误差界时,解和准确解的误差就满足所需误差要求。
常用的区间方法为二分法,每次迭代使区间长度减小一半,其算法结构如下所示:
算法BISECTION(x(0),x(0),f,?1,?2,x)
1. 2. 3. 4.
f(x(0))?f0;f(x(1))?f1
Iff0f1?0then stop
Iff0??2then输出x(0)作为根; stop Iff1??2then输出x(1)作为根; stop 1(0)x?x(1)??x ?2Ifx(1)?x??1x(1)then输出x作为根; stop
5. 6. 7. 8.
f(x)?f
Iff??2then输出x作为根;
15
计算方法B上机报告――题目四
9.
Iff0f1?0then
9.1 x?x(0);f?f0 else
9.2 x?x(1);f?f1
10. go to 5
算法中?1表示相邻两侧迭代的差的误差范围,?2表示某次迭代的方程的计算结果的误差范围。依题意本题只考虑相邻两侧迭代的差的误差,即解的误差。
3. 源程序
按照上述算法所编写的MATLAB程序如下所示:
clc;clear;
%确定根所在的区间 interval=[];
for i=-10:0.1:10
if (fx(i)*fx(i+0.1)<0) interval=[interval i]; end end
%确定根的个数 n=length(interval);
%对每个根区间采用二分法求解 for j=1:n
x0=interval(j); %左端点 x1=interval(j)+1;%右端点
while (x1-x0)>10^(-4) if fx(x0)*fx((x0+x1)/2)>0 x0=(x0+x1)/2; else
x1=(x0+x1)/2; end end
root(j)=x0; end
%方程组误差不超过10^-4的解 root
其中程序中的fx函数为:
function [y]=fx(x) y=6*x^5-45*x^2+20; end
16
相关推荐: