不动点迭代法非线性方程求解.doc
文本预览下载声明
《MATLAB程序设计实践》课程考核
1、编程实现以下科学计算算法,并举一例应用之。(参考书籍《精通MATLAB科学计算》,王正林等著,电子工业出版社,2009年)
“不动点迭代法非线性方程求解”
2、编程解决以下科学计算问题。
7.某工厂2005年度各季度产值(单位:万元)分别为:450.6、395.9、410.2、450.9,试绘制折线图和饼图,并说明图形的实际意义。
8.根据绘制平面曲线,并分析参数对其形状的影响。
2.按要求对指定函数进行插值和拟合。
(1)按表6.4用3次样条方法插值计算范围内整数点的正弦值和范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。
表6.4 特殊角的正弦与正切值表
(度) 0 15 30 45 60 75 90 0 0.2588 0.5000 0.7071 0.8660 0.9659 1.0000 0 0.2679 0.5774 1.0000 1.7320 3.7320
(2)按表6.5用3次多项式方法插值计算1~100之间整数的平方根。
表6.5 1~100内特殊值的平方根表
1 4 9 16 25 36 49 64 81 100 1 2 3 4 5 6 7 8 9 10
1、不动点迭代非线性方程求解
解:
算法说明:
在Matlab中编程实现不动点迭代法的函数为StablePoint
功能:用不动点迭代法求函数的一个零点。
调用格式:[root,n]=StablePoint(f,x0,eps)。
其中,f为函数名;
x0为初始迭代向量;
eps为根的精度;
root为求出的函数零点;
n为迭代步数。
流程图:
不动点迭代法的MATLAB程序代码:
function [root,n]=StablePoint(f,x0,eps)
%用不动点迭代法求函数f的一个零点
%初始迭代量:x0
%根的精度:eps
%求出的函数零点:root
%迭代步数:n
if(nargin==2)
eps=1.0e-4;
end
tol=1;
root=x0;
n=0;
while(toleps)
n=n+1;
r1=root;
root=subs(sym(f),findsym(sym(f)),r1)+r1; %迭代的核心公式
tol=abs(root-r1);
end
实例:
采用不动点迭代法求方程的一个根。
流程图:
解:在MATLAB命令窗口中输入程序代码:
[r,n]=StablePoint(1/sqrt(x)+x-2,0.5)
结果输出:
r =
0.3820
n =
4
从计算结果可以看出,经过四步迭代,得出方程的一个根为0.3820
2.编程解决以下科学计算问题
7、某工厂2005年度各季度产值(单位:万元)分别为450.6, 395.9, 410.2, 450.9,试绘制折线图和饼图,并说明图像的实际意义。
解:
流程图:
源程序代码:
%折线图
subplot(1,2,1)
plot([450.6,395.9,410.2,450.9])
title(2005年度各季度产值-折线图);
%饼状图
subplot(1,2,2)
pie([450.6,395.9,410.2,450.9],1:4,{第一季度,第二季度,第三季度,第四季度})
title(2005年度各季度产值-饼图)
从折线图可以看出该工厂效益变化趋势,效益在第二季度最低随后逐渐提高,并在第四季度恢复到第一季度的水平;从饼状图可以看出各个季度该工厂效益的比例关系。从这两个图可以合理安排工厂的生产计划。
8.根据绘制平面曲线,并分析参数对其形状的影响。
流程图:
syms a x y
eq=1/a^2*x^2 +y^2/(25-a^2)-1;
aa=[0.5:0.5:3.5,5/sqrt(2),3.6:0.5:6.6];
[m,n]=size(aa);
for i=1:n
eq1=subs(eq,a,aa(i));
ezplot(eq1,[-20 20])
drawnow
axis([-20 20 -10 10])
pause(0.5)
end
时,随着a增大曲线形状由长轴在y轴的椭圆逐渐转变为圆(此时);时a继续增大曲线形状由圆转变为长轴在x轴的椭圆;a5时曲线变为双曲线。
2.按要求对指定函数进行插值和拟合。
(1)按表6.4用3次样条方法插值计算范围内整数点的正弦值和范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。
表6.4 特殊角的正弦与正切值表
(度) 0 15 30 45 60 75 90 0 0.2588 0.
显示全部