《数学实验》曲线绘制实验报告

合集下载

实验一__曲线绘图

实验一__曲线绘图

实验一 曲线绘图【实验目的】1.了解曲线的几种表示方法。

2.学习、掌握MATLAB 软件有关命令。

【实验内容】绘制下列四种曲线:1.以直角坐标方程sin ,cos y x y x ==表示的正、余弦曲线。

2.以参数方程cos ,sin ,[0,2]x t y t t π==∈表示的平面曲线(单位圆)。

3.以参数方程0.20.2cos ,sin ,,[0,20]22t t x e t y e t z t t ππ--===表示的空间曲线。

4.以极坐标方程(1cos ),1,[0,2]r a a ϕϕπ=+=∈表示的心脏线。

【实验准备】1.平面、空间曲线的表示形式2.曲线绘图的MATLAB 命令MATLAB 中主要用plot,fplot,plot3三种命令绘制不同的曲线 matlab 绘图命令比较多,我们选编一些常用命令,并简单说明其作用,这些命令的调用格式,可参阅例题及使用帮助help 查找.表1.1 二维绘图函数表1.2 基本线型和颜色表1.3 二维绘图工具表1.4 axis命令linspace 创建数组命令,调用格式为:x=linspace(x1,x2,n),创建了x1到x2之间有n个数据的数组.funtool 函数工具,在matlab指令窗键入funtool可打开“函数计算器”图形用户界面.【实验重点】1.一维函数的绘制2.各种曲线的实现方法 【实验难点】1.各种曲线的实现方法 【实验方法与步骤】练习1 作出函数sin ,cos y x y x ==的图形,并观察它们的周期性。

先作函数sin y x =在[4,4]ππ-上的图形,用MATLAB 作图的程序代码为>>x=linspace(-4*pi,4*pi,300); %产生300维向量x >>y=sin(x)>>plot(x,y) %二维图形绘图命令 运行结果如图1.1。

-15-10-551015-1-0.8-0.6-0.4-0.200.20.40.60.81图1.1此图也可以用fplot 命令,相应的 MATLAB 程序代码为 >>clear;close; %clear 清理内存;close 关闭已有窗口. >>fplot('sin(x)',[-4*pi,4*pi]) 运行结果如图1.2。

高中数学实验报告

高中数学实验报告

高中数学实验报告标题:高中数学实验报告引言数学实验作为一种创新性的教育方式,旨在通过实际操作来增强学生对数学概念的理解和应用能力。

本文将以高中数学实验为主题,从实验目的、实验方法、实验结果等方面展开回答,旨在探讨实验对学生数学学习的促进作用。

实验目的本次实验的主要目的是通过实践来加深学生对函数、几何、概率等数学概念的理解,并培养学生的分析和解决问题的能力。

同时,实验也旨在激发学生对数学的兴趣,提高他们的学习积极性。

实验方法在本次实验中,我们采用了以小组合作为基础的学习方式。

学生们分成小组,在老师的指导下进行实验,通过互相合作和讨论,提高了学生们的思维能力和团队合作意识。

实验一:函数图像绘制在这个实验中,学生们利用软件绘制了函数的图像。

通过改变函数中的系数和常量,他们可以直观地观察到图像的变化,并将其与数学公式相联系。

这样一来,学生们不仅可以更好地理解函数的性质,还能够培养他们的图形直观能力。

实验结果显示,学生们在绘制函数图像的过程中,逐渐掌握了函数图像的规律,提高了图像的准确性。

通过实验,学生们深入了解了函数的概念,从而更好地掌握了相关的求导和导数概念。

实验二:几何问题求解在这个实验中,学生们通过模拟实际生活中的几何问题,运用数学知识解决实际问题。

比如,他们用测量工具测量物体的高度,然后根据测量结果计算物体的体积。

这样的实践操作能够帮助学生将抽象的数学概念与实际问题联系起来,提高解决实际问题的能力。

实验结果表明,学生们在几何问题求解中,通过实践操作掌握了几何图形的性质和计算方法,提高了他们的空间想象和逻辑思维能力。

实验三:概率实验在这个实验中,学生们利用随机事件的模拟实验来研究概率。

例如,他们通过投掷骰子的实验来研究点数的分布规律,并运用概率理论对实验结果进行分析。

这样的实践操作可以帮助学生更好地理解概率的概念和计算方法。

实验结果显示,学生们通过概率实验加深了对概率的理解,提高了他们的分析和推理能力。

高等数学实验报告

高等数学实验报告

高等数学实验报告实验七:空间曲线与曲面的绘制一、 实验目的1、利用数学软件Mathematica 绘制三维图形来观察空间曲线和空间曲面图形的特点,以加强几何的直观性。

2、学会用Mathematica 绘制空间立体图形。

