实验报告35Word下载.docx

上传人:b****1 文档编号:4056920 上传时间:2023-05-02 格式:DOCX 页数:16 大小:119.73KB
下载 相关 举报
实验报告35Word下载.docx_第1页
第1页 / 共16页
实验报告35Word下载.docx_第2页
第2页 / 共16页
实验报告35Word下载.docx_第3页
第3页 / 共16页
实验报告35Word下载.docx_第4页
第4页 / 共16页
实验报告35Word下载.docx_第5页
第5页 / 共16页
实验报告35Word下载.docx_第6页
第6页 / 共16页
实验报告35Word下载.docx_第7页
第7页 / 共16页
实验报告35Word下载.docx_第8页
第8页 / 共16页
实验报告35Word下载.docx_第9页
第9页 / 共16页
实验报告35Word下载.docx_第10页
第10页 / 共16页
实验报告35Word下载.docx_第11页
第11页 / 共16页
实验报告35Word下载.docx_第12页
第12页 / 共16页
实验报告35Word下载.docx_第13页
第13页 / 共16页
实验报告35Word下载.docx_第14页
第14页 / 共16页
实验报告35Word下载.docx_第15页
第15页 / 共16页
实验报告35Word下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验报告35Word下载.docx

《实验报告35Word下载.docx》由会员分享,可在线阅读,更多相关《实验报告35Word下载.docx(16页珍藏版)》请在冰点文库上搜索。

实验报告35Word下载.docx

return;

}

if(m_e==0)

请输入精度!

//迭代初值

longn=1;

doubleh=m_b-m_a;

//步长

doubletemp=h*(f(m_a)+f(m_b))/2.0,t;

doublep=m_e+1.0;

//精度控制

doublesum,x;

while(p>

=m_e)

sum=0.0;

for(longk=0;

k<

n;

k++)

x=m_a+(k+0.5)*h;

sum=sum+f(x);

t=(temp+h*sum)/2.0;

//keystep

p=fabs(t-temp);

temp=t;

n=n+n;

h=h/2.0;

m_n.Format("

%d"

n);

m_result.Format("

%lf"

t);

UpdateData(FALSE);

}

2.龙贝格程序代码

doublef1(doublex)

doublecomputerAutoT(doubleaa,doublebb,intn,double&

temp)

doubleh=(bb-aa)/n,t;

doublesum,x,Sn;

x=aa+(k+0.5)*h;

sum=sum+f1(x);

Sn=4/3*t-1/3*temp;

return(Sn);

voidRomberge:

OnOK()

Addextravalidationhere

doubleSn,S2n,S4n,S8n,Cn,C2n,C4n,Rn,R2n,p=m_e+1;

doubletemp=(m_b-m_a)*(f1(m_a)+f1(m_b))/2.0;

intn=1;

Sn=computerAutoT(m_a,m_b,n,temp);

while(p>

=m_e)

n=n+n;

S2n=computerAutoT(m_a,m_b,n,temp);

Cn=16/15*S2n-1/15*Sn;

S4n=computerAutoT(m_a,m_b,n,temp);

C2n=16/15*S4n-1/15*S2n;

Rn=64/63*C2n-1/63*Cn;

S8n=computerAutoT(m_a,m_b,n,temp);

C4n=16/15*S8n-1/15*S4n;

R2n=64/63*C4n-1/63*C2n;

p=fabs(R2n-Rn);

Sn=S2n;

R2n);

实验四源程序

1.改进欧拉法程序代码

doublef2(doublex,doubley)

return(-x*y*y);

doubleEuler(double&

x,doubley,doubleh)

doubleYk;

Yk=y+h/2*(f2(x,y)+f2(x+h,y+h*f2(x,y)));

x=x+h;

y=Yk;

returny;

voidGJEuler:

请输入x取值上下限!

if(m_h==0)

请输入步长!

if(m_y0==0)

请确认y的初值是否为0!

doubley[100],a=m_a;

y[0]=m_y0;

charbuffer[7];

for(inti=0;

i<

(m_b-m_a)/m_h;

i++)

