数值分析上机实习报告西南交通大学.docx

上传人:b****1 文档编号:2396406 上传时间:2022-10-29 格式:DOCX 页数:15 大小:248.53KB
下载 相关 举报
数值分析上机实习报告西南交通大学.docx_第1页
第1页 / 共15页
数值分析上机实习报告西南交通大学.docx_第2页
第2页 / 共15页
数值分析上机实习报告西南交通大学.docx_第3页
第3页 / 共15页
数值分析上机实习报告西南交通大学.docx_第4页
第4页 / 共15页
数值分析上机实习报告西南交通大学.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数值分析上机实习报告西南交通大学.docx

《数值分析上机实习报告西南交通大学.docx》由会员分享,可在线阅读,更多相关《数值分析上机实习报告西南交通大学.docx(15页珍藏版)》请在冰豆网上搜索。

数值分析上机实习报告西南交通大学.docx

数值分析上机实习报告西南交通大学

数值分析上机实习报告

 

姓名:

学号:

专业:

大地测量学与测量工程

电话:

 

序言

1.所用程序语言:

本次数值分析上机实习采用Visualc#作为程序设计语言,利用Visualc#可视化的编程实现方法,采用对话框形式进行设计计算程序界面,并将结果用表格或文档的格式给出。

2.程序概述:

(1)第一题是采用牛顿法和steffensen法分别对两个题进行分析,编好程序后分别带入不同的初值,观察与真实值的差别,分析出初值对结果的影响,分析两种方法的收敛速度。

(2)第二题使用Visualc#程序设计语言完成了“松弛因子对SOR法收敛速度的影响”,通过在可视化界面下输入不同的n和w值,点击按钮直接可看到迭代次数及计算结果,观察了不同的松弛因子w对收敛速度的影响。

 

目录

一.用牛顿法,及牛顿-Steffensen法3

1.计算结果3

2.结果分析5

3.程序清单5

二.松弛因子对SOR法收敛速度的影响8

1.迭代次数计算结果8

2.计算X()结果10

3.对比分析12

4.程序清单:

12

三.实习总结14

 

实验课题

(一)用牛顿法,及牛顿-Steffensen法

题目:

分别用牛顿法,及牛顿-Steffensen法

(1)求ln(x+sinx)=0的根。

初值x0分别取0.1,1,1.5,2,4进行计算。

(2)求sinx=0的根。

初值x0分别取1,1.4,1.6,1.8,3进行计算。

分析其中遇到的现象与问题。

1、计算结果

由于比较多每种方法中只选取了其中两个的图片例在下面:

2、结果分析

通过对以上的牛顿法和steffensen法的练习,我发现在初值的选取很重要,好的初值选出后可以很快的达到预定的精度,要是选的不好就很慢,而且在有的时候得出的还是非数字,所以初始值的选取很重要。

3.程序清单

编程实现程序清单如下所示:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Text;

usingSystem.Windows.Forms;

namespace数值分析一