二、实验题目利用参数方程作图,做出由下列曲面所围成的立体图形:(1)xy x y x z =+--=2222,1及xOy 平面;(2) 01,=-+=y x xy z 及.0=z三、实验原理空间曲面的绘制作参数方程],[],,[,),(),(),(max min max min v v v u u v u z z v u y y v u x x ∈∈⎪⎩⎪⎨⎧===所确定的曲面图形的Mathematica 命令为:ParametricPlot3D[{x[u,v],y[u,v],z[u,v]},{u,umin,umax}, {v,vmin,vmax},选项]四、程序设计(2)五、程序运行结果(2)六、结果的讨论和分析1、通过参数方程的方法做出的图形,可以比较完整的显示出空间中的曲面和立体图形。

2、可以通过mathematica 软件作出多重积分的积分区域,使积分能够较直观的被观察。

3、从(1)中的实验结果可以看出,所围成的立体图形是球面和圆柱面所围成的立体空间。

4、从(2)中的实验结果可以看出围成的立体图形的上面曲面的方程是xy z =,下底面的方程是z=0,右边的平面是01=-+y x 。

实验八 无穷级数与函数逼近一、 实验目的(1) 用Mathematica 显示级数部分和的变化趋势; (2) 展示Fourier 级数对周期函数的逼近情况;(3) 学会如何利用幂级数的部分和对函数进行逼近以及函数值的近似计算。

二、实验题目(1)、观察级数∑∞=1!n nnn 的部分和序列的变化趋势,并求和。

(2)、观察函数⎩⎨⎧<≤<≤--=ππx x x x f 0,10,)(展成的Fourier 级数的部分和逼近)(x f 的情况。

曲线测设实训报告

曲线测设实训报告

线路测设实习报告实训起止时间:班级:组号:姓名:学号:指导教师:一、实验内容1.在实地测设出圆曲线主点。

2.根据计算的测设数据及转折点里程,推算各主点里程。

3.用极坐标法测设每弧长为10m加密圆曲线。

二、目的与要求1.熟悉圆曲线各元素计算方法。

2.掌握各主点里程推算方法及主点测设程序。

3.掌握用极坐标法加密曲线的计算与实测方法。

三、预习内容1.路线交点和转点的测设及转折角的测定。

2.圆曲线主点测设。

3.用极坐标法测设圆曲线的计算与实例。

四、人员组织与仪器********************************************************五、实验步骤1.在实验场地上,先布置一折线JD2-JD1为路线方向,各点钉以木桩,JD2点为转折点,并设其桩号为(K2+204.73)。

2.在JD2点设站,布置JD3位置,以测回法一个测回测转折角。

3.视现场情况选定半径R,计算设置主点所需各曲线元素值。

并推算各主点里程桩号。

4.主点放样方法:课本157页******************************************************************************** ******************************************************************************** *********************************************************************5.测设细部点方法:课本160页极坐标法及全站仪放样方法**************************************************************************************************************************************************************** *****************************************************************************************************************六、数据计算及放样:1、转折角及JD1-JD2和JD2-JD3距离测量记录与计算。

曲线拟合实验报告

曲线拟合实验报告

数值分析课程设计报告学生姓名学生学号所在班级指导教师一、课程设计名称函数逼近与曲线拟合二、课程设计目的及要求实验目的:⑴学会用最小二乘法求拟合数据的多项式,并应用算法于实际问题。

⑵学会基本的矩阵运算,注意点乘和叉乘的区别。

实验要求:⑴编写程序用最小二乘法求拟合数据的多项式,并求平方误差,做出离散函数(x i ,y i )和拟合函数的图形;⑵用MATLAB 的内部函数polyfit 求解上面最小二乘法曲线拟合多项式的系数及平方误差,并用MATLAB 的内部函数plot 作出其图形,并与(1)结果进行比较。

三、课程设计中的算法描述用最小二乘法多项式曲线拟合,根据给定的数据点,并不要求这条曲线精确的经过这些点,而是拟合曲线无限逼近离散点所形成的数据曲线。

思路分析:从整体上考虑近似函数)(x p 同所给数据点)(i i y x ,误差i i i y x p r -=)(的大小,常用的方法有三种:一是误差i i i y x p r -=)(绝对值的最大值i mi r ≤≤0max ,即误差向量的无穷范数;二是误差绝对值的和∑=mi i r 0,即误差向量的1范数;三是误差平方和∑=mi i r 02的算术平方根,即类似于误差向量的2范数。

前两种方法简单、自然,但不便于微分运算,后一种方法相当于考虑2范数的平方,此次采用第三种误差分析方案。

算法的具体推导过程: 1.设拟合多项式为:y =a 0+a 1x +a 2x 1+⋯+a k x k2.给点到这条曲线的距离之和,即偏差平方和:R 2=∑[y i −(a 0+a 1x +⋯+a k x i k )]2ni=13.为了求得到符合条件的a 的值,对等式右边求a i 偏导数,因而我们得到了:−2∑[y −(a 0+a 1x +⋯+a k x i k )]ni=1x =0−2∑[y −(a 0+a 1x +⋯+a k x i k )]ni=1=0⋯⋯−2∑[y −(a 0+a 1x +⋯+a k x i k )]x k ni=1=04.将等式左边进行一次简化,然后应该可以得到下面的等式a 0n +a 1∑x i +⋯+a k ∑x i k ni=1ni=1a 0∑x i +a 1∑x i 2+⋯+∑x i k+1ni=1ni=1ni=1a 0∑x i k +a 1∑x i k+1+⋯+a k ∑x i 2k ni=1ni=1ni=15.把这些等式表示成矩阵的形式,就可以得到下面的矩阵:⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∑∑∑∑∑∑∑∑∑∑∑=====+==+====n i i n i n i i k n i k i ni k ini k i n i k i ni in i ini k ini iy y y a a x xx x xxx x 11i 110121111112111a n M MΛM O MM ΛΛ 6. 将这个范德蒙得矩阵化简后得到⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡n k k n n k k y y y a a a x x x x x x M M ΛMOM M ΛΛ21102211111 7.因为Y A X =*,那么X Y A /=,计算得到系数矩阵,同时就得到了拟合曲线。

工作曲线图的绘制实验报告

工作曲线图的绘制实验报告

工作曲线图的绘制实验报告
一、课程设计名称
函数逼近与曲线拟合
二、课程设计目的及要求
实验目的:
⑴学会用最小二乘法求拟合数据的多项式,并应用算法于实际问
题。

⑵学会基本的矩阵运算,注意点乘与叉乘的区别。

实验要求:
⑴编写程序用最小二乘法求拟合数据的多项式,并求平方误差,做出离散函数与拟合函数的图形;
⑵用 MATLAB 的内部函数 polyfit 求解上面最小二乘法曲线拟合多项式的系数及平方误差,并用MATLAB的内部函数plot作出其图形,并与(1)结果进行比较。

三、课程设计中的算法描述用最小二乘法多项式曲线拟合,根据给定的数据点,并不要求这条曲线精确的经过这些点,而就是拟合曲线无限逼近离散点所形成的数据曲线。

范数;三就是误差平方与miir02的算术平方根,即类似于误差向量的 2 范数。

前两种方法简单、自然,但不便于微分运算,
后一种方法相当于考虑 2 范数的平方,此次采用第三种误差分析方案。

为乘法的算法就需要进一步的细化。

例如在进行数据采集时,由于数据采集器(各种传感器)或机器自身的原因及其外部各种因素的制约,导致数据偶尔会有大幅度的波动,及产生一些偏差极大的数据,不能真实反映数据的可靠性,所以会对数据进行筛选或修正。

而此时就可应用曲线拟合。

实验报告(程序设计及曲线作图)

实验报告(程序设计及曲线作图)
end
S
实验结果;s =
1.8447e+019
4、建立一个2000×2000的魔方矩阵,并测定运行时间。
实验过程;clc
tic
A=magic(2000);
Toc
实验结果;Elapsed time is 0.906000 seconds.
5、设计M文件计算分段函数 中f(8),f(12)的值。
实验过程;clear
实验过程;x=linspace(0,pi,30);
y1=sin(2*x);y2=cos(2*x);
plot(x,y1,x,y2);
实验结果;
2.作出在[-3,3]的图象,用绿色线画出。
3.把当前窗口分割成四个区域,绘制四条函数曲线:y=sinx; y=cosx;y=2sinx;z1=6cosx
4.绘制单位圆x=sint,y=cost,
学生实验步骤记录
(实验步骤及中间的结果与现象,在实验中做了什么,怎么做,发生的现象和中间结果)
实验分析与小结
(遇到的问题与解决方法,实验过程中的发现与收获,未解决或需进一步解决的问题)
2、把61~80之间的能被6整除的整数输出。
实验过程;clear
clc
for i=61:80
if rem(i,6)~=0
continue
end
i
End
实验结果;i = 66 i =72 i =78
3、求 的值。
实验过程;clear
clc
s=0;
for i=2
for j=1:63
s=s+i^j;
end
实验目的
1、了解MATLAB下M文件的建立与调试。
2、掌握基本的命令语句

《数学实验》实验报告——最小二乘法

《数学实验》实验报告——最小二乘法

《数学实验》实验报告1x=Table[10.0+5.0*i,{i,0,4}];y={27.0,26.8,26.5,26.3,26.1};xy=Table[{x[[i]],y[[i]]},{i,1,5}];q[a_,b_,c_] :=Sum[(a+b*x[[i]]+c*x[[i]]^2-y[[i]])^2,{i,1,5}]NSolve[{D[q[a,b,c],a]==0, D[q[a,b,c],b]==0,D[q[a,b,c],c]==0},{a,b,c}]t1=ListPlot[xy,PlotStyle->PointSize[0.02]];f[x_] :=27.56+ -0.0574286*x+0.000285714*x^2;t2=Plot[f[x],{x,5,35},AxesOrigin->{5,25}];Show[t1,t2]首先得到a,b,c三个值: {{a->27.56,b->-0.0574286,c->0.000285714}}然后得到同一坐标系下的数据点散点图及拟合函数的图形:试验过程(含详细试验步骤、程序清单及异常情况记录等)输入以下mathematica语句求解参数a,b,c:运行后可得解:2为求得数据点的散点图及拟合函数的图形,输入以下语句,并将两个图画在同一坐标下:运行得:3在最开始时,我输入的程序是这样的:x=Table[10.0+5.0*i,{i,0,4}];y={27.0,26.8,26.5,26.3,26.1};xy=Table[{x[[i]],y[[i]]},{i,1,5}];q[a_,b_,c_] :=Sum[(a+b*x[[i]]+c*x[[i]]^2-y[[i]])^2,{i,1,5}]NSolve[{D[q[a,b,c],a]==0, D[q[a,b,c],b]==0,D[q[a,b,c],c]==0},{a,b,c}]t1=ListPlot[xy,PlotStyle->PointSize[0.02],DisplayFunction->Identity];f[x_] :=27.56+ -0.0574286*x+0.000285714*x^2;t2=Plot[f[x],{x,5,35},AxesOrigin->{5,25},DisplayFunction->Identity];Show[t1,t2, DisplayFunction->$ DisplayFunction]然而得到的结果没有图形(如下):我比照了老师的讲义,改动了“DisplayFunction->Identity”,可是,结果还是一样,没有图形。

实验曲线的绘制

实验曲线的绘制

用最小二乘法绘制实验曲线在做各种实验中,可以获得大量的数据。

一般的,我们都会在实验之后,将这些实验数据进行某种处理,然后用图形来描绘实验结果。

用图形来描绘要比提供一大堆枯燥的数据直观明了得多。

但是,因为实验本身会受到各种具体因素的影响。

比如:实验仪器设备的精度、原材料因素、工作人员的水平以及温度等的影响,使得实验数据测得的数据总会或多或少的带有误差。

也就是说,这些实验数据本身就不精确。

所以在绘制实验曲线的时候,如果是按点点通过将这些数据点连成曲线,那么这种看起来似乎很精确的方法恰恰是不符合实际情况的,因而是不可取的。

正确的方法应该是用一条光滑的曲线,以适当的方式来逼近这些数据点。

因为曲线并不通过每个数据点,所以可以弥补由于误差造成的数据点的跳动用一系列数据点(i i y x ,)(i=1,2,.....,m ),所要绘制的曲线)(x f y =,用什么样的表尊来评价这条曲线是否处于较为合理的状态呢?通常把数据点的坐标值与曲线上对应的坐标之差ε作为评判的标准。

在这里:i i i y x f -=)(ε式中i ε成为残差;)(i x f 为理论值;i y 为相应的实测值。

常用的评价方法是:使残差的平方和∑=mi i 12ε达到最小。

这也就是常说的“最小二乘法”。

用最小二乘法来绘制实验曲线,其实质也就是要找一个经验方程)(x f y =来描述这些数据点,并使每个点的)(i x f 和i y 之差的平方和为最小。

所以,第一步首先要根据数据点的分布情况进行预测,该经验方程可能是属于什么类型。

比如说是线性函数,还是二次函数或其他阶次的多项式曲线。

用最小二乘法拟合直线设有测得的数据点),,2,1)(,(m i y x i i ⋅⋅⋅=,根据这些数据点的分布情况,预测到他们之间呈线性关系,并设该线性方程为一般形式21a x a y +=。

于是,我们可以按最小二乘法的原理建立起下面的式子:∑∑==-+=mi i i mi iy a x a122112)(ε其中i i y x ,为测得的已知数据点的值,故这个方程可以看成是关于1a 和2a 的函数,即有两个未知数1a 和2a 。

曲线测设实验及实习报告全新版

曲线测设实验及实习报告全新版

目录第一部分非完整、非对称缓和曲线要素计算及测设 (2)1.实验目的及要求 (2)2.前期实验准备和相关安排 (2)2.1实验人员及仪器 (2)2.2实验内容 (2)3.实验原理 (3)4.计算过程 (4)5.运行结果 (7)5.小结 (10)第二部分圆曲线和缓和曲线的实地放样 (11)1.实习目的及要求 (11)2.前期实习准备和相关安排 (11)2.1实习人员及仪器 (11)2.2实习内容 (11)2.3放样元素计算软件设计 (11)2.3.1放样元素计算原理及过程 (11)2.3.2 软件设计程序 (14)2.3.3程序运行结果及检核 (16)2.4 曲线测设方案及施测过程 (18)2.4.1曲线测设方案 (18)2.4.2 施测过程 (20)2.5 小结 (20)第一部分非完整、非对称缓和曲线要素计算及测设随着短程光电测距仪和全站仪在道路勘测中的应用越来越普及,利用极坐标法测设曲线将越来越重要。

这种测设曲线的方法,其优点是测量误差不累计,测设的点位精度高。

尤其是测站设置在中线外任意一点测设曲线,将给现场的工作带来很大的方便。

极坐标测设曲线主要是曲线测设资料的计算问题,该方法的计算原理及思路为:把由直线段、圆曲线段、缓和曲线段组合而成的曲线归算到统一的导线测量坐标系统中,这样就便于计算放样的元素了。

1.实验目的及要求1.学会非完整、非对称缓和曲线要素计算方法;2.学会编写偏角法、极坐标法非完整、非对称缓和曲线要素计算程序;3.实地放样非完整、非对称缓和曲线;4.在实习前预先算出实测数据;5.各小组做好测设过程的人员安排。

2.前期实验准备和相关安排2.1实验人员及仪器组长:杨威副组长:张懂庆组员:杨永强张文超范龙强赵晨亮子丽天实习仪器:全站仪一台,三脚架两个,棱镜两个,卷尺一个2.2实验内容1. 根据自己设计的数据计算测设要素和主点里程;2. 设置非完整、非对称曲线的主点;3. 根据书上P169页的曲线测设程序框图(图1),编写一般缓和曲线的程序,并进行调试和检核;4. 可以查资料,学习非完整、非对称曲线的计算方法和测设方法,并和自己设计的程序相结合,计算各个放样点的坐标等内容;5. 在内业计算的基础上,选取合适的控制点和位置进行曲线测设;6. 直接根据课本实例,进行相应元素的计算和检核,最后安排具体的实习过程,进行现场曲线放样;7.书写实习报告书。

计算机图形学实验4实验报告

计算机图形学实验4实验报告

《计算机图形学》实验4实验报告实验题目:参数曲线绘制实验内容:1 圆的参数曲线绘制。

2显式数学曲线描绘程序。

3贝赛尔曲线绘制。

编写程序调用验证之。

参考资料:1 circleParam.java2 explicitCurve.java3 BezierLine.java4 数学曲线绘制.ppt和实验3的参考ppt基本概念:1、圆的参数曲线绘制:圆的参数曲线绘制就是按照圆的定义,利用步长,得在显示域上每一点的位置,然后绘制。

圆是图形中经常使用的元素,圆被定义为所有离一中心位置(xc,yc)距离为给定值R的点集。

2、显示数学曲线描绘程序:显示曲线的绘制就是在已知的坐标系上,按照方程要求在固定的点画点,然后连接成一条线。

3、贝塞尔曲线的绘制:贝赛尔曲线的每一个顶点都有两个控制点,用于控制在顶点两侧的曲线的弧度。

它是应用于二维图形应用程序的数学曲线。

曲线的定义有四个点:起始点、终止点(也称锚点)以及两个相互分离的中间点。

滑动两个中间点,贝塞尔曲线的形状会发生变化。

算法设计:1、圆的算法设计:本例程体现的主要是圆的快速算法,这里的主要算法是:X=Xc +RcostY=Yc+Rsint 0<t≤2t是圆的某一点与X轴之间的夹角。

Xc和Yc分别是圆的中心,以上一个终点为下一个的起点。

改变t的值,就可以得到一个圆。

体现在代码中就是://圆的参数曲线x=f(t)private double fx(double t) {return Math.cos(t)+0.2;}//圆的参数曲线y=f(t)private double fy(double t) {return Math.sin(t)+0.2;}2、显示数学曲线绘制:利用微分方法进行绘制,将曲线x轴分割成足够小的间距,利用绘制的公式计算出每一个x所对应的y的坐标,然后在该坐标上画点(本程序绘制函数y=x*x-x-2)数图像从x=-4.0开始绘制,分割间距为0.05,即从x=-4.0绘制到x=4.0要走过160步,在该程序中用变量x表示开始绘图的x坐标,用变量deltaX表示每次分割的最小长度,即步长,利用所绘制的公式计算出y轴坐标,然后利用循环绘制出函数图像,体现在代码中就是://描绘曲线y=x^2-x-2private double f(double x) {return (x-2)*(x+1);}3、绘制:绘制分为两部分,一部分是节点的绘制,一部分是曲线线段的绘制,在该程徐序中定义了8个节点坐标,然后在该节点上绘制一个实心圆(红色表示),再绘制直线连接每两个相邻节点,共计8个节点7条线段,再利用微分的思想,将该范围内的x轴切分,该程序中是以变量t表示,切分大小为0.01,利用公式求解出对应的y轴坐标,然后利用绘制短直线的方法绘制相邻两个点之间的线段(蓝色表示),最后从最左节点绘制到最右节点坐标后结束绘制。

实验报告四bezier曲线

实验报告四bezier曲线

实验四Bezier曲线的绘制1. 实验目的练习Bezier曲线的绘制和de Casteljau算法。

2. 实验内容和要求按要求完成如下一个作业,提交纸质实验报告,同时提交实验报告和代码的电子版。

实现Bezier曲线的de Casteljau递推算法,能够对任意介于0和1之间的参数t计算Bezier曲线上的点,然后依次连接这些点生成Bezier曲线。

要求:对[0,1]参数区间进行100等分。

控制点的数目至少为5个,即Bezier曲线的次数不低于4次。

de Casteljau算法用一个函数单独实现。

绘制Bezier曲线的同时还要绘制其控制多边形。

至少绘制两条Bezier曲线,具有不同的次数,颜色和曲线宽度。

3.算法描述Bezier Curve(贝塞尔曲线)是应用于二维图形应用程序的数学曲线。

曲线定义:起始点、终止点、控制点。

通过调整控制点,贝塞尔曲线的形状会发生变化。

1962年,法国数学家Pierre Bezier第一个研究了这种矢量绘制曲线的方法,并给出了详细的计算公式,因此按照这样的公式绘制出来的曲线就用他的姓氏来命名,称为贝塞尔曲线。

以下公式中:B(t)为t时间下点的坐标;P0为起点,Pn为终点,Pi为控制点。

一阶贝塞尔曲线如下,意义由 P0 至 P1 的连续点,描述的是一条线段:二阶贝塞尔曲线(抛物线:P1-P0为曲线在P0处的切线):原理:由 P0 至 P1 的连续点 Q0,描述一条线段。

由 P1 至 P2 的连续点 Q1,描述一条线段。

由 Q0 至 Q1 的连续点 B(t),描述一条二次贝塞尔曲线。

4. 源程序代码#include<C:\Include\GL\glut.h>#include<stdlib.h>#include<math.h>GLsizei winWidth = 600, winHeight = 600;GLfloat xwcMin = -150.0, xwcMax = 150.0;GLfloat ywcMin = -300.0, ywcMax = 300.0;class wcPt3D{public:GLfloat x, y, z; };void init(){glClearColor(1.0, 1.0, 1.0, 1.0); }void plotPoint(wcPt3D bezCurevePt){glBegin(GL_POINTS);glVertex2f(bezCurevePt.x, bezCurevePt.y);glEnd(); }void binomiaCoeffs(GLint n, GLint * C){GLint k, j;for (k = 0; k <= n; k++)C[k] = 1;for (j = n; j >= k + 1; j--)C[k] *= j;for (j = n - k; j >= 2; j--)C[k] /= j; }void computeBezPt(GLfloat u, wcPt3D * bezPt, GLint nCtrlPts, wcPt3D *CtrlPts, GLint *C){ GLint k, n = nCtrlPts - 1;GLfloat bezBlendFcn;bezPt->x = bezPt->y = bezPt->z = 0.0;for (k = 0; k<nCtrlPts; k++){bezBlendFcn = C[k] * pow(u, k) * pow(1 - u, n - k);bezPt->x += CtrlPts[k].x * bezBlendFcn;bezPt->y += CtrlPts[k].y * bezBlendFcn;bezPt->z += CtrlPts[k].z * bezBlendFcn; } }void bezier(wcPt3D * ctrlPts, GLint nCtrlPts, GLint nBezCurvePts){wcPt3D bezCurvePt;GLfloat u;GLint *C, k;C = new GLint[nCtrlPts];binomiaCoeffs(nCtrlPts - 1, C);for (k = 0; k <= nBezCurvePts; k++){u = GLfloat(k) / GLfloat(nBezCurvePts);computeBezPt(u, &bezCurvePt, nCtrlPts, ctrlPts, C);plotPoint(bezCurvePt); }delete[]C; }void displayFcn(void){GLint nCtrlPts = 5, nCtrlPts2 = 6, nBezCurvePts = 1000;wcPt3D ctrlPts[5] = { { -135.0, -59.0, 0.0 }, { -59.0, 95.0, 0.0 }, { 0.0, -40.0, 0.0 }, { 70.0, 120.0, 0.0 }, { 78, -125.0, 0.0 } };wcPt3D ctrlPts2[6] = { { -118.0, 20.0, 0.0 }, { -85.0, 45.0, 0.0 }, { -26.0, -126.0, 0.0 }, { 38.0, 88.0, 0.0 }, { 58.0, 188.0, 0.0 }, { 108.0, 98.0, 0.0 } }; glClear(GL_COLOR_BUFFER_BIT);glPointSize(6);glColor3f(0.0, 1.0, 1.0);bezier(ctrlPts, nCtrlPts, nBezCurvePts);glPointSize(5);glColor3f(1.0, 0.0, 1.0);bezier(ctrlPts2, nCtrlPts2, nBezCurvePts);glColor3f(0.0, 0.0, 1.0);glBegin(GL_LINES);glVertex2f(-135.0, -59.0);glVertex2f(-59.0, 95.0);glVertex2f(-59.0, 95.0);glVertex2f(0.0, -40.0);glVertex2f(0.0, -40.0);glVertex2f(70.0, 120.0);glVertex2f(70.0, 120.0);glVertex2f(78.0, -125.0);glVertex2f(-118.0, 20.0);glVertex2f(-85.0, 45.0);glVertex2f(-85.0, 45.0);glVertex2f(-26.0, -126.0);glVertex2f(-26.0, -126.0);glVertex2f(38.0, 88.0);glVertex2f(38.0, 88.0);glVertex2f(58.0, 188.0);glVertex2f(58.0, 188.0);glVertex2f(108.0, 98.0);glEnd();glFlush(); }void winReshapeFcn(GLint newWidth, GLint newHeight){glViewport(0, 0, newWidth, newHeight);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(xwcMin, xwcMax, ywcMin, ywcMax);glClear(GL_COLOR_BUFFER_BIT); }void main(int argc, char *argv[]){glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowPosition(50, 50);glutInitWindowSize(winWidth, winHeight);glutCreateWindow("yxl 实验四 Bezier曲线");init();glutDisplayFunc(displayFcn);glutReshapeFunc(winReshapeFcn);glutMainLoop(); }5. 实验结果6.实验体会最后一次实验报告了,老师要求我们做Bezier曲线,需要我们对函数去理解的一次实验,对于数学比较差的我来说还是很有困难的,理解起来比较吃力。

数学实验报告 (1)

数学实验报告 (1)

数学实验报告四实验项目名称MATLAB基础所属课程名称数学实验实验日期2012-10-10姓名(学号)周星(2010190135)成绩数学与计算科学学院数学实验室一、 实验目的1. 掌握使用plot 绘制二维图形;2. 掌握分段函数绘制;3. 掌握绘制图形的辅助操作二、 实验环境(使用软件)MATLAB V6.5三、 实验内容1. 设23sin (0.5)cos 1x y x x =++,在0~2x π=区间取等间隔101个点,绘制函数的曲线。

2. 在02x π≤≤区间内,绘制曲线0.52sin(2)x y e x π-=。

3. 生成10000×1的正态随机数矩阵,绘制直方图,要求30×1个长条。

4. 绘制曲线2cos(3)sin x t t t y t t ππ=⎧-≤≤⎨=⎩5. 已知21y x =,2cos(2)y x =,312y y y =⨯,[10,10]x ∈-完成下列操作:(1) 在同一坐标系下用不同颜色和线型绘制三条曲线,并在右上角给加入曲线说明;6. 绘制分段函数曲线04246()568218x x f x x x x ≤<≤<⎪⎪=⎨-≤<⎪⎪≥⎪⎩ 要求:(1)设置坐标轴范围为:横坐标范围为[0,10],纵坐标范围为[0,2.5]; (2)给图形加上标题“分段函数曲线”; (3)给X,Y 轴分别添加说明“Variable X ”和”Variable Y ” (4)用鼠标在给分段曲线每段添加图形说明四、 实验解答1.解:x=linspace(0,2*pi,100);>> y=(0.5+3*sin(x)/(1+x.^2))*cos(x);>> plot(x,y,'o-')2.解:x=linspace(0,2*pi);>> y=2*exp(-0.5*x).*sin(2*pi*x); >> plot(x,y)>> hist(x,30);4.解:>> t=linspace(-pi,pi); >> x=t.*cos(3*t);>> y=t.*sin(t).^2;plot(x,y)>> y1=x.^2;>> y2=cos(2*x);>> y3=y1.*y2;>> plot(x,y1,'b-');>> hold on;>> plot(x,y2,'g:');>> plot(x,y3,'r-.');>> hold off;>> legend('x.^2','cos(2*x)','y1.*y2');x=linspace(-10,10);6.解:x=linspace(0,4);>> plot(x,sqrt(x));>> hold on;>> x=linspace(4,6);>> plot(x,2);>> x=linspace(6,8);>> plot(x,5-x/2);>> x=linspace(8,10);>> plot(x,1);>> hold off;>> xlabel('Variable X');>> ylabel('Variable Y ');>> title('分段函数曲线');>> axis([0,10,0,2.5]);>>gtext('y=sqrt(x)');gtext('y=2');gtext('y=5-x/2');gtext('y=1');。

实验五 曲线曲面可视化(必做)

实验五 曲线曲面可视化(必做)

注:按要求用五号宋体填写各项,每项页面大小可自行添减
2
数 学 实 验 报 告
日期:2012 年 月 班级 实验 名称 10 级数教班 姓名 曲线曲面可视化 学号 日
实验目的: 1.通过绘制一些特殊函数的图形,更加深入地理解相关函数的性质,了解函数的 性态。 2.绘制部分含参数函数的曲线,了解函数表达式中参数的几何意义。 实验内容(要点) :1.在同一坐标系系下画出 y 0.2e0.1x sin 0.5x 和 y 0.2e0.1x cos0.5x 在 区间 [0, 2 ] 的图形. 2. 在同一坐标平面内,取参数 a=1,1.5,2,2.5,3,绘制不同摆线
x a(t sin t ) ,0 t 2 y a(1 cos t )
观察参数 a 对摆线的影响。 3. 画出曲线 f ( x) cos xe2sin x sin xe2cos x , x [10,10] .要求: (1)观察该函数在已知区间上有几个零点,有几个极值点? (2)编制程序求出函数在已知区间[-5,5]上的最大值点和最大值。 4. 在极坐标系下绘制心形线 4(1 cos ), 0 2 和对数螺线 e0.1 ,0 8 . 5.绘制三维螺旋线: x 2cos t , y 2sin t , z 0.5t , t [0,10 ] . 6.绘制曲面 z sin xy, x, y [2, 2] 的网格图和表面图. 7.绘制马鞍面 z x 2 y 2 的图形和旋转抛物面 z x 2 y 2 的图形. 实验所用软件及骤、主要程序清单、结果及异常情况记录与改正、学习总结等) :
教师评语与评分: 态度很(比较\还算\不)认真 方法掌握熟练(好\较好\一般\不好) 实验量大(较大\少) 实验难度高(较高\一般\较低) 结果完全(大部分\小部分)正确 A\B\C\D\E

实验2(曲线曲面的可视化)

实验2(曲线曲面的可视化)

MATLAB
示例2:程序(方法2)
MATLAB
clear;clc;clf; theta=0:pi/50:2*pi; for a=0.5:0.5:4.5; X=cos(theta).*a; Y=sin(theta).*sqrt(25-a.^2); plot(X,Y),axis('equal'),xlabel('x'), ylabel('y'); hold on end title('A set of Ellipses')
镂空
示例5
示例5:程序
clear;clc;clf; x=-2:0.01:2;y=x; [mx,my]=meshgrid(x,y); mz=mx.^2+my.^2; subplot(1,2,1) mesh(mx,my,mz), shading interp,colormap(hot) iz=find(mz>4); mz(iz)=NaN; subplot(1,2,2) surf(mx,my,mz),shading interp
ezmesh(f)
cylinder(R,N)
图形处理
在图形上加格栅、图例和标注 定制坐标 图形保持 分割窗口
图 形 处 理
缩放图形
改变视角 动 画
参数图形
示例1
示例1:程序
MATLAB
clear;clc;clf;hold on t=0:0.01:2*pi; a=1:0.5:3;m=length(a); for k=1:m x=a(k)*(t-sin(t)); y=a(k)*(1-cos(t)); [y1,t1]=max(y); x1=a(k)*(t(t1)-sin(t(t1))); plot(x,y) text(x1,y1,['a=' num2str(a(k))]) end hold off

实验曲线绘制方法

实验曲线绘制方法

实验曲线绘制方法在科学实验中,曲线绘制是至关重要的一个环节。

它帮助我们理解实验数据,并从中得出结论。

以下是一个基本的实验曲线绘制流程,主要包含以下六个方面:1. 数据收集在进行实验之前,需要明确实验目的和实验设计。

然后,根据实验设计采集数据。

数据可以是实验过程中直接测量的量,也可以是通过计算得出的量。

确保数据的准确性和可靠性是至关重要的。

2. 数据处理收集到数据后,需要进行预处理和分析。

这包括数据清洗、缺失值处理、异常值处理、数据转换等。

数据处理可以帮助我们提取有用的信息,为后续的曲线绘制做准备。

3. 绘制曲线根据处理后的数据,选择合适的图形类型进行绘图。

常见的图形类型包括折线图、散点图、柱状图等。

在选择图形类型时,需要考虑数据的特性和实验目的。

例如,如果数据具有相关性,可以选择折线图;如果数据分布不规律,可以选择散点图。

4. 曲线标注在绘制好曲线后,需要对曲线进行标注。

标注包括图形的标题、坐标轴标签、图例等。

这些标注可以帮助读者更好地理解图形。

此外,还可以添加文本框或注释,对图形中的特殊点或区域进行解释。

5. 误差分析误差分析是实验过程中必不可少的一个环节。

它可以帮助我们评估实验结果的可靠性和准确性。

在绘制曲线时,需要将误差考虑在内,并使用误差线或误差棒来表示误差范围。

这有助于展示数据的可信程度和实验的精度。

6. 结果分析在完成曲线绘制和误差分析后,需要对结果进行分析。

根据实验目的和预期结果,对实际曲线进行评估。

如果结果符合预期,那么可以得出结论并解释原因。

如果结果不符合预期,那么需要重新审视实验过程并重新采集数据。

此外,还可以使用统计方法来评估实验结果的可信程度和显著性水平。

几何画板实验七曲线图像的绘制

几何画板实验七曲线图像的绘制

实验报告数计学院数学与应用数学专业 夏艳红 105012011088【实验名称】:曲线图像的绘制(续)【实验目的】:进一步掌握特殊要求的函数图像的绘制方法。

能熟练应用轨迹的思想绘制曲线图形。

【实验步骤】:一、如图,已知y 轴两定点A ,B 。

点C 在X 轴求,作出∠ACB 随C 点横坐标变化的图像1、新建画板,建立一个矩形网格的直角坐标系,在y 轴上做两点A 、B ,x 轴上任做一点C2、度量点C 的横坐标,度量∠ACB ,依次选择度量值X c 和m ∠ACB ,以(X c ,m ∠ACB )为坐标绘制出点D ;3、同时选中点C 、D,绘制轨迹,由实验图像如下图所示:二、作出 1、新建画板,建立一个矩形网格的直角坐标系,在x 轴上取两点A,B ,并分别度量其横坐标记为a,b.2、作一个单位圆,取一角度CDE,将其转化为以弧度度量,并度量出为参数,θθθs ec tan {a x b y ==其弧度,并且求出其tan和sec值。

3、分别计算出X=a·secθ,Y=b·tanθ,坐出该点在坐标轴上所对应的点F,再以C点为主动点,F点为被动点,作出轨迹。

三、教材P103:1(3)1、在x轴上任取一点A,度量并标记其横坐标为k2、新建函数y=sin(k·sinx),绘制新函数的图象。

实验图像如下图所示:四、教材P104:1(4)1、新建画板,建立一个极坐标网格的直角坐标系,新建参数k,定义k的值。

2、新建函数r=sin(k·sinθ),绘制新函数的图象。

五、教材P105:41、新建画板,建立一个极坐标系,设定极点标签为0,单位点加注标签B ;2、用画圆工具做单位圆,并画出半径OC ;用选择工具先后选择点B 、C 、单位圆做圆弧BC ,度量弧度角BOC ;3、按住shift 键做射线DE ,并做出射线上的点F ;度量线段DF 、DE 的距离,计算出DF/DE 的值;隐藏点E ,将DF/DE 的标签改为e ;4、按住shift 键做射线GH ,并做出射线上的点I ;度量线段GI 的距离,将度量值GI 的标签改为p ;5、隐藏点H ,用计算器带入公式θρcos 1e ep -=计算极径长;依次选择 计算值θρcos 1e ep -=、弧度角BC (即为θ)绘制出点J ; 6、同时选择点C 、J 做轨迹,将线形设置为粗线。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称数学实验成绩评定
实验项目名称曲线绘制
【实验目的】
1.了解曲线的几种表示方式。

2.学习、掌握MA TLAB软件有关的命令。

【实验内容】
绘制下列四种曲线:
1.以直角坐标方程y=sin x,y=cos x表示的正、余弦曲线。

2.以参数方程x=cos t,y=sin t,t∈[0,2π]表示的平面曲线(单位圆)。

3.以参数方程x=e−0.2t cosπ
2t,y=π
2
e−0.2t sin t,z=t,t∈[0,20]表示的空间曲线。

4.作出摆线的图形。

5.做出以参数方程x=e−0.25t cosπ
2t,y=e−0.25t sinπ
2
t,z=t,t∈[0,30]表示的空间曲线。

6.以极坐标方程r=a(1+cosϕ),a=1,ϕ∈[0,2π]表示的心脏线。

7.绘制极坐标系下曲线 ρ=acos (b+nθ)的图形,讨论参数a、b和n对其图形的影响。

8.(曲线族绘制)三次抛物线的方程为y=ax3+cx,讨论参数a和c对其图形的影响。

【实验方法与步骤】
练习1做出函数y=sin x,y=cos x的图形,并观察它们的周期性。

MATLAB代码及结果如下:
>> x=0:0.01*pi:4*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,'b',x,y2,'r');
legend('y=sin(x)','y=cos(x)','location','best');
axis([0 4*pi -1 1])
绘制结果如下图:
y=sin x,y=cos x的图形如上图,两个函数的周期皆为2π
练习2设y=√3
2e−4t sin(4√3t+π
3
),要求以0.01秒为间隔,求出y的151个点,绘出y及
其导数的图形。

MATLAB代码及结果如下:
dt=0.01;
t=0:0.01:1.5;
w=4*sqrt(3); %设定频率
y=sqrt(3)/2*exp(-4*t).*sin(w*t+pi/3);
Dy=diff(y)/dt; %求导
for i =1:length(t)-1
t1(i)=t(i);
end
subplot(2,1,1);
plot(t,y);
xlabel('时间t');
ylabel('y(t)');
grid
subplot(2,1,2);
plot(t1,Dy);
xlabel('时间t');
ylabel('Dy(t)'' ');
grid
绘制结果如下图:
练习3做出以参数方程x=cos t,y=sin t,t∈[0,2π]表示的平面曲线(单位圆)。

MATLAB代码及结果如下:
>> t=0:0.01*pi:2*pi;
x=cos(t);
y=sin(t);
plot(x,y);
绘制结果如下图:
练习4做出摆线的图形。

当圆轮在平面上滚动时,其圆面上任意一点所画出的轨迹称为摆线。

如果这一点在圆内,则生成内摆线;如果该点在圆外,则生成外摆线。

后一种情况,可以想象成火车车轮,
其接触轨道的部分并不是其直径最大处,直径的最大处在内侧,以防止车轮左右出轨,在这边缘部分的点就画出外摆线。

概括这几种情况,设r为圆轮半径,R为点半径,其通用方程可表示为x A=rt−R sin t,y A=r−R cos t,可由这组参数方程分析其轨迹。

作法一:MATLAB代码及结果如下:
t=1:0.1:10;
r=input('r=');
R=input('R=');
x=r*t-R*sin(t);
y=r-R*cos(t);
hold on ;
plot(x,y),axis('equal')
r=>> 1
R=2
r=>> 1
R=1
r=>> 1
R=0.5
绘制结果如下图:
蓝色(上面)为外摆线,红色(中间)为摆线,黄色(下面)为内摆线------------------------------------------------------------------------------------------------------------
作法二:(1)当r=R时
>> r=3;
x=r*t-r*sin(t);
y=r-r*cos(t);
plot(x,y,'b')
hold on
r=5;
x=r*t-r*sin(t);
y=r-r*cos(t);
plot(x,y,'y')
set(gca,'YLim',[-15,25]) (2)当R<r时
R=3;
x=r*t-R*sin(t);
y=r-R*cos(t);
plot(x,y,'g')
R=1;
x=r*t-R*sin(t);
y=r-R*cos(t);
plot(x,y,'r')
(3)当R>r时
R=8;
x=r*t-R*sin(t);
y=r-R*cos(t);
plot(x,y,'m')
R=15;
x=r*t-R*sin(t);
y=r-R*cos(t);
plot(x,y,'k');
grid on
练习5做出以参数方程x=e−0.25t cosπ
2t,y=e−0.25t sinπ
2
t,z=t,t∈[0,30]表示的空间曲
线。

MATLAB代码及结果如下:
t=0:0.01:30;
x=exp(-0.25*t).*cos(pi*t/2);
y=exp(-0.25*t).*sin(pi/2*t);
z=t;
plot3(x,y,z);
title('Space line');
text(x(1),y(1),z(1),'Start');
n=length(x);
text(x(n),y(n),z(n),'End');
xlabel('X');
ylabel('Y');
zlabel('Z');
legend('Cone line');
grid on;
绘制结果如下图:
练习6做出以极坐标方程r=a(1.2+cosφ),a=1,φ∈[0,2π]表示的心脏线。

MATLAB代码及结果如下:
t=0:0.01*pi:2*pi;
r=1.2+cos(t);
x=r.*cos(t);
y=r.*sin(t);
plot(x,y)
绘制结果如下图:
练习7绘制极坐标系下曲线ρ=acos (b+nθ)的图形,讨论参数a、b和n对其图形的影响。

MATLAB代码及结果如下:
theta=0:0.1:2*pi;
for i=1:2
a(i)=input('a=');
b(i)=input('b=');
n(i)=input('n=');
rho(i,:)=a(i)*cos(b(i)+n(i)*theta);
subplot(1,2,i);
polar(theta,rho(i,:));
end
>> a=2,b=pi/4,n=2
a=2,b=0,n=3
绘制结果如下图:
左图为4叶玫瑰线,右图为3叶玫瑰线
练习8(曲线族绘制)三次抛物线的方程为y=ax3+cx,讨论参数a和c对其图形的影响。

MATLAB代码及结果如下:
x=-2:0.1:2;
subplot(1,2,1);
for c=-3:3
plot(x,x.^3+c*x) %a=1,c=3:3
hold on
end
grid
axis('equal');
axis([-2 2 -3 3]);
gtext('c=3');
gtext('c=0');
gtext('c=-3');
subplot(1,2,2);
for a=-3:3
plot(x,a*x.^3+x);
hold on
end
grid
axis([-2 2 -3 3]);
gtext('a=3');
gtext('a=0');
gtext('a=-3');
绘制结果如下图:
【结果分析】
1)在编写MA TLAB程序代码时,要注意点乘的使用,以免出错。

2)Subplot可以在一个窗口中绘制多个图形。

3)plot中第三个参数是对颜色和线型的控制;
4)用linspace和直接生成数组方法画出的图没有区别;
5)学习了极坐标的画法;。

相关文档
最新文档