实验课程名称:数值分析
}
结果:
流程图:
②Gauss-Seidel迭代法
#include<stdio.h>
int main()
{
double x[3] = {0, 0, 0};
开始
阶数n,系数矩
阵,初始向量
for(i=0;i<n;i++)
i=j
Y
N
total += a[i][j] *
x[j]
e = e +
ABS(x[j],
结束
double a[3][3] = {6,2,-1,1,4,-2,-3,1,4}; double y[3] = {-3,2,4};
double d[3][3],g[3];
int round = 5, i,j;
for (i=0; i<3; ++i)
{
g[i] = y[i] / a[i][i];
for (j=0; j<3; ++j)
{
d[i][j] = i==j ? 0 : -a[i][j]/a[i][i]; }
}
while (round--) {
for (i=0; i<3; ++i)
{
x[i] = g[i];
for (j=0; j<3; ++j)
{
x[i] += d[i][j] * x[j];
}
printf("%lf", x[i]);
}
printf("\n");
}
}
结果:
流程图:
{ a[i]=(float *)malloc(n*sizeof(float)); } return a;
}
float matrix_category(float* x,int n)
{ int i; float temp=0; for(i=0;i<n;i++)
{ temp=temp+fabs(x[i]); }
return temp;
}
结果:
流程图:
return 0; }
结果:
流程图:
⑤欧拉显式方法
#include <stdio.h>
#include <conio.h>
#include <math.h>
double f(double x,double y) {
return x*pow(y,1.0/3);
}
int main()
{
int i;
开始
矩阵阶数系数矩阵
for(k=1;k<=i-1;k++)
m=m+a[i][k]*a[k][j];
a[i][j]= a[i][j]-m;
a[k][num+1]=(a[k][
num+1]-q)/a[k][k]
结束
double x,y,y0=1,dx=0.1;
double xx[11];
double euler[11],euler_2[11];
double temp;
double f(double x,double y);
for (i=0;i<11;i++)
xx[i]=i*dx;
euler[0]=y0;
for (i=1,x=0;i<11;i++,x+=dx)
euler[i]=euler[i-1]+dx*f(x,euler[i-1]);
euler_2[0]=y0;
for (i=1,x=0;i<11;i++,x+=dx)
{
temp=euler_2[i-1]+dx*f(x,euler_2[i-1]);
euler_2[i]=euler_2[i-1]+dx*(f(x,euler_2[i-1])+f(x+dx,temp))/2;
}
for (i=0,x=0;i<11;i++,x+=dx)
printf("x=%lf\teluer=%lf\teuler_2=%lf\taccu=%lf\n",x,euler[i],euler_2[i],pow(1+x*x,1.0/3)); getch();
}
结果:
流程图:
⑥欧拉隐式方法
#include<stdio.h>
#include<math.h>
#define f(x,y)(x+y)
int main()
{int m;
int i;
double a,b,y0;
double xn,yn,xn1,yn1,yn1b;
double h;
printf("\nInput the begin and end of x:");
scanf("%lf%lf",&a,&b);
printf("Input the y value at %f:",a);
scanf("%lf",&y0);
printf("Input m value[divide(%f,%f)]:",a,b);
scanf("%d",&m);
if(m<=0)
{printf("Please input a number larger than 1.\n");
return(1);
}
h=(b-a)/m;
xn=a;yn=y0;
for(i=1;i<=m;i++)
{xn1=xn+h;
yn1b=yn+h*f(xn,yn);
yn1=yn+h/2*(f(xn,yn)+f(xn1,yn1b));
printf("x%d=%f,y%d=%f\n",i,xn1,i,yn1);
xn=xn1;
yn=yn1;
}return(0);
}
结果:
流程图:
二、实验结果及分析
雅克比迭代法的全部分量都是间接利用,由于新值比旧值好,Gauss-Seidel迭代法直接对算出的分量加以使用,这样使得迭代的收敛情况有所改善,而超松弛法是在Gauss-Seidel迭代法的基础上,应用加速收敛思想而构造的一种方法;欧拉公式和梯形公式在计算上有明显的区别,
欧拉公式的特点是可以有U
N 直接计算U
n+1
,也就是显式的,而梯形公式右端也有U
n+1
,必须通过解
方程才能求得,这类是隐式的。
从算法的角度看显式远比隐式方便,隐式通常用迭代法求解。
三、实验小节、建议及体会
任何一种方法都有它的优点和局限性,只有找到一种方法能够解决我们的问题,又尽量减少出错,减少计算量就是符合这个问题的好方法。
良好的编程习惯有助于检查错误,也可以增强程序的可阅读性。
信息技术在教学中的应用和反思
通过的近期信息技术提升培的学习,结合教学教学中相关信息
技术的应用和周边教师信息技术使用过程的讨论,个人对在现代信息技术手段在教学中应用有引起感触,现整理如下,仅供大家批评指正:
一、信息技术的重要性
随着信息技术使用的走进了人们的工作、生活、学习,尤其在教育教学活动中的地位作用日趋重要。
信息技术走进了日常教学中,改变了传统的教学模式。
将信息技术与教学相整合,提高教学效率以及培养学生的整体素质和全面能力都具有重要意义。
利用现代化的教育教学工具,寓教于乐,以提高教学的实效性。
信息技术在教学中的有效运用已经成为一个热点问题,它将成为课堂教学中不可缺少的一部分,成为学生学习、研究、探索知识的有力工具。
二、信息技术手段在教学中使用的必要性
1、运用现代信息技术资源备课,为课堂教学打下坚实的基础。
备课是教学中的一个重要环节,授课教师要熟悉教材、钻研教材、考虑教法、学法,提高教学实效的基础。
由于条件比较差,与教材有关的资料比较少。
再加上孩子见得少。
这就要求教师课前必须做好充分的准备,多准备与课文有关的资料,选择适合学生的教学方法。
教师备课前先熟悉钻研教材,再上网查阅优秀教师的备课。
网上的备课各式各样,一。