{

publicpartialclassForm1:

Form

{

publicForm1()

{

InitializeComponent();

}

 

privatevoidbutton3_Click(objectsender,EventArgse)

{

this.Close();

}

privatevoidbutton1_Click(objectsender,EventArgse)

{

if(radioButton1.Checked)

{

try

{

inti=0;

double[]x=newdouble[5];

x[0]=double.Parse(textBox1.Text);

listBox1.Items.Clear();

for(i=0;i<4;i++)

{

x[i+1]=x[i]-(System.Math.Log(x[i]+System.Math.Sin(x[i])))/

((1+System.Math.Cos(x[i]))/(x[i]+System.Math.Sin(x[i])));

listBox1.Items.Add(x[i+1].ToString());

}

 

}

catch(Exceptionex)

{

MessageBox.Show(ex.Message);

}

}

elseif(radioButton2.Checked)

{

try

{

inti=0;

double[]x=newdouble[5];

x[0]=double.Parse(textBox1.Text);

listBox1.Items.Clear();

for(i=0;i<4;i++)

{

x[i+1]=x[i]-(1-System.Math.Sin(x[i])-x[i])*(1-System.Math.Sin(x[i])-x[i])/

((1-System.Math.Sin(1-System.Math.Sin(x[i])))-2*(1-System.Math.Sin(x[i]))+x[i]);

listBox1.Items.Add(x[i+1].ToString());

}

}

catch(Exceptionex)

{

MessageBox.Show(ex.Message);

}

}

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

if(radioButton3.Checked)

{

try

{

inti=0;

double[]x=newdouble[5];

x[0]=double.Parse(textBox2.Text);

listBox1.Items.Clear();

for(i=0;i<4;i++)

{

x[i+1]=x[i]-System.Math.Sin(x[i])/System.Math.Cos(x[i]);

listBox1.Items.Add(x[i+1].ToString());

}

}

catch(Exceptionex)

{

MessageBox.Show(ex.Message);

}

}

elseif(radioButton4.Checked)

{

try

{

inti=0;

double[]x=newdouble[5];

x[0]=double.Parse(textBox2.Text);

listBox1.Items.Clear();

for(i=0;i<4;i++)

{

x[i+1]=x[i]-(System.Math.Asin(System.Math.Tan(x[i]))-x[i])*(System.Math.Asin(System.Math.Tan(x[i]))-x[i])/

(System.Math.Asin(System.Math.Tan((System.Math.Asin(System.Math.Tan(x[i])))))

-2*(System.Math.Asin(System.Math.Tan(x[i])))+x[i]);

listBox1.Items.Add(x[i+1].ToString());

}

}

catch(Exceptionex)

{

MessageBox.Show(ex.Message);

}

}

}

}

}

实验课题

(二)松弛因子对SOR法收敛速度的影响

二、编写一个用SOR法解方程组得计算机程序,其中

要求程序中不存系数矩阵A,分别对不同的阶数取w=1.1,1.2,...,1.9进行迭代,记录近似解x(k)达到||x(k)-x(k-1)||<10-6时所用的迭代次数k,观察松弛因子对收敛速度的影响,并观察当w0或w2会有什么影响?

1、迭代次数计算结果

(1)当n=10时,w=1.3,1.4,1.5,1.6,1.7,1.8由于太多仅列出其中四个,所求的迭代次数结果如下:

(2)当n=20时,求其迭代次数方法如上,只写出当w=1.1,1.3,1.5,1.7时的迭代次数,计算结果如下:

2、计算x()结果

(1)当n=10,由于松弛因子较多,在此取松弛因子分别为1.1、1.3、1.5、1.9的情况下迭代后的x()的值,所求的x()的结果分别如下所示:

w=1.1w=1.3w=1.5

w=1.9

(2)当n=20,由于松弛因子较多,在此取松弛因子分别为1.1、1.3、1.5、1.9的情况下迭代后的x()的值,所求的x()的结果分别如下所示

w=1.1w=1.3w=1.5

w=1.9

3、对比分析

分析对比实验结果可得:

w=0或2时,不进行迭代,迭代次数结果直接为0,松弛法迭代不收敛;当0

当w<0或w>2时,程序计算结果返回迭代次数,求得的x()的值显示为非数字,表明当w<0或w>2时,松弛法迭代是不收敛的。

4、程序清单

  利用C#编程实现程序清单如下所示:

publicstringSOR(double[,]a,double[]b,double[]x0,intn,doublew)

{

inti=0;

intj=0;

intk=0;

intM=0;

double[]x=newdouble[n+1];

stringYYY=null;

doubleerr=0;

double[]XI=newdouble[n+1];

doublee=1E-06;

double[]Item1=new[];

double[]Item2=new[];

double[]Item3=new[];

double[]Item4=newdouble[n+1];

for(i=0;i<=n;i++){

x(i)=x0(i);

}

k=1;

while(k<=10000){

err=0;

for(i=0;i<=n;i++){

XI(i)=x(i);

Item1(i)=(1-w)*x(i);

Item2(i)=w*b(i)/a(i,i);

for(j=0;j<=i-1;j++){

Item3(i)+=w*a(i,j)*x(j)/a(i,i);

}

for(j=i+1;j<=n;j++){

Item4(i)+=w*a(i,j)*x(j)/a(i,i);

}

x(i)=Item1(i)+Item2(i)-Item3(i)-Item4(i);

Item1(i)=0;

Item2(i)=0;

Item3(i)=0;

Item4(i)=0;

if(err

err=Abs(XI(i)-x(i));

}

}

if(err

for(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1