《数值分析的MATLAB程序设计》由会员分享,可在线阅读,更多相关《数值分析的MATLAB程序设计(8页珍藏版)》请在金锄头文库上搜索。
1、数值分析作业数值分析作业题目 利用 MATLAB 编写数值算法程序 班级 / 学号 04140101/20100414028学 生 姓 名 张阳 指 导 教 师 刘勇进 一、一、编写编写 lagrange 插值法插值法01110()()()()()( ) ( )n iin i inixxxxxxxxxxL xy xLL011( )()()()()()ninnxxxxxxxxxxxLL计算拉氏基函数,再求和。开始输入插值点 向量x和拉氏 基函数序号kii =1 : nii = kY计算因子因子累乘并记录返回拉氏基函数结束NN图图 1 拉氏基函数求解流程图 Lagrange_base_functi
2、on.m 文件 %Copyright(c) 2012 ShenYang Areospace University%All rights reserved%file name :Lagrange_base_function.m%summary :%current edition :%programmer :Yung Zhung%accomplish time :2012-04-15%function name :Lagrange_base_function.m%function describe :%function in detailed :%function Y = Lagrange_bas
3、e_function(x, k)n = length(x);y = ones(n, 2);Y = 1;for ii = 1 : nif ii = kcontinue;endy(ii, 2) = -x(ii);Y = conv(Y, y(ii, :);endend开始输入插值点 向量x和相应 函数值检查输入出错ii = 1 : n计算第ii个拉氏基函数由拉氏基函数计算代入点 值和x(ii)值两值相除乘以y(ii)再累 加结束NYYN图图 2 计算 lagrange 插值函数及差值值 Lagrange.m 文件 %Copyright(c) 2012 ShenYang Areospace Unive
4、rsity%All rights reserved%file name :Lagrange.m%summary :%current edition :%programmer :Yung Zhung%accomplish time :2012-04-15%function name :Lagrange.m%function describe :%function in detailed :%function Y = Lagrange(x, y, point)if min(size(x) 1 | min(size(y) 1error(the muxt be two vectors!);endn =
5、 length(x);if n = length(y)error(the dimention of the two vectors must aggree!);endY = 0;for ii = 1 : ny_1 = Lagrange_base_function(x, ii);Y = polyadd(Y, y(ii) * y_1 / polyval(y_1, x(ii);endif nargin = 2disp(Y);elseY = polyval(Y, point);end二、二、编写复合二重编写复合二重 simpson 求积公式求积公式开始输入被积函数, 积分区间和分段 数检查输入出错结束
6、NY产生分段节点x_1和x_2产生网格并计算网格点函 数值存入y对每列进行复合simpson 公式得到行向量对得到向量进行复合 simpson公式得到值图图 3 二重复合 simpson 公式流程图 转化为一重 simpson 求积公式。 %Copyright(c) 2012 ShenYang Areospace University%All rights reserved%file name :simpson_con.m%summary :%current edition :%programmer :Yung Zhung%accomplish time :2012-06-25%functio
7、n name :simpson_con.m%function describe :%function in detailed :%function val = simpson_con(f, a, b, c, d, m, n)if b aflag_1 = a;a = b;b = flag_1;flag_1 = -1;elseflag_1 = 1;endif d cflag_2 = d;d = c;c = flag_2;flag_2 = -1;elseflag_2 = 1;endh_1 = (b - a) / m;h_2 = (d - c) / n;x_1 = a : h_1 / 2 : b;x_
8、2 = c : h_2 / 2 : d;x_1, x_2 = meshgrid(x_1, x_2);y = f(x_1, x_2);y_1 = (y(1, :) + y(2 * n + 1, :) + 2 * sum(y(3 : 2 : 2 * n - 1, :) + 4 * sum(y(2 : 2 : 2 * n, :) / 6 * h_2;val = (y_1(1) + y_1(2 * m + 1) + 2 * sum(y_1(3 : 2 : 2 * m - 1) + 4 * sum(y_1(2 : 2 : 2 * m) / 6 * h_1 * flag_1 * flag_2;end三、三
9、、编写编写 Gauss 消去法消去法开始输入被积函数, 积分区间和分段 数检查输入出错结束NYii = 1 :-1利用第ii+1到第n行由第 ii列到第n列与第ii行第 ii列到第n列将第ii列化 为0YN图图 4 求解 Gauss 消去法 Gauss_01.m 文件 %Copyright(c) 2012 ShenYang Areospace University%All rights reserved%file name :Gauss_01.m%summary :%current edition :%programmer :Yung Zhung%accomplish time :2012-0
10、6-14%function name :Gauss_01.m%function describe :%function in detailed :%function A = Gauss_01(A)n = size(A, 1);if n = size(A, 2)error(error!);endfor ii = 1 : n - 1%for jj = ii + 1 : n% A(jj, ii : n) = A(jj, ii : n) - A(ii, ii : n) .* A(jj, ii) ./ A(ii, ii);%endA(ii + 1 : n, ii : n) = A(ii + 1 : n, ii : n) - A(ii + 1 : n, ii) * A(ii, ii : n) ./ A(ii, ii);end