太原理工大学数值计算方法实验报告
数值计算方法实验报告(含所有)
本科实验报告
课程名称:计算机数值方法实验项目:计算机数值方法实验实验地点:
专业班级:学号:
学生姓名:xxx
指导教师:xxx
太原理工大学学生实验报告
学院名称软件学院专业班级1217班学号201200xxxx 学生姓名xx 实验日期2014.05.21 成绩
课程名称数值计算方法实验题目实验一方程求解
一、实验目的和要求
熟悉使用、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:二分法f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-x n|<0.5×10-5
二、主要设备
笔记本 HP ProBook 6470b 一台
编译软件:VC++6.0
三、实验内容和原理
函数f(x)在区间(x,y)上连续,先在区间(x,y)确定a与b,若f(a),f(b)异号,说明在区间(a,b)内存在零点,然后求f[(a+b)/2]。
假设F(a)<0,F(b)>0,a<b,
①如果f[(a+b)/2]=0,该点即为零点;
②如果f[(a+b)/2]<0,则区间((a+b)/2,b)内存在零点,(a+b)/2≥a;
③如果f[(a+b)/2]>0,则区间(a,(a+b)/2)内存在零点,(a+b)/2≤b;
返回①重新循环,不断接近零点。通过每次把f(x)的零点所在区间收缩一半的方法,使区间内的两个端点逐步逼近函数零点,最终求得零点近似值。
四、操作方法与实验步骤
1. 二分法:
#include<stdio.h>
#include<stdlib.h>
数值计算方法实验报告
数值计算方法实验报告
一、实验介绍
本次实验是关于数值计算方法的实验,旨在通过计算机模拟的方法,实现对于数值计算方法的掌握。本次实验主要涉及到的内容包括数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等。
二、实验内容
1. 数值微积分
数值微积分是通过计算机模拟的方法,实现对于微积分中的积分运算的近似求解。本次实验中,我们将会使用梯形公式和辛普森公式对于一定区间上的函数进行积分求解,并比较不同公式的计算误差。
2. 线性方程组的求解
线性方程组求解是数值计算领域中的重要内容。本次实验中,我们将会使用高斯消元法、LU分解法等方法对于给定的线性方程组进行求解,并通过比较不同方法的计算效率和精度,进一步了解不同方法的优缺点。
3. 插值与拟合
插值与拟合是数值计算中的另一个重要内容。本次实验中,我们将会使用拉格朗日插值法和牛顿插值法对于给定的数据进行插值求解,并使用最小二乘法对于给定的函数进行拟合求解。
4. 常微分方程的数值解
常微分方程的数值解是数值计算中的难点之一。本次实验中,我们将会使用欧拉法和龙格-库塔法等方法对于给定的常微分方程进行数值解的求解,并比较不同方法的计算精度和效率。
三、实验结果
通过本次实验,我们进一步加深了对于数值计算方法的理解和掌握。在数值微积分方面,我们发现梯形公式和辛普森公式都能够有效地求解积分,但是辛普森公式的计算精度更高。在线性方程组求解方面,我们发现LU分解法相对于高斯消元法具有更高的计算效率和更好的数值精度。在插值与拟合方面,我们发现拉格朗日插值法和牛顿插值法都能够有效地进行插值求解,而最小二乘法则可以更好地进行函数拟合求解。在常微分方程的数值解方面,我们发现欧拉法和龙格-库塔法都能够有效地进行数值解的求解,但是龙格-库塔法的数值精度
计算数值方法实验报告..
课程名称:计算机数值方法
实验项目:方程求根,线性方程组的直接解法与迭代解法,代数插值,最小二乘法拟合多项式
实验地点:逸夫楼402
专业班级:学号:
学生姓名:
指导教师:***
2012年4月26日
太原理工大学学生实验报告
}
3.追赶法
五、实验数据记录和处理
1.二分法
2..牛顿法
六、实验结果与分析
通过这个两个程序可看出,二分法的计算量更大一些。
七、讨论、心得
通过这个实验,我了解了线性方程的一些求根方法,对于方程近似值的求解有了更多的理解。
太原理工大学学生实验报告
for(i=1;i<=n;++i)
{
y[i] = b[i];
for(j=1;j<i;++j)
{
y[i]-=l[i][j]*y[j];
}
}
for(i=n;i>0;--i)
{
x[i] = y[i];
for(j=i+1;j<=n;++j)
{
x[i]-=u[i][j]*x[j];
}
x[i]/= u[i][i];
}
for(i=1;i<=n;++i)
{
printf("%0.2lf\n",x[i]);
}
return 0;
}
五.实验数据记录和处理1.高斯
2.LU分解
六、实验结果与分析
本次实验数据较多,在输入上要多费点功夫,一不小心就全部都错了。在今后编程过程中,一定要小心谨慎。
七、讨论、心得
通过本次实验,我深刻理解了直接法在计算机上解线性方程组的有效性,对于Gauss消元法、LU分解法也有了深刻的理解。
实验地点逸夫楼402指导教师于亚男
太原理工大学学生实验报告
学院名称软件学院专业班级学号
学生姓名实验日期4月26日成绩
课程名称计算机数值方法实验题目线性方程组的迭代解法
太原理工大学算法实验报告汇编
本科实验报告
课程名称:算法设计与分析
实验项目:算法设计与分析实验实验地点:致远楼403
专业班级:学号:学生姓名:
指导教师:
2017年 3 月28日
}
五、实验结果截图
计算数值实验报告(太原理工大学)
本科实验报告
课程名称:计算数值方法
实验地点:综合楼五层506室
专业班级:计科1002 学号:2010001414 学生姓名:xxx
指导教师:王峥
2012 年 6 月20
太原理工大学学生实验报告
2,)
内有零点,反之在(a,(a+b)/2
printf("%5d %5f %5f %5f %5f\n",i,a,b,x,fx);
i++;
if(fx==0) break;
if(fx>0) b=x;
else if(fx<0) a=x;
if((b-a)<l)
break; //进行计算并返值
}while(1);
}
六、结果讨论和分析
二分法:
迭代法:
太原理工大学学生实验报告
六、结果讨论和分析
Gauss消元法:列主元素消元法:
LU分解法:追赶法:
太原理工大学学生实验报告
分析讨论:
其实,这两个迭代法是之前迭代法的升级,多了几个迭代式子而已,而且两者相差不大比较简单,所以选择了雅克比迭代法进行求解,但是没有与另一种方法高斯赛德尔迭代法进行实质性的比较。
流程图:
实验地点综合楼五层506室指导教师王峥
太原理工大学学生实验报告
六、结果讨论和分析
分析讨论
由于该程序将A矩阵和x0的值编写在程序中,所以要想修改成其他矩阵时比较麻烦,所以也有一定的局限性。幂法是一种求任意矩阵A的按模最大特征值及其对应特征向量的迭代算法。该方法的最大优点是计算简单,容易在计算机上实现,对稀疏矩阵较为适合,但有时收敛速度很慢。
流程图:
实验地点综合楼五层506室指导教师王峥
太原理工大学学生实验报告
for(int i=1;i<=n;i++)
太原理工大学数据库实验报告
本科实验报告
课程名称:数据库系统概论
实验项目:交互式SQL、数据完整性、用户鉴别与数据控制
实验地点:致远楼B503
专业班级:软件1229班学号:29
学生姓名:***
指导教师:***
2014年3 月18 日
一、实验目的和要求
熟悉通过SQL 对数据库进行操作。
二、实验内容和原理
1.在RDBMS 中建立一个学生-课程数据库,进行实验所要求的各种操作,所有的SQL 操作均在此建立的新库里进行。
2.根据以下要求认真进行实验,记录所有的实验用例及执行结果。
数据定义:基本表的创建、修改及删除;索引的创建和删除。
数据操作:完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询);完成各类更新操作(插入数据,修改数据,删除数据)。
视图的操作:视图的定义(创建和删除),查询,更新(注意更新的条件)。
三、主要仪器设备
操作系统:Windows 7。
数据库管理系统:SQL Server2008。
四、操作方法与实验步骤实验数据记录实验结果
(一)数据定义:
一.基本表的操作
1.建立基本表
1)创建学生表Student,由以下属性组成:学号Sno(char 型,长度为9,
主码),姓名Sname(char 型,长度为20,唯一),性别Ssex(char 型,
长度为2),年龄(smallint),所在系(char 型,长度为20)。
create table Student
(Sno char(9) primary key,
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20));
太原理工大学数据结构实验报告
本科实验报告
课程名称:数据结构
实验项目:线性结构、树形结构、图结构、查找、排序实验地点:行知楼A210
专业班级:服工1302班学号:2013006828 学生姓名:董倩
指导教师:
2015年 1 2 月24 日
线性结构
一、实验目的和要求
本次实习的主要目的是为了使学生熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现,提高分析和解决问题的能力。要求仔细阅读并理解下列例题,上机通过,并观察其结果,然后独立完成后面的实习题。
二、实验内容和原理
习题
[问题描述]
设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表仍然有序。
[输入]
顺序表的长度,初始化顺序表数据,插入数据X。
[输出]
已建立顺序表,输出插入X后的顺序表。
[存储结构]
采用顺序存储结构
[算法的基本思想]
建立顺序表(用数组的形式实现)。在表中从后往前查找要插入元素的位置,直到查找
到第一个比X小的数,并从表的最后一元素依次后移,把要插入元素插入搜查找位置。
三、主要仪器设备
使用的计算机惠普:硬件配置Win7、软件环境win-TC
四、操作方法与实验步骤
[习题源程序]
#include"stdio.h"
#define MAXSIZE 100
#define RIGHT 1
#define ERROR 0
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int last;
}SeqList;
void Initlist(SeqList *L)
{
L->last=-1;
太原理工大学学生实验报告
太原理工大学学生实验报告
图1-1
太原理工大学学生实验报告
图2-2 应变式传感器安装示意图
金属丝在外力作用下发生机械形变时,其电阻值会发生变化,这就是金属的电阻应变效应。金属的电阻表达式为:
l
S
ρ
= (1) 当金属电阻丝受到轴向拉力F 作用时,将伸长l ∆,横截面积相应减小S ∆,电阻率因晶格变
化等因素的影响而改变ρ∆,故引起电阻值变化R ∆。对式(1)全微分,并用相对变化量来表示,
图2-1应变式传感器信号调理实验电路图
图2-3 应变式传感器单臂电桥实验接线图
计算系统灵敏度W
∆
=/(U
S∆
U
∆输出电压的变化量,
∆(多次测量时为平均值)为输出值与拟合直线的最大×100%式中m
满量程输出平均值,此处为200g。
要在砝码盘上放置超过1kg的物体,否则容易损坏传感器。
,绝不可错接成±15V,否则可能烧毁应变片。
太原理工大学学生实验报告图3-1 应变式传感器半桥实验接线图
太原理工大学学生实验报告
图4-1 应变式传感器全桥实验接线图五、实验注意事项
要在砝码盘上放置超过1kg的物体,否则容易损坏传感器。
桥的电压为±5V,绝不可错接成±15V。
六、实验数据
太原理工大学学生实验报告
图5-2
图5-1圆柱形差动式电容传感器示意图图5-2圆柱形差动式电容传感器实验装置安装示意图。
电容式传感器调理模块的电路图如图5-3所示
图5-3
三、实验设备
THVZ-1型传感器实验箱、电容传感器、测微头、万用表(自备)、信号调理挂箱、电容式传感器调理模块。
四、实验步骤
1.将“电容传感器调理模块电路图”插放到相应的实验挂箱上,在确保上述模块插放无误后,从实验屏上接入实验挂箱所需的工作电源(电源的大小及正负极性不能接错);
数值计算方法实验1
学院(系)名称:
)
()
()()
(0101112x x x f x f x f x x ---
=
附录(源程序及运行结果):
一.二分法
#include
#include
double f(double x){
return x*x-x-1;
}
void main(){
float a=0,b=0,x=1,m,e;
int k;
while(f(a)*f(b)>0){
printf("请输入区间a,b的值。以及精度e\n");
scanf("%f,%f,%f",&a,&b,&e);
}
k=0;
if(f(a)*f(b)==0){
if(f(a)==0)
printf("使用二分法输出:a=%f,k=%d\n",a,k);
else
printf("使用二分法输出:b=%f,k=%d\n",b,k);
}
else{
while(f(a)*f(b)!=0){
m=(a+b)/2;
if(fabs(a-b)/2
printf("使用二分法输出:m=%f,k=%d\n",m,k);break;
}
else {if(f(a)*f(m)>0)
a=m;
else b=m;
k=k+1;
}
}
}
}
运行结果:
二.迭代法与牛顿迭代法
#include
#include
double f(double x){return exp(-x);}
double f1(double x){return (x*exp(x)-1);}
double ff(double x){return (exp(x)+x*exp(x));}
void diedaifa(double x0,double e,int N){
太原理工大学 数据库系统概论 实验报告 数据的完整性
本科实验报告
课程名称:数据库系统原理B 实验项目:数据的完整性
实验地点:
专业班级:学号:学生姓名:
指导教师:
201 年月日
一目的与要求
(1)了解SQL Serer数据库系统中数据完整性控制的基本方法
(2)熟练掌握常用CREATE 或ALTER 在创建或修改表时设置约束
(3)了解触发器的机制和使用
(4)验证数据库系统数据完整性控制
二实验设备与环境
使用SQL Server数据库管理系统提供的SSMS和查询编辑器
三实验内容、实验记录及实验结果与分析
结合ST数据库中的各个表,设置相关的约束,要求包括主键约束、外键约束、唯一约束、检查约束、非空约束等,掌握各约束的定义方法。
设置一个触发器,实现学生选课总学分的完整性控制,了解触发器的工作机制。
设计一些示例数据,验证完整性检查机制。
要求包括如下方面的内容:
1.创建基本表及约束
Student表
Course表
SC表
如下图所示表创建成功:
2.插入数据
(1)插入学生信息到Student表
(2).插入课程信息到Course表
(3)插入到SC表
(4)检查插入表中的数据
二、检查完整性约束
1.检查主键约束
(1)INSERT INTO Student VALUES('','李斌','男',20,'CS','1001',0) INSERT INTO Student VALUES('','李斌','男',20,'CS','1001',0)
UPDATE Student SET Sno='' WHERE Sname = '张立'
无法正确运行因为:违反了PRIMARY KEY 约束'PK__Student__CA1FE4647F60ED59'。不能在对象'dbo.Student' 中插入重复键。(2)INSERT INTO SC VALUES('','1',78)
数值计算方法实验报告
数值分析实验报告
实验一、解线性方程组的直接方法——梯形电阻电路问题
利用追赶法求解三对角方程组的方法,解决梯形电阻电路问题:
电路中的各个电流{1i ,2i ,…,8i }须满足下列线性方程组:
R V i i =- 22 21
0 252321=-+-i i i 0 252 432=-+-i i i 0 252 543=-+-i i i 0 252 654=-+-i i i 0 252 765=-+-i i i 0 252 876=-+-i i i 052 87=+-i i
设V 220=V ,Ω=27R ,运用追赶法,求各段电路的电流量。
问题分析:
上述方程组可用矩阵表示为:
⎥⎥⎥⎥
⎥⎥⎥⎥⎥⎥
⎥⎦⎤⎢
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------00
00
00
01481.852
25200000025200000025200000025200000025200000025
20000002287654321i i i i i i i i
问题转化为求解A x b =,8阶方阵A 满足顺序主子式(1,2...7)0i A i =≠,因此矩阵A
存在唯一的Doolittle 分解,可以采用解三对角矩阵的追赶法!
追赶法
a=[0 -2 -2 -2 -2 -2 -2 -2]; b=[2 5 5 5 5 5 5 5];
c=[-2 -2 -2 -2 -2 -2 -2 0]; d=[220/27 0 0 0 0 0 0 0];
数值计算方法上机实验报告
数值计算方法上机实验报告
实验目的:复习和巩固数值计算方法的基本数学模型,全面掌握运用计算机进行数值计算的具体过程及相关问题。利用计算机语言独立编写、调试数值计算方法程序,培养学生利用计算机和所学理论知识分析解决实际问题的能力。
上机练习任务:利用计算机基本C 语言编写并调试一系列数值方法计算通用程序,并能正确计算给定题目,掌握调试技能。
掌握文件使用编程技能,如文件的各类操作,数据格式设计、通用程序运行过程中文件输入输出运行方式设计等。
一、
各算法的算法原理及计算机程序框图
1. 列主元高斯消去法
算法原理:
高斯消去法是利用现行方程组初等变换中的一种变换,即用一个不为零的数乘一个方程后加只另一个方程,使方程组变成同解的上三角方程组,然后再自下而上对上三角方程组求解。
列选住院是当高斯消元到第k 步时,从k 列的kk a 以下(包括kk a )的各元素中选出绝对值最大的,然后通过行交换将其交换到kk a 的位置上。交换系数矩阵中的两行(包括常数项),只相当于两个方程的位置交换了,因此,列选主元不影响求解的结果。
●源程序:
#define N 200
#include "stdio.h"
#include "math.h"
FILE *fp1,*fp2;
void LZ()
{
int n,i,j,k=0,l;
double d,t,t1;
static double x[N],a[N][N];
fp1=fopen("a1.txt","r");
fp2=fopen("b1.txt","w");
fscanf(fp1,"%d",&n);
数值计算方法实验报告
数值计算方法实验报告
一、实验目的
本实验旨在通过Python语言编写数值计算方法程序,掌握常见数值计算方法的实现原理及应用。具体包括:插值法、最小二乘法、数值微积分、数值解方程、数值解微分方程等。
二、实验环境
Python编程语言、Jupyter Notebook环境
三、实验内容
1.插值法
(1)代码实现:在Python中使用Scipy库中的Interpolate模块实现拉格朗日插值法和牛顿插值法,并通过数据可视化展示其效果。
(2)实验步骤:
- 导入所需库,准备所需数据;
- 定义拉格朗日插值法函数;
- 定义牛顿插值法函数;
- 测试函数并可视化结果。
(3)实验结果:
2.最小二乘法
(1)代码实现:在Python中使用Numpy库实现最小二乘法,并通过数据可视化展示其效果。
(2)实验步骤:
- 导入所需库,准备所需数据;
- 定义最小二乘法函数;
- 测试函数并可视化结果。
(3)实验结果:
3.数值微积分
(1)代码实现:在Python中实现梯形法和辛普森法,并通过数据可视化展示其效果。
(2)实验步骤:
- 导入所需库,准备所需数据;
- 定义梯形法函数和辛普森法函数;
- 测试函数并可视化结果。
(3)实验结果:
4.数值解方程
(1)代码实现:在Python中实现二分法、牛顿法和割线法,并通过数据可视化展示其效果。
(2)实验步骤:
- 导入所需库,准备所需数据;
- 定义二分法函数、牛顿法函数和割线法函数;
- 测试函数并可视化结果。
(3)实验结果:
5.数值解微分方程
(1)代码实现:在Python中实现欧拉法和龙格-库塔法,并通过数据可视化展示其效果。
太原理工大学 matlab 实验报告 实验二 (4)
本科实验报告
课程名称:《Matlab电子信息应用》实验项目:基本操作和简单语句输入实验地点:虎裕校区图书馆
实验时间:2014.05.16
专业班级:通信1201班学号:
学生姓名:
指导教师:
实验报告
一、实验环境
计算机和MATLAB软件
二、实验目的
1.熟悉matlab的命令窗口
2.掌握matlab的一些基本操作,能够进行一般的数值计算。
3.实现语句的重调和修改。
四、实验内容与步骤
1.启动MATLAB.
2.观察MATLAB窗口的各个组成部分
(1)了解菜单栏各菜单项的功能,用鼠标打开MATLAB的各个菜单,在状态栏里显示当前鼠标所指的菜单项的含义。
(2)用鼠标指向常用工具栏的每个工具按钮,了解各工具按钮的含义。
3.命令窗口的打开和关闭
(1)查看菜单窗口中有哪些菜单命令。
(2)在命令窗口中输入命令a=3;b=4;y=a*b+a/b,然后回车,查看命令显示结果。
>> a=3;b=4;y=a*b+a/b,
y =
12.7500
(3)利用MATLAB中编辑命令行时常用的按键功能,调出上一个语句,对它进行修改(如把分号改成逗号,看运行结果),并把运行结果复制到word中保存。
>> a=3,b=4,y=a*b+a/b,
a =
3
b =
4
y =
12.7500
(4)关闭命令窗口。
(5)打开命令窗口。
4.使用MATLAB帮助
熟悉MATLAB的帮助系统,通过帮助系统了解有关内容。
5.在命令窗口中输入demo,将出现MATLAB的演示窗,通过演示窗,对MATLAB的功能进行一次浏览。
五、实验练习题目、过程、结果及分析
【太原理工大学现代科技学院】数字测控实习报告 (2)
{ opp(L); } continue; } else if(c==0) { printf(" exit(0); } }while(1); } 五、实验结果及分析 输入元素 :6 7 8 4 1 遍历元素顺序:6 7 8 4 1 删除元素值 4 删除元素顺序为 6 8 4 1 逆置的元素 1 4 8 6
p2->next=p1; p1->next=NULL; printf("请输入一个数字:\n"); scanf("%d",&p1->data); p2=p1; count++; printf("继续输入按: 1 返回按: 0\n"); scanf("%d",&flag); }while(flag==1); printf("你共输入了 %d 个元素.",count); printf("按任意键继续\n"); getch(); return(head); } void visit(Linklist head)/*遍历*/ { int i; Linklist p; p=head->next; for(i=1;i<=count;i++) { printf("%d\n",p->data); p=p->next; } printf("按任意键继续\n"); getch(); } void Dle(Linklist head)/*删除*/ { if(!head->next) printf("链表为空!请先输入元素值\n"); else { int e; Linklist p1,p2; p1=p2=head; printf("请输入一个要删除的元素值:\n"); scanf("%d",&e); while(p1->data!=e&&p1->next!=NULL) { p2=p1; p1=p1->next;
太原理工大学实验报告
太原理工大学实验报告
太原理工大学实验报告
太原理工大学,作为一所重点高校,一直以来致力于培养高素质的工科人才。
实验教学是培养学生创新能力和实践能力的重要环节之一。本文将以太原理工
大学实验报告为主题,探讨实验报告在学生学习中的重要性以及实验报告的写
作要点。
实验报告是实验课程的重要组成部分,通过实验报告的撰写,学生能够对实验
过程进行总结和归纳,进一步加深对实验原理和方法的理解。同时,实验报告
也是学生表达自己观点和思考的重要途径,培养学生的科学思维和逻辑思维能力。
那么,如何写好一份实验报告呢?首先,实验报告应该包括实验目的、实验原理、实验步骤、实验结果和实验结论等内容。在实验目的部分,要明确实验的
目标和意义,指导读者对实验有一个整体的了解。实验原理部分要简明扼要地
介绍实验所涉及的理论知识,让读者对实验原理有一个初步的认识。实验步骤
部分要详细描述实验的步骤和操作过程,以便读者能够复现实验。实验结果部
分要准确地记录实验数据和观察结果,可以采用表格、图表等形式进行展示。
实验结论部分要对实验结果进行分析和总结,得出科学的结论,并提出对实验
的改进意见。
另外,实验报告的写作还需要注意一些细节。首先,语言要准确、简洁,避免
使用口语化的表达方式。其次,要注意实验数据的精确性和可靠性,避免出现
错误的数据和结论。此外,实验报告还要注意排版和格式的规范性,包括页眉、页脚、标题、字体、行间距等。最后,还要注意实验报告的内容和结构的合理
性,避免出现冗长和重复的内容。
实验报告的写作不仅是一种技巧,更是一种思维方式的培养。通过实验报告的
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科实验报告
课程名称:计算机数值方法
实验项目:方程求根、线性方程组的直接解
法、线性方程组的迭代解法、代数插值和最
小二乘拟合多项式
实验地点:行勉楼
专业班级: ******** 学号: *********
学生姓名: ******** 指导教师:李誌,崔冬华
2016年 4 月 8 日
y = x*x*x + 4 * x*x - 10;
return y;
}
float Calculate(float a,float b)
{
c = (a + b) / 2;
n++;
if (GetY(c) == 0 || ((b - a) / 2) < 0.000005)
{
cout << c <<"为方程的解"<< endl;
return 0;
}
if (GetY(a)*GetY(c) < 0)
{
return Calculate(a,c);
}
if (GetY(c)*GetY(b)< 0)
{
return Calculate(c,b);
}
}
};
int main()
{
cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl;
float a, b;
Text text;
text.Getab();
a = text.a;
b = text.b;
text.Calculate(a, b);
return 0;
}
2.割线法:
// 方程求根(割线法).cpp : 定义控制台应用程序的入口点。//
#include "stdafx.h"
#include"iostream"
心得体会
使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。
2.LU分解法:
#include
#include
int i,j,k,r;
double m=0,p=0;
double a[3][3];
void lu(double a[3][3])
{
for(i=1;i<=2;i++)
{
if(a[0][0]!=0)
a[i][0]=a[i][0]/a[0][0];
}
for(k=1;k<=2;k++)
{
for(j=k;j<=2;j++)
{
{
for(r=0;r<=k-1;r++)
for(i=1;i<=2;i++)
{
for(r=0;r<=i-1;r=r+1)
m=m+a[i][r]*c[r];
c[i]=b[i]-m;
m=0;
}
d[2]=c[2]/f[2][2];
for(i=1;i>=0;i=i-1)
{
for(r=2;r>i;r=r-1)
n=n+f[i][r]*d[r];
d[i]=(c[i]-n)/f[i][i];
n=0;
}
printf("所求方程组解为x1=%f, x2=%f, x3=%f",d[0],d[1],d[2]); /*根据LU分解所得两个矩阵及求解步骤计算所求X一组解*/
}
心得体会
对于求解线性方程组的各种直接方法来说各有优缺点,在所有的求解方法中都应该注意其解的精度。注意不同求解方法的不同误差求法。编写程序的时候需要一步一步慢慢来,逐步增加自己的算法知识水平和解决问题的能力。
}
return0;
}
心得体会
在编写算法是不熟悉,查阅了很多资料,经过反复研究和试验后实现了题目的要求,使用雅克比迭代法和高斯-赛德尔都可以得到方程的解,但相比之下,高斯-赛德尔的迭代次数要比雅克比的迭代次数少,能够更快的达到所求的解的精度。
l+=y[i]*m;
m=1;
}
printf("结果为%lf",l);
return 0;
}
最小二乘法:
#include "stdio.h"
#include "math.h"
int main()
{double x[7]={0,0.5,0.6,0.7,0.8,0.9,1.0},
y[7]={1,1.75,1.96,2.19,2.44,2.71,3.00},
a0,a1,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,l,r; int m=6,i,k;
for(i=0;i<7;i++)
{
sum1+=x[i];
sum2+=x[i]*x[i];
sum3+=y[i];
sum4+=x[i]*y[i];
sum5+=y[i]*y[i];
}
l=sum1/(m+1);
a1=(sum4-l*sum3)/(sum2-l*sum1);
a0=(sum3-sum1*a1)/(m+1);
double s=sum3*a0+sum4*a1;
r=sum5-s;
printf("y=a0+a1*x\n");
printf("a0=%f a1=%f\t\n",a0,a1,r);
double q=0.856,p;
p=a0+a1*q;
printf("y=%f\n",p);
return 0;
}