C++实验 8

更新时间:2024-05-26 04:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验8 指针应用

成绩 专业班级 信息112学号201112030221姓名兰晓东报告日期

实验类型:●验证性实验 ○综合性实验 ○设计性实验 实验目的:

1熟悉定义指针变量的方法、使用指针变量的方法。

2学会使用指针变量作函数参数、用指针对字符串进行操作。

3学会使用指向函数的指针进行牛顿迭代法求解非线性方程组的解。 实验内容:

1.第六章习题第6题、第11题、第18题 2.用牛顿迭代法求解非线性方程组

设有非线性方程组

x2?2x?y?0.5?0x?4y?422?0

设初始值(x0,y0)?(2.0,0.25)误差小于0.001 实验原理

Pn?Pn?1?J(Pn?1)?1F(Pn?1)

实验步骤:(记录实验过程中的步骤)

1 要求上机实验前先编写出程序代码 2 编辑录入程序

3 调试程序并记录调试过程中出现的问题及修改程序的过程 4 经反复调试后,运行程序并验证程序运行是否正确。 5 记录运行时的输入和输出。

实验任务的程序运行运行界面及运行结果:

实验总结:

定义指针变量的方法: 使用指针变量的方法:

学会使用指针变量作函数参数: 用指针对字符串进行操作:

学会使用指向函数的指针进行牛顿迭代法求解非线性方程组的解。 第六题运行结果:

第十一题运行结果:

第十三题运行结果:

每个实验任务程序代码 第六题代码:

#include using namespace std; int main() { int length(char *p); int len; char str[20]; cout<<\ cin>>str; len=length(str); cout<<\ return 0; }

int length(char *p) {int n; n=0;

while(*p!='\\0') {n++; p++; }

return(n); }

第十一题代码: #include using namespace std; int main()

{void sort(char s[][6]); int i;

char str[10][6];

cout<<\ for(i=0;i<10;i++) cin>>str[i]; sort(str);

cout<<\ for(i=0;i<10;i++) cout<

void sort(char s[][6]) {int i,j;

char *p,temp[10]; p=temp;

for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(strcmp(s[j],s[j+1])>0) {strcpy(p,s[j]); strcpy(s[j],s[j+1]); strcpy(s[j+1],p); } }

第十三题代码: #include #include using namespace std; int main()

{ float integral(float (*P)(float),float a,float b,int n); float fsin(float); float fcos(float); float fexp(float);

float a1,a2,a3,b1,b2,b3,c,(*p)(float); int n=20;

cout<<\ cin>>a1>>b1;

cout<<\ cin>>a2>>b2;

cout<<\ cin>>a3>>b3; p=fsin;

c=integral(p,a1,b1,n);

cout<<\ p=fcos;

c=integral(p,a2,b2,n);

cout<<\ p=fexp;

c=integral(p,a3,b3,n);

cout<<\ return 0; }

float integral(float(*p)(float),float a,float b,int n) { int i;

float x,h,s; h=(b-a)/n; x=a; s=0;

for(i=1;i<=n;i++) {x=x+h;

s=s+(*p)(x)*h; }

return(s); }

float fsin(float x) {return sin(x);} float fcos(float x) {return cos(x);} float fexp(float x) {return exp(x);}

牛顿迭代法求解非线性方程组代码: #include #include using namespace std; int main()

{ double dpy(double array[]),Q[1],x[1],p[1],err,relerr; int i,j,p,max1,count;

cout<<\ cin>>x[0]>>x[1]>>max1; for (i=0;i

for(j=0;j<2;j++) {Q[j]=x[j]-p[j];}

err=fabs(Q[0]+Q[1]-x[0]-x[1]); relerr=err/(Q(0)+Q(1)); x=Q; count=i;

cout<

if(err<0.001||relerr<0.001) { break; }

cout<<\ return 0; }

double dpy(double array[]) {double fy(double array[]); double det(double array[][]); double z[1][1],dp[1],x[1]; x[0]=array[0]; x[1]=array[1]; z[0][0]=2*x[0]-2; z[0][1]=-1; z[1][0]=2*x[0];

z[1][1]=8*x[1]; y=fy(x); J=det(z);

dp[0]=J[0][0]*y[0]+J[0][1]*y[1]; dp[1]=J[1][0]*y[0]+J[1][1]*y[1]; return dp; }

double fy(double array[]) {double z[1],x,y;

x=array[0],y=array[1]; z[0]=x*x-2*x-y+0.5; z[1]=x*x+4*y-4; return z }

double det(double array[][])

{double x={0,0,1,0},y={0,0,0,1},J[1][1]; int i;

x[0]=array[0][0]; x[1]=array[0][1]; y[0]=array[1][0]; y[1]=array[1][1];

for(i=0;i<4;i++) y[i]=y[i]-y[0]/x[0]*x[i]; for(i=0;i<4;i++) x[i]=y[i]-x[1]/y[1]*x[i]; int c=x[0];

for(i=0;i<4;i++) x[i]=x[i]/c; c=y[1];

for(i=0;i<4;i++) y[i]=y[i]/c; J[0][0]=x[2]; J[0][1]=x[3]; J[1][0]=y[2]; J[1][1]=y[3]; }

本文来源:https://www.bwwdw.com/article/3887.html

Top