y[i+1]=Euler(a,y[i],m_h);

gcvt(i,7,buffer);

m_Euler.InsertItem(i,buffer);

gcvt(a,7,buffer);

m_Euler.SetItemText(i,1,buffer);

gcvt(y[i+1],7,buffer);

m_Euler.SetItemText(i,2,buffer);

m_Euler.SetRedraw(TRUE);

y[i]);

BOOLGJEuler:

OnInitDialog()

CDialog:

OnInitDialog();

Addextrainitializationhere

m_Euler.InsertColumn(0,"

K"

m_Euler.InsertColumn(1,"

Xi"

m_Euler.InsertColumn(2,"

Yi"

RECTrect;

m_Euler.GetWindowRect(&

rect);

intwid=rect.right-rect.left;

m_Euler.SetColumnWidth(0,wid/3);

m_Euler.SetColumnWidth(1,wid/3);

m_Euler.SetColumnWidth(2,wid/3);

m_Euler.SetExtendedStyle(LVS_EX_FULLROWSELECT);

m_Euler.SetRedraw(FALSE);

returnTRUE;

//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:

OCXPropertyPagesshouldreturnFALSE

2.四阶龙格-库塔法程序代码

doublef3(doublex,doubley)

doubleRunge_Kutta1(doublex,doubley,doubleh)

doublek1,k2,k3,k4;

k1=f3(x,y);

k2=f3(x+0.5*h,y+0.5*h*k1);

k3=f3(x+0.5*h,y+0.5*h*k2);

k4=f3(x+h,y+h*k3);

y=y+h/6*(k1+2*k2+2*k3+k4);

return(y);

voidRunge_Kutta:

Addextravalidationhere

if(m_x0==0&

m_xn==0)

doublex=m_x0,y[100];

fabs(x-m_xn)>

=1e-12;

i++,x=x+m_h)

y[i+1]=Runge_Kutta1(x,y[i],m_h);

m_Runge.InsertItem(i,buffer);

gcvt(x+m_h,7,buffer);

m_Runge.SetItemText(i,1,buffer);

m_Runge.SetItemText(i,2,buffer);

m_Runge.SetRedraw(TRUE);

初始化函数中的列表控件的操作同改进欧拉法

实验五源程序

1.高斯—塞德尔迭代法程序代码

数据读入同实验一中的高斯列主消元法

doubleabc(doublea[][10],doublex[],inti,intm)

doubles=0;

intj;

for(j=0;

j<

m;

j++)

if(i==j)

continue;

s+=a[i][j]*x[j];

return(s);

//G-S迭代

for(k1=1;

k1<

=100;

k1++)

doublee=0.0;

for(i=0;

m_m;

{

t=x0[i];

x0[i]=(b[i]-abc(a,x0,i,m_m))/a[i][i];

if(fabs((x0[i]-t)>

e))

e=fabs(x0[i]-t);

}

if(e<

m_E)

break;

//计算结果输出

charbuffer[50];

charstring[100];

charmin[10][15];

gcvt(x0[j],7,buffer);

strcpy(min[j],buffer);

k=0;

for(i=0;

for(j=0;

14&

min[i][j]!

='

\0'

;

string[k]=min[i][j];

k++;

string[k]='

'

k++;

string[k]='

m_k.Format("

k1);

%s"

string);

2.牛顿迭代法程序代码

voidFive_Newton:

if(m_E==0)

AfxMessageBox("

if(m_x0==0)

请确认初值是否为0!

doublexk1,xk0,x;

xk0=m_x0;

for(intk=0;

100;

xk1=xk0-f(xk0)/g(xk0);

if(fabs(xk1-xk0)<

m_E&

fabs(f(xk1))<

m_E)

x=xk1;

else

xk0=xk1;

x);

k);

运行结果

下图分别为

1.进入界面的主对话框

2.变步长梯形法的对话框

3.Romberge对话框

4.改进欧拉法对话框

5.四阶Romge-Kutta对话框

6.高斯-塞德尔对话框

7.牛顿迭代法对话框

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2