📄 work.cpp
字号:
// work.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "fuction.cpp"
int _tmain(int argc, _TCHAR* argv[])
{
Matrix A(7,7);
A.init();
Matrix B(11,21);
Matrix APP(11,21);
double x=0;
double y=0;
for(int i=0;i<11;i++)
{
x=0.08*i;
for(int j=0;j<21;j++)
{
y=0.5+0.05*j;
B.setMatrA(i,j,compute(A,nonlinear(x,y).getVector(1),nonlinear(x,y).getVector(0)));
printf("f(%f,%f) = %.11e\n",x,y,B.getMatrA(i,j));
}
}
vector X(11);
vector Y(21);
for(int i=0;i<11;i++)
X.setVector(i,0.08*i);
for(int j=0;j<21;j++)
Y.setVector(j,0.5+0.05*j);
int k=0;
double res=0;
do
{
k++;
for(int i=0;i<11;i++)
{
for(int j=0;j<21;j++)
{
APP.setMatrA(i,j,appcompute(approach(B,X,Y,k),X.getVector(i),Y.getVector(j)));
}
}
res=0;
for(int i=0;i<11;i++)
{
for(int j=0;j<21;j++)
{
res+=(APP.getMatrA(i,j)-B.getMatrA(i,j))*(APP.getMatrA(i,j)-B.getMatrA(i,j));
}
}
printf("k=%d, error=%.11e\n",k,res);
}while(res>1e-7);
cout<<"Matrix C is:"<<endl;
cout<<approach(B,X,Y,k)<<endl;
Matrix RES1(8,5);
Matrix RES2(8,5);
for(int i=0;i<8;i++)
{
x=0.1*(i+1);
for(int j=0;j<5;j++)
{
y=0.5+0.2*(j+1);
RES1.setMatrA(i,j,compute(A,nonlinear(x,y).getVector(1),nonlinear(x,y).getVector(0)));
}
}
for(int i=0;i<8;i++)
{
x=0.1*(i+1);
for(int j=0;j<5;j++)
{
y=0.5+0.2*(j+1);
RES2.setMatrA(i,j,appcompute(approach(B,X,Y,k),x,y));
printf("(x,y)=(%f,%f): f(x,y)=%.11e\tp(x,y)=%.11e\n",x,y,RES1.getMatrA(i,j),RES2.getMatrA(i,j));
}
}
int q;
cin>>q;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -