西京学院数学软件实验任务书24
- 格式:doc
- 大小:106.52 KB
- 文档页数:7
西京学院数学软件实验任务书实验十八实验报告一、实验名称:Chebyshev 多项式最佳一致逼近,最佳平方逼近. 二、实验目地:进一步熟悉Chebyshev 多项式最佳一致逼近,最佳平方逼近.实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计.四、实验原理:1.Chebyshev 多项式最佳一致逼近:当一个连续函数定义在区间[1,1]-上时,它可以展开成切比雪夫级数.即:0()()n n n f x f T x ∞==∑其中()n T x 为n 次切比雪夫多项式,具体表达式可通过递推得出:0111()1,(),()2()()n n n T x T x x T x xT x T x +-===-它们之间满足如下正交关系:10 n mn=m 02n=m=0ππ-≠⎧⎪⎪=≠⎨⎪⎪⎩⎰ 在实际应用中,可根据所需地精度来截取有限项数.切比雪夫级数中地系数由下式决定:10112n f f ππ--==⎰⎰2.最佳平方逼近:求定义在区间01[,]t t 上地已知函数最佳平方逼近多项式地算法如下.设已知函数()f x 地最佳平方逼近多项式为01()n n p x a a x a x =+++,由最佳平方逼近地定义有:01(,,,)0(0,1,2,,)n iF a a a i n a ∂==∂其中120101(,,,)(())t n n n t F a a a f x a a x a x dx =----⎰形成多项式()p x 系数地求解方程组Ca D =其中121122211212bbb bn na a a a bb b b n n aaa ab b b b n n n n a a a abbb bn n n naaa a dx xdxx dxx dx xdx x dx x dx x dx C x dx x dx x dx x dx x dx x dx x dx x dx -+---+-⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎰⎰⎰⎰⎰⎰⎰⎰⎰⎰⎰⎰⎰⎰⎰⎰1()()()()b a b a b n a b n a f x dx f x xdx D f x x dx f x x dx -⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎰⎰⎰⎰五、实验内容:%Chebyshev 多项式最佳一致逼近function f=Chebyshev(y,k,x0)syms t ;T(1:k+1)=t; T(1)=1; T(2)=t;c(1:k+1)=0.0;c(1)=int(subs(y,findsym(sym(y)),sym('t'))*T(1)/sqrt(1-t^2),t,-1,1)/pi;c(2)=2*int(subs(y,findsym(sym(y)),sym('t'))*T(2)/sqrt(1-t^2),t,-1,1)/pi;f=c(1)+c(2)*t; for i=3:k+1T(i)=2*t*T(i-1)-T(i-2);c(i)=2*int(subs(y,findsym(sym(y)),sym('t'))*T(i)/sqrt(1-t^2),t,-1,1)/pi; f=f+c(i)*T(i); f=vpa(f,6); if (i==k+1) if (nargin==3)f=subs(f,'t',x0);elsef=vpa(f,6);endendEnd%最佳平方逼近function coff=ZJPF(func,n,a,b)C=zeros(n+1,n+1);var=findsym(sym(func));func=func/var;for i=1:n+1C(1:i)=(power(b,i)-power(a,i))/i;func=func*var;d(i,1)=int(sym(func),var,a,b);endfor i=2:n+1C(i,1:n)=C(i-1,2:n+1);f1=power(b,n+1);f2=power(a,n+1);C(i,n+1)=(f1-f2)/(n+i);endcoff=C\d;版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.5PCzV。
西京学院数学软件实验任务书课程名称数学软件实验班级*** 学号*** 姓名***实验课题线性方程组高斯消去法,高斯列主元消去法,高斯全主元消去法实验目的熟悉线性代数方程组高斯消去法,高斯列主元消去法,高斯全主元消去法实验要求运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成实验内容线性方程组高斯消去法线性方程组高斯列主元消去法线性方程组高斯全主元消去法成绩教师1. 实验目的掌握高斯消去法的基本思路和迭代步骤;熟悉线性代数方程组高斯消去法,高斯列主元消去法,高斯全主元消去法;培养编程与上机调试能力。
2. 算法描述注:本实验以3行4列的增广矩阵为例1. 高斯消去法基本思路设有方程组A*x=b,设A是可逆矩阵。
高斯消去法的基本思想就是将矩阵的初等行变换作用于方程组的增广矩阵,将其中的A 变换成一个上三角矩阵,然后求解这个三角形方程组。
2. 高斯顺序消去法计算步骤将方程组用增广矩阵B={A:b}表示。
1.消元过程(1) a[0][0]!=0.(2)如果a[0][0]=0,则矩阵A奇异,程序结束。
(3)消元每一行都先与第一行消元通式为:a[i][j]=a[i][j]+a[k][j]*(-a[i][k]/a[k][k])2. 回代过程(1) 若a[k][k]=0,则矩阵奇异,方程组解不唯一,程序结束;(2) 从下往上一步步回代通式为:a[i][3]=a[i][3]-a[i][j]*x[j]x[i]=a[i][3]/a[i][i]3.高斯列主元消去法计算步骤将方程组用增广矩阵B={A:b}表示1.第i次选出i列中最大的行与第i行交换循环同时进行顺序消元过程2.回代过程与顺序法相同4.高斯全主元消去法计算步骤将方程组用增广矩阵B={A:b}表示1.找出所有未知量系数的最大元素记下最大元素所在的行与列2.将最大元素所在的行换到第i行3.将最大元素所在的列换到第i列4.记下列的变换5.回代过程与顺序法相同6.将列变换交换回来7.输出结果3 实验内容解方程组x1+x2+x3=6x2-x3=52x1-2x2+x34 实验步骤C语言代码1.高斯顺序消元法:#include"stdio.h"void main(){int i,j,k,s,x[3],a[3][4];//input matrixprintf("请注意输入的增广矩阵A为3行4列\n");for(i=0;i<3;i++){printf("第%d行\n",i+1);for(j=0;j<4;j++){// printf("%d :",j+1);scanf("%d",&a[i][j]);}// printf("\n");}//outputprintf("\n线性方程组的增广矩阵A为:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%-5d",a[i][j]);printf("\n");}// gsfor(k=0;k<2;k++){for(i=k+1;i<3;i++){s=-a[i][k]/a[k][k];for(j=k;j<4;j++){a[i][j]=a[i][j]+a[k][j]*s;}}}printf("\n");//outprintf("\n线性方程组的增广矩阵经过高斯消元得到的矩阵为:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%-5d",a[i][j]);printf("\n");}//solutionprintf("\n线性方程组的解为:\n");x[2]=a[2][3]/a[2][2];for(i=3-2;i>=0;i--){if(a[i][i]!=0){for(j=i+1;j<3;j++){a[i][3]=a[i][3]-a[i][j]*x[j];}x[i]=a[i][3]/a[i][i];}else printf("\n方程组解不唯一");}for(i=1;i<=3;i++){printf("x%d=%-5d",i,x[i-1]);}printf("\n");}2.高斯列主元消去法:#include"stdio.h"void main(){int i,j,k,s,p,l,m,x[3],a[3][4];//input matrixprintf("请注意输入的增广矩阵A为3行4列\n");for(i=0;i<3;i++){printf("第%d行\n",i+1);for(j=0;j<4;j++){// printf("%d :",j+1);scanf("%d",&a[i][j]);}// printf("\n");}//outputprintf("\n线性方程组的增广矩阵A为:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%-5d",a[i][j]);printf("\n");}// gsfor(k=0;k<2;k++){for(l=k+1;l<3;l++)if(a[k][k]<a[l][k])for(m=k;m<4;m++){p=a[k][m];a[k][m]=a[l][m];a[l][m]=a[k][m];}for(i=k+1;i<3;i++){s=-a[i][k]/a[k][k];for(j=k;j<4;j++){a[i][j]=a[i][j]+a[k][j]*s;}}}printf("\n");//outprintf("\n线性方程组的增广矩阵经过高斯消元得到的矩阵为:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%-5d",a[i][j]);printf("\n");}//solutionprintf("\n线性方程组的解为:\n");x[2]=a[2][3]/a[2][2];for(i=3-2;i>=0;i--){if(a[i][i]!=0){for(j=i+1;j<3;j++){a[i][3]=a[i][3]-a[i][j]*x[j];}x[i]=a[i][3]/a[i][i];}else printf("\n方程组解不唯一");}for(i=1;i<=3;i++){printf("x%d=%-5d",i,x[i-1]);}printf("\n");}3.高斯全主元消去法:#include"stdio.h"#include"math.h"void main(){int i,j,i1,j1,k,q,l,m,p[3]={0,1,2};float s,x[3],a[3][4],max;printf("请注意输入的增广矩阵A为3行4列\n");for(i=0;i<3;i++){printf("第%d行\n",i+1);for(j=0;j<4;j++){scanf("%f",&a[i][j]);}}printf("\n");for(k=0;k<2;k++){max=abs(a[k][k]);for(i=k;i<3;i++){for(j=k;j<3;j++){if(abs(a[i][j])>max){max=a[i][j];i1=i;j1=j;}}}for(m=k;m<4;m++){q=a[k][m];a[k][m]=a[i1][m];a[i1][m]=q;}for(l=k;l<3;l++){q=a[l][k];a[l][k]=a[l][j1];a[l][j1]=q;}printf("\n");q=p[k];p[k]=p[j1];p[j1]=q;for(i=k+1;i<3;i++){s=-a[i][k]/a[k][k];for(j=k;j<4;j++){a[i][j]=a[i][j]+a[k][j]*s;}}}printf("\n");printf("\n线性方程组的增广矩阵经过高斯全主元消元得到的矩阵为:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%-10f",a[i][j]);printf("\n");}printf("\n线性方程组的解为:\n");x[2]=a[2][3]/a[2][2];for(i=3-2;i>=0;i--){if(a[i][i]!=0){for(j=i+1;j<3;j++){a[i][3]=a[i][3]-a[i][j]*x[j];}x[i]=a[i][3]/a[i][i];}else printf("\n方程组解不唯一");}for(i=0;i<3;i++){printf("x%d=%-10f",p[i]+1,x[i]);}printf("\n");}2.实验结果:1.高斯顺序消元法:2.高斯列主元消去法:3.高斯全主元消去法:5.实验总结:通过本次实验再次熟悉了高斯主元消元法的思想,加深了对C语言的理解,简洁明了,学会了C语言编写的函数通用实用。
西京学数学软件实验任务书课程名称数学软件实验班级数0901学号0912020107姓名李亚强微分方程组边值问题数值算法(打靶法,有限差分法)实验课题熟悉微分方程组边值问题数值算法(打靶法,有限差实验目的分法)运用Matlab/C/C++/Java/Maple/Mathematica等其中实验要求一种语言完成微分方程组边值问题数值算法(打靶法,有限差分法)实验内容成绩教师实验二十七实验报告1、实验名称:微分方程组边值问题数值算法(打靶法,有限差分法)。
2、实验目的:进一步熟悉微分方程组边值问题数值算法(打靶法,有限差分法)。
3、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。
4、实验原理:1.打靶法:对于线性边值问题(1)⎩⎨⎧==∈=+'+''βα)(,)(],[)()()(b y a y b a x x f y x q y x p y 假设是一个微分算子使:L ()()Ly y p x y q x y '''=++则可得到两个微分方程:,,)(1x f Ly =α=)(1a y 0)(1='a y ,, (2)⇔)()()(111x f y x q y x p y =+'+''α=)(1a y 0)(1='a y ,,02=Ly 0)(2=a y 1)(2='a y ,, (3)⇔0)()(222=+'+''y x q y x p y 0)(2=a y 1)(2='a y 方程(2),(3)是两个二阶初值问题.假设是问题1y(2)的解,是问题(3)的解,且,则线性边值问2y 2()0y b ≠题(1)的解为: 。
1122()()()()()y b y x y x y x y b β-=+2.有限差分法:基本思想是把连续的定解区域用有限个离散点构成的网格来代替,这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似, 积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组 , 解此方程组就可以得到原问题在离散点上的近似解。
《软件工程》实验任务书一、软件工程实验综述《软件工程》课程实验涉及的应用领域较广,属于设计性、综合性实验,需要学生结合具体的软件项目,进行充分的课外调研和探索工作。
1.软件工程实验的任务和目标(1)使学生掌握采用软件工程方法开发一个软件系统的过程,即经历软件开发的各阶段——软件的定义、分析、设计、编码、测试、软件调试与过程管理,将软件工程的原理、方法与技术应用于实际的软件问题。
(2)加深对开发过程中所涉及的各种建模工具的认识和理解,学会利用现有的计算机辅助工具独立完成软件系统的设计工作。
(3)能够编写符合规范的软件开发过程中产生的各类技术文档。
2.需具备的条件(1)掌握按照软件工程思想开发软件的方法、步骤。
(2)掌握软件文档编制的相关标准。
(3)熟悉实验环境:文档编辑工具、计算机辅助绘图工具等。
二、软件工程实验的内容软件工程课程规定的课内实验为8学时。
要求学生按照结构化开发方法完成下面的三个实验,即对给定的实验题目进行需求分析、软件设计、软件测试方案设计,最终提交相关实验的实验报告(软件文档)。
实验一软件项目的需求分析1.通过课外调研及资料查阅充分了解待开发软件项目的背景、需求和约束。
2.采用结构化分析方法和建模工具完成软件系统的功能模型(用数据流图描述)、数据模型(可借助E-R图描述)的创建。
3.提交实验报告,即编写“软件需求规格说明书”。
实验二软件项目的设计本实验属于实验一(软件项目的需求分析)的后续实验。
1.根据需求分析阶段得到的数据流图、设计软件的模块结构(用软件结构图表示)。
2.对重要的功能模块进行详细设计(使用N-S图或程序流程图描述模块算法)3.根据需求分析阶段得到的E-R图进行数据结构设计(即设计关系数据库的表结构)。
4.进行系统接口设计(包括内部接口、与用户接口等)。
5.提交实验报告,即编写“软件设计说明书”。
实验三软件测试方案设计1.实验题目:●从下列(1)和(2)中选择一题完成:(1)从上述软件项目设计中选取一个重要功能模块,根据其详细设计结果,进行测试方案设计:①采用“等价分类法”对程序的接口进行测试。
《数学软件》实验指导书实验一 matlab 运算基础实验目的:熟悉matlab 编程环境,掌握建立矩阵的方法。
实验内容:1. 设有矩阵A 和B12345678910111213141516171819202122232425A ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦,30161769023497041311B ⎡⎤⎢⎥-⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥⎣⎦(1) 求他们的乘积C 。
(2) 将矩阵C 的右下角3*2子矩阵赋给DclcclearA=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20;21,22,23,24,25];B=[3,0,16;17,-6,9;0,23,-4;9,7,0;4,13,11];C=A*BD=C(3:5,2:3)2. 完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。
提示:先利用冒号表达式,再利用find和length 函数。
(2) 建立一个字符串向量,删除其中的大写字母。
提示:利用find 函数和空矩阵。
%P286 T4clcclearx=100:999;y1=find(rem(x,21)==0);length(y1)s='ABCabcD12f';l=s>'A' & s<'Z';s(l) = []实验二 选择结构程序设计实验目的:掌握建立和执行M 文件的方法,实现选择程序设计的方法。
实验内容:求下列分段的值:2226,0356,010,231,x x x x y x x x x x x x ⎧+-<≠⎪=-+≤<≠≠⎨⎪--⎩且且其它要求:(1) 用if 语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。
提示:x 的值可以从键盘输入,可以是向量。
(2) 用逻辑表达式实现。
x=input('please enter x value:');L=( x<0 & x~=-3);Y(L)=x(L).^2+x(L)-6;L=(x>=0&x~=2&x~=3&x<10);Y(L)=x(L).^2-5*x(L)+6;y=x.^2-x-1;实验三 循环结构程序设计实验目的:掌握实现循环程序设计的方法,利用向量运算来代替循环操作的方法。
西京学院数学软件实验任务书【实验课题】雅克比迭代、高斯—赛德尔迭代、超松弛迭代 【实验目的】学习和掌握线性代数方程组的雅克比迭代、高斯—赛德尔迭代、超松弛迭代法,并且能够熟练运用这些迭代法对线性方程组进行求解。
【实验内容】 1、问题重述:对于线性方程组A b X =,即:1111221n 12112222n 21122nn n n n n n n a x a x a x b a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪+++=⎩ (1),其中,111212122111 0 - - 0 - 0 0 () - - - 0 n ij n nn n nn nn a a a a a a a a a a ⨯--⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥A ==--⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦ 0n D L U ⎡⎤⎢⎥⎢⎥≡--⎢⎥⎢⎥⎣⎦()1,n b b b T=如何运用雅克比迭代、高斯—赛德尔迭代、超松弛迭代法对线性方程组进行求解。
2、方法原理: 2.1雅克比迭代迭代思想:首先通过A b X =构造形如()x f x =的等式,然后给定一个初值(0)(0)(0)(0)12(,,)n x x x X =,再通过(1)()()k k f +X =X 进行迭代。
step1 :对(1)相应第i 行中的i x 用其它元素表示为:11111121111122,12211111()()11()()11()()n nj j j j j j n ni i ij ji j j j i j i j iin nn n nj j n n nj j j j nn nn x b a x x b a x a a x b a x x b a x a a x b a x x b a x a a ===≠=-==⎧=-=+-⎪⎪⎪⎪⎨=-=+-⎪⎪⎪=-=+-⎪⎩∑∑∑∑∑∑即:()D b L U X =-+XStep 2 :进行迭代(0)(0)(0)(0)12(1)11()(,,)()n k k x x x D b D L U +--⎧X =⎨X=-+X ⎩,0,1,2k =,取它的判断条件为()(1)k k -X -X 小于一个确定的误差值ε,跳出循环。
西京学院数学软件实验任务书实验二十三实验报告一、实验名称:插值型数值微分,Taylor 展开式数值微分。
二、实验目的:进一步熟悉插值型数值微分,Taylor 展开式数值微分。
三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。
四、实验原理:1.插值型数值微分: 由()()11()()()()(1)!n n n f x f x L x x n ξω++-=+得:()()()()()1111()1()()()()1!(1)!n n n n n f x df f x L x x x n n dx ξξωω++++'''-=+++ 当 x 为插值节点i x 时,上式简化为:()()()11()()()()0,1,,(1)!in i ni n x x f x f x L x x i n n ξω++='''-==+故一般限于对节点上的导数值采用插值多项式的相应导数值进行近似计算,以便估计误差。
一般的()()()()()0,1,,;1,2,k k i n i f x L x i n k ≈== 2.Taylor 展开式数值微分: 理论基础:Taylor 展开式()()()()()()()()()000000022!!nnx x x x f x f x x x f x f x f x n --'''=+-++++我们借助Taylor 展开式,可以构造函数()f x 在点0x x =的一阶导数和二阶导数的数值微分公式。
取步长0h >则:2'''0001100()()()()(,)2h f x h f x hf x f x x h ξξ+=++∈+, (1)所以'''0001100()()()()(,)2f x h f x h f x f x x h h ξξ+-=-∈+, (2)同理),()(2)()()(0022''20'00x h x f h x hf x f h x f -∈+-=-ξξ (3) ),()(2)()()(0022''000'x h x f h h h x f x f x f -∈+--=ξξ(4)式(2)和式(4)是计算()'0f x 的数值微分公式,其截断误差为()O h ,为提高精度,将Taylor 展开式多写几项),()(24)(6)(2)()()(0011)4(40'''30''20'00h x x f h x f h x f h x hf x f h x f +∈++++=+ξξ),()(24)(6)(2)()()(0022)4(40'''30''20'00x h x f h x f h x f h x hf x f h x f -∈+-+-=-ξξ两式相减得)()(62)()()(40'''2000'h O x f h h h x f h x f x f +---+=(5)上式为计算)(0'x f 的微分公式,其截断误差为O(h 2),比式(2)和(4)精度高。
软件工程实验任务书(精选多篇)第一篇:软件工程实验任务书软件工程实验任务书利用一种高级语言或数据库程序设计语言,依照所学的软件工程理论设计一个小型软件。
要求:1.本课程的实验要求在第12周教学结束前完成并提交。
最迟不能超过第16周。
如果到时没有提交作品及文档,该课程直接以不及格计成绩。
2.软件工程实验就是用软件工程的原理、方法、工具进行软件开发,本次实验要求设计一个小型软件,选题原则上要求一人一个题目。
原则上不能同题,如有同题,则内容不能完全雷同。
3.要体现软件开发的过程性,要有详细、完整的文档资料并最终形成实验报告。
要求包括以下内容:"选题的可行性研究;"项目需求分析;"软件设计过程;"软件实现过程;"软件测试过程;"软件开发总结。
4.有系统设计代码(其中代码注释不少于代码的30%),系统运行说明。
5.程序语言不限,可以选择自己熟悉的开发环境。
如: +C#、java、jsp, 数据库:SQL Server 2010等。
6.软件工程设计题目可以选择下面的题目,也可以自己选择题目进行设计,不作统一要求。
以下是供参考的设计题目: 题目一“教务管理系统之子系统——系内课程安排” 1.系统简介每学期的期中,学院教务处分别向各个系发出下学期的教学计划,包括课程名、课时、班级类别(本科、专科、高职)、班号等;系教学主管人员根据教学任务和要求给出各课程的相关限制(如:任课教师职称、和班数、最高周学时数等);任课教师自报本人授课计划,经所在教研室协调确认,将教学计划上交系主管教学计划的主任,批准后上报学院教务处,最终有教务处给出下学期全系教师的教学任务书。
假设上述排课过程全部为人工操作,现要求改造为能利用计算机实现的自动处理过程。
题目二、“学校教材订购系统”1、系统简介本系统可细化为两个子系统:销售系统和采购系统销售系统的工作过程为:首先由教师或学生提交购书单,经教材发行人员审核是有效购书单后,开发票、登记并返给教师或学生领书单,教师或学生即可去书库领书。
西京学院数学软件实验任务书一、实验目的:了解高斯消元法的基本原理,熟悉高斯顺序消元法和高斯列主元消元法的基本算法。
运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言实现高斯消元法。
对于输入的任意矩阵能解其线性方程组。
二、实验基本原理和内容:用高斯消元法求解线性方程组的基本思想是设法消去方程组的系数矩阵A 的主对角线下的元素,而将A x b =化为等价的上三角方程组,然后再回代过程便可以获得方程组的解。
这种解线性方程组的方法,常称为高斯消元法。
内容高斯消元法解方程组: 1230.001 2.000 3.000 1.0001.000 3.712 4.623 2.0002.0001.0725.643 3.000x x x ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥-=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦(1)高斯顺序消元法:第一步:消元 对1,2,,1k n =-若()0k kk a =则停止计算对1,2,,i k k n =++计算因子()()/k k ik ik kk l a a =;对1,2,,j k k n =++计算(1)()()(1)()()k k k ijij ik kj k k k ii ik k a a l a b b l b ++⎧=-⎪⎨=-⎪⎩;第二步:回代 对,1,,1i n n =-()()1ni i iij jj i i i iib a x x a=+-=∑(高斯消元的条件)若A 的所有顺序主子式均不为0,则高斯消元无需换行即可进行到底,且得到唯一解。
若消元过程中允许对增广矩阵进行行交换,则方程组A x b =可用消元法求解的充要条件是A 可逆。
(二)高斯列主元消元法第一步:在A x b =即(1)(1)A x b =的系数矩阵(1)A 的第一列元素中选择一个绝对值最大的元素,不妨设(1)1i a 。
对调(1)1j a 和(1)ij a 及(1)1b 和(1)ib (1,2,,,1)j n i n =≤≤ 。
科学计算实验实验指导书大学数学实验教案中心编写实验一Matlab 基本操作【实验类型】验证性【实验学时】 1 学时【实验目的】1、MATLAB 的基本操作;2、MATLAB 编程;【实验内容】1、MATLAB 的基本操作;2、MATLAB 编程;【实验仪器与软件平台】1.PIV2.8/256M 以上计算机;2.Matlab6.0 以上。
【实验前的预备知识】1.计算机基础知识;2.熟悉编程基本思想;3.熟悉常见数学函数;【实验方法或步骤】上机验证、熟悉以下函数、命令。
1常见数学函数函数名数学计算功能abs<x)实数的绝对值或复数的幅值acos<x)反余弦 arcsin x acosh<x)反双曲余弦 arccosh xangle<x)在四象限内求复数 x的相角asin<x)反正弦 arcsin xasinh<x)反双曲正弦 arcsinh xatan<x)反正切 arctan x atan2<x,y在四象限内求反正切函数名数学计算功能floor<x )对 x 朝-∞方向取整,求正整数 m 和 n 的最大gcd<mn)公约数imag<x)求复数 x 的虚部lcm<m,求正整数 m 和 n 的最小n)公倍数log<x )自然对数 <以e为底数)log10<x)常用对数 <以 10 为底数)real<x)求复数 x 的实部rem<m,求正整数 m 和 n 的 m/n)n)之余数atanh<x)反双曲正切 arctanh x round<x)对 x 四舍五入到最接近的整数ceil<x )对 x 朝+∞方向取整sign<x)符号函数:求出 x 的符号conj<x)求复数 x 的共轭复数sin<x)正弦 sin xcos<x)余弦 cos x sinh<x)反双曲正弦 sinh x cosh<x)双曲余弦 cosh x sqrt<x)求实数 x 的平方根:x exp<x)指数函数 e x tan<x)正切 tan xfix<x )对 x 朝原点方向取整tanh<x)双曲正切 tanh x 如:输入 x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则:ceil(x>= -4-20257fix(x> = -4-20146floor(x> = -5-3-1146round(x> = -5-2 01572系统的在线帮助1) help 命令:1.当不知系统有何帮助内容时,可直接输入 help 以寻求帮助 :>>help<回车)2.当想了解某一主题的内容时,如输入:>> help syntax<了解 Matlab 的语法规定)3.当想了解某一具体的函数或命令的帮助信息时,如输入:>>help sqrt <了解函数 sqrt 的相关信息)2)lookfor 命令现需要完成某一具体操作,不知有何命令或函数可以完成,如输入:>>lookfor line <查找与直线、线性问题有关的函数)3常量与变量系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后可以是任意字母,数字,或下划线的组合。
实验一:贝叶斯分类实验学时:4学时实验目的:设计简单的线性分类器,了解模式识别的基本方法。
掌握利用贝叶斯公式进行设计分类器的方法。
实验内容:(1) 有两类样本(如鲈鱼和鲑鱼),每个样本有两个特征(如长度和亮度),每类有若干个(比如20个)样本点,假设每类样本点服从二维正态分布,自己随机给出具体数据,计算每类数据的均值点,并且把两个均值点连成一线段,用垂直平分该线段的直线作为分类边界。
再根据该分类边界对一随机给出的样本判别类别。
画出如下图形。
提示:1.可以如下产生第一类数据:% x是第一类数据,每一行代表一个样本(两个特征)x1(:,1) = normrnd(10,4,20,1);生成一组(20个)服从正态分布的随机数。
;参数意义:第一、二参数分别表示均值及均方差,;第三、四参数表示生成的是20行1列的向量x1(:,2) = normrnd(12,4,20,1);2.可假设分类边界为kx-y+b=0,根据垂直平分的条件计算出k和b。
3.如果新的样本点代入分类边界方程的值的符号和第一类样本均值代入分类边界方程的符号相同,则是判断为第一类。
(2) 根据贝叶斯公式,给出在类条件概率密度为正态分布时具体的判别函数表达式,用此判别函数设计分类器。
数据随机生成,比如生成两类样本(如鲈鱼和鲑鱼),每个样本有两个特征(如长度和亮度),每类有若干个(比如20个)样本点,假设每类样本点服从二维正态分布,随机生成具体数据,然后估计每类的均值与协方差,在两类协方差相同的情况下求出分类边界。
先验概率自己给定,比如都为0.5。
如果可能,画出在两类协方差不相同的情况下的分类边界。
画出如下图形。
提示:1.可以如下产生第一类数据:% x 是第一类数据,每一列代表一个样本(两个特征)x1(1,:) = normrnd(10,4,1,20); x1(2,:) = normrnd(12,4,1,20);2.均值的估计为11ˆn i k k x n μ==∑,协方差的估计为11ˆˆˆ()()n T i k k k k k x x n μμ=∑=--∑。
数学软件实验报告(一)系:专业:年级:姓名:学号:实验课程:实验室号:_ 实验设备号:实验时间:指导教师签字:成绩:1. 实验项目名称:MATLAB运算基础2. 实验目的和要求1.熟悉启动和退出MA TLAB的方法。
2.熟悉MA TLAB命令窗口的组成。
3.掌握建立矩阵的方法。
4.掌握MA TLAB各种表达式的书写规范以及常用函数的使用。
3. 实验使用的主要仪器设备和软件方正商祺N260微机;MATLAB7. 0或以上版本4. 实验的基本理论和方法MA TLAB的基本命令与基本函数1、基本的系统命令MA TLAB基本的系统命令不多,常用的有exit/quit、load、save、diary、type/dbtype、what/dir/ls、cd、pwd、path等,各命令功能如表1—1。
MA TLAB工作区和变量的基本命令及功能见表1—2。
MA TLAB中有很多预定义变量,这些变量都是在MA TLAB启动以后就已经定义好了的,它们都具有特定的意义。
详细情况见表1—3。
MA TLAB 的算术表达式由字母或数字用运算符号联结而成,十进制数字有时也可以使用科学记数法来书写,如2.71E+3表示2.71×103,3.86E -6表示3.86×10-6。
MA TLAB 的运算符有: + 加 - 减* 乘 .* 两矩阵的点乘 / 右除(正常除法) \ 左除 ^ 乘方例如:a^3/b+c 表示a 3÷b+c 或3ac b+,a^2\(b -c)表示(b -c )÷a 2或2b ca -,A.*B 表示矩阵A 与B 的点乘(条件是A 与B 必须具有相同的维数),即A 与B 的对应元素相乘。
A*B 表示矩阵A 与B 的正常乘法(条件是A 的列数必须等于B 的行数)。
MA TLAB 的关系运算符有六个:< 小于 <= 小于等于 > 大于 >= 大于等于 = = 等于 ~ = 不等于例如:(a+b )>=3表示3≥+b a ,a~ =2表示2≠a 。
西京学院数学软件实验任务书
【实验课题】
欧拉数值算法(显式,隐式,欧拉预估-校正法),Runge-Kutta 数值算法
【实验目的】
熟悉欧拉数值算法(显式,隐式,欧拉预估-校正法),Runge-Kutta 数值算法
【实验内容】 1、欧拉数值算法
对于微分方程:
000
(,),
()()dy
f x y x x dx
y x y ⎧=⎪≤⎨⎪=⎩ (1) 的数值解,当函数() ,f x y 对于y 满足 Lipschitz 条件:
1212(,)(,)f x y f x y L y y -≤-
时,初值问题(1)存在唯一解。
数值解法就是寻求解()y x 在离散点01·
·····n a x x x b ≤<<<<≤上的近似值011
,,,,
,n n y y y y +,
并且有0n x x nh =+,0(),0,1,
n y y x nh n =+
=
将向前差商:
1()()
'()n n n y x y x y x h
+-≈
代入(1)并记()n n y y x =,由此可得显式欧拉公式:
100(,),
(0,1,2,)()
n n n n y y hf x y n y y x +=+==⎧⎨
⎩ (2) 若使用向后差商:
11()()
'()n n n y x y x y x h
++-≈
和(1),可得隐式欧拉公式:
11100(,),
(0,1,2,)()
n n n n y y hf x y n y y x +++=+==⎧⎨
⎩ (3) 对方程() ,y f x y '=的两端从
n x 到1 n x +积分得: 1
1()()(,())n n
x n n x y x y x f x y x dx ++=+⎰
(4)
将梯形公式应用于上式右端的积分项,可得梯形公式:
111[(,)(,)]2
n n n n n n h
y y f x y f x y +++=++ (5)
上式可视为显式欧拉公式和隐式欧拉公式的算术平均。
实际计算中,可将显式欧拉公式和梯形公式结合使用,建立欧拉预估-校正公式,或改进的欧拉公式:
1111(,),
[(,)(,)].2
n n n n n n n n n n y y hf x y h y y f x y f x y ++++=+=++⎧⎪⎨⎪⎩预估校正 (6) 即:12112(,) (,)1122
n n n n n n k hf x y k hf x h y h y y k k +⎧
⎪=⎪
=++⎨⎪⎪=++⎩
2、Runge-Kutta 数值算法
为了进一步提高精度,在1[,]n n x x +上可取多个点,预报相应点的斜率值,对这些斜率值加权平均作为平均斜率值。
利用泰勒展开,比较相应系数,从而确定在尽可能高的精度下有关参数应满足的条件。
较常用的有三阶龙格-库塔公式:
3112122
12(4)6(,)(,)
22
(,(-2))
n n k n n n n n n h y y k k k f x y h h k f x y k f x h y h k k ++⎧
=++⎪⎪
=⎪
⎨
⎪=++⎪⎪=+++⎩
【程序】
%%%%%%%%%%%%%%%%%%%%%%%%%%向前欧拉数值算法
function [h,k,X,Y,P,REn]=Qeuler1(funfcn,x0,y0,b,n,tol)
x=x0; h=(b-x)/n; X=zeros(n,1); y=y0;
Y=zeros(n,1); k=1; X(k)=x; Y(k)=y';
for k=2:n+1
fxy=feval(funfcn,x,y);
delta=norm(h*fxy,'inf');
wucha=tol*max(norm(y,'inf'),1.0);
if delta>=wucha
x=x+h; y=y+h*fxy; X(k)=x;Y(k)=y';
end
plot(X,Y,'rp')
grid
label('自变量 X'), ylabel('因变量 Y')
title('用向前欧拉(Euler)公式计算dy/dx=f(x,y),y(x0)=y0在[x0,b]上的数值解')
end
P=[X,Y];
syms dy2,
REn=0.5*dy2*h^2; %%%%%%%%%%%%%%%%%%%%%%%%%%向后欧拉数值算法
function [X,Y,n,P]=Heuler1(funfcn,x0,b,y0,h,tol)
n=fix((b-x0)/h); X=zeros(n+1,1); Y=zeros(n+1,1);
k=1; X(k)=x0; Y(k,:)=y0; Y1(k,:)=y0;
for i=2:n+1
X(i)=x0+h; Y(i,:)=y0+h*feval(funfcn,x0,y0);
Y1(i,:)=y0+h*feval(funfcn,X(i),Y(i,:));
Wu=abs(Y1(i,:)-Y(i,:));
while Wu>tol
p=Y1(i,:);
Y1(i,:)=y0+h*feval(funfcn,X(i),p);
Y(i,:)=p;
end
x0=x0+h; y0=Y1(i,:);
Y(i,:)=y0; plot(X,Y,'ro')
grid on
xlabel('自变量 X'), ylabel('因变量 Y')
title('用向后欧拉公式计算dy/dx=f(x,y),y(x0)=y0在[x0,b]上的数值解');
end
X=X(1:n+1); Y=Y(1:n+1,:); n=1:n+1; P=[n',X,Y] %%%%%%%%%%%%%%%%%%%%%%%%%%%%改进欧拉
function E=MendEuler(f,a,b,n,ya)
% f:微分方程右端函数句柄
% a,b:自变量取值区间的两个端点
% n:区间等分的个数
% ya:函数初值y(a)
% E=[x',y']:自变量X 和解Y 所组成的矩阵
h=(b-a)/n;
y=zeros(1,n+1);
x=zeros(1,n+1);
y(1)=y(a);
x=a:h:b;
for i=1:n
y1=y(i)+h*feval(f,x(i),y(i));
y2=y(i)+h*feval(f,x(i+1),y1);
y(i+1)=(y1+y2)/2;
end
E=[x',y'];
%%%%%%%%%%%%%%%%%%%%%%三阶龙格库塔
function
[k,X,Y,fxy,wch,wucha,P]=RK3(funfcn,fun,x0,b,C,y0,h)
x=x0; y=y0;p=128;
n=fix((b-x0)/h);
fxy=zeros(p,1);
wucha=zeros(p,1);
wch=zeros(p,1);
X=zeros(p,1);
Y=zeros(p,length(y));
k=1; X(k)=x; Y(k,:)=y';
% 绘图.
clc,x,h,y
%计算
%fxy=fxy(:);
for k=2:n+1
x=x+h;a2=C(4);
a3=C(5);b21=C(6);
b31=C(7);
b32=C(8);c1=C(1);
c2=C(2);
c3=C(3);
x1=x+a2*h;
x2=x+a3*h;
k1=feval(funfcn,x,y);
y1=y+b21*h*k1;
k2=feval(funfcn,x1,y1);
y2=y+b31*h*k1+b32*h*k2;
k3=feval(funfcn,x2,y2);
fxy(k)=feval(fun,x);
y=y+h*(c1*k1+c2*k2+c3*k3);
X(k)=x; Y(k,:)=y;
k=k+1;
plot(X,Y,'rp',X,fxy,'bo'),
grid,xlabel('自变量 X'), ylabel('因变量 Y')
legend('用三阶龙格-库塔方法计算dy/dx=f(x,y),y(x0)=y0在[x0,b]上的数值解','y/dx=f(x,y),y(x0)=y0的精确解y=f(x)')
end
%计算误差.
for k=2:n+1
wucha(k)=norm(Y(k-1)-Y(k));
wch(k)=norm(fxy(k)-Y(k));
end
X=X(1:k);
Y=Y(1:k,:);
fxy=fxy(1:k,:);
n=1:k;
wucha=wucha(1:k,:);
wch=wch(1:k,:);
P=[n',X,Y,fxy,wch,wucha];。