代码如下(部分代码)
#define TH_0 (65535-count_M0)/256 //T0的高八位值
#define TL_0 (65535-COUNT_m0)%256//T0的低八位值
{
IE=0x82//10000010,开启总中断,启用TF0中断
TMOD=0X01//0000 0001,选择T0为模式1
TH0=TH_0//装入高8位
TL0=TL_0//装入低八位
TR0=1//启动T0
beep=1
gled=0
ssnd=30
while(1)
{
if(S2==0)
{delay(10)
a++
}
if(S3==0)
{delay(10)
a--
}
}
}
void my_display(void) interrupt 1//采用中断的方式进行显示
{
display(ssnd)
alarm()
if(beep==0)
{ rled=1
gled=0
beep=~beep
}
#include "stdafx.h"#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std
//方程一(参见步骤一)
#define f0(x1,x2) (x1*x1-x2-1)
//方程二(参见步骤一)
#define f1(x1,x2) ((x1-2)*(x1-2)+(x2-0.5)*(x2-0.5)-1)
//方程精度(参见步骤一)
#define x_ 0.000001
//矩阵阶数(参见步骤二)
#define matrixNum 2
//计算雅克比矩阵逆(参见步骤三)
double *matrixF2(double *x)
//计算雅克比矩阵(参见步骤二)
double *matrixB1(double *b,double *q,double *matrixB)
void main()
{
//计数器
int i,j
double n
//函数中自变量
double *x
double *b,*c,*q,p
double *t //(p-matrixB*q)
double *s //(pT*matrixB)
//方程组函数值
double *matrixF
//矩阵F的雅可比矩阵的逆
double *matrixB
double *matrixB1
//开辟空间
x=(double *)malloc(matrixNum)
b=(double *)malloc(matrixNum)
c=(double *)malloc(matrixNum)
q=(double *)malloc(matrixNum)
s=(double *)malloc(matrixNum)
t=(double *)malloc(matrixNum)
//计算方程组函数值
matrixF=(double *)malloc(matrixNum)
//matrixB=(double *)malloc(matrixNum*matrixNum)
matrixB1=(double*)malloc(matrixNum*matrixNum)
// 自变量输入
cout<<"请输入初值:"
for(i=0i<matrixNumi++)
cin>>*(x+i)
//计算雅克比矩阵逆
matrixB=matrixF2(x)
//计算函数值
*matrixF=f0(*x,*(x+1))
*(matrixF+1)=f1(*x,*(x+1))
do
{
p=0.0
for(i=0i<matrixNumi++)
*(c+i)=*(matrixF+i)
for(i=0i<matrixNumi++)
{
*(b+i)=0
*(q+i)=0
cout<<*(c+i)<<" "
}
cout<<endl<<"x值"
for(i=0i<matrixNumi++)
{
for(j=0j<matrixNumj++)
*(b+i)+=*(matrixB+i*matrixNum+j)*(*(c+j))
*(b+i)=-*(b+i)
*(x+i)=*(x+i)+(*(b+i))
cout<<*(x+i)<<" "
}
cout<<endl
*matrixF=f0(*x,*(x+1))
*(matrixF+1)=f1(*x,*(x+1))
for(i=0i<matrixNumi++)
{
p+=pow(*(b+i),2)
*(q+i)=*(matrixF+i)-*(c+i)
}
n=0
for(i=0i<matrixNumi++)
{
*(t+i)=0
*(s+i)=0
}
for(i=0i<matrixNumi++)
{
for(j=0j<matrixNumj++)
{
*(t+i)+=*(matrixB+i*matrixNum+j)*(*(q+j))
*(s+i)+=*(b+j)*(*(matrixB+j*matrixNum+i))
}
for(j=0j<matrixNumj++)
n+=*(s+i)*(*(q+j))
*(t+i)=*(b+i)-*(t+i)
}
for(i=0i<matrixNumi++)
cout<<endl<<*(q+i)<<" "
cout<<endl<<n<<endl
for(i=0i<matrixNumi++)
for(j=0j<matrixNumj++)
*(matrixB1+i*matrixNum+j)=*(t+i)*(*(s+j))/n+*(matrixB+i*matrixNum+j)
for(i=0i<matrixNumi++)
{
for(j=0j<matrixNumj++)
cout<<*(matrixB1+i*matrixNum+j)<<" "
cout<<endl
}
getchar()
matrixB=matrixB1
}while(sqrt(p)>x_)
//delete [] s
//delete [] t
//delete [] matrixF
//delete [] matrixB
cout<<"以上为结果"<<endl
getchar()
}
double *matrixF2(double *x)
{
int i,j
double t
double *matrixF1 //矩阵F的雅可比矩阵
double *matrixF2 //矩阵F的雅可比矩阵的逆
matrixF1=(double *)malloc(matrixNum*matrixNum)
matrixF2=(double *)malloc(matrixNum*matrixNum)
for(i=0i<matrixNumi++)
for(j=0j<matrixNumj++)
if(i==j)
*(matrixF2+i*matrixNum+j)=1
else *(matrixF2+i*matrixNum+j)=0
*matrixF1=(f0((*x+x_),*(x+1))-f0(*x,*(x+1)))/x_
*(matrixF1+1)=(f0(*x,(*(x+1)+x_))-f0(*x,*(x+1)))/x_
*(matrixF1+2)=(f1((*x+x_),*(x+1))-f1(*x,*(x+1)))/x_
*(matrixF1+3)=(f1(*x,(*(x+1)+x_))-f1(*x,*(x+1)))/x_
for(i=0i<matrixNumi++)
cout<<*(x+i)<<endl
cout<<"矩阵F在["<<*x<<','<<*(x+1)<<"]的雅可比矩阵"<<endl
for(i=0i<matrixNumi++)
{
for(j=0j<matrixNumj++)
cout<<*(matrixF1+i*matrixNum+j)<<" "
cout<<endl
}
//求矩阵F的雅可比矩阵的逆
t=*matrixF1
for(i=0,j=0j<matrixNumj++)
{
*(matrixF1+i*matrixNum+j)/=t
*(matrixF2+i*matrixNum+j)/=t
}
t=*(matrixF1+1*matrixNum)
for(i=1,j=0j<matrixNumj++)
{
*(matrixF1+i*matrixNum+j)-=*(matrixF1+j)*t
*(matrixF2+i*matrixNum+j)-=*(matrixF2+j)*t
}
t=*(matrixF1+1*matrixNum+1)
for(i=1,j=0j<matrixNumj++)
{
*(matrixF1+i*matrixNum+j)/=t
*(matrixF2+i*matrixNum+j)/=t
}
t=*(matrixF1+1)
for(i=i,j=0j<matrixNumj++)
{
*(matrixF1+j)-=*(matrixF1+i*matrixNum+j)*t
*(matrixF2+j)-=*(matrixF2+i*matrixNum+j)*t
}
for(i=0i<matrixNumi++)
{
for(j=0j<matrixNumj++)
cout<<*(matrixF1+i*matrixNum+j)<<" "
cout<<endl
}
for(i=0i<matrixNumi++)
{
for(j=0j<matrixNumj++)
cout<<*(matrixF2+i*matrixNum+j)<<" "
cout<<endl
}
getchar()
return matrixF2
delete [] matrixF1
delete [] matrixF2
}
//double *matrixB1(double *b,double *q,double *matrixB)
//{
// int i,j
//}
VS2008运行可行
请采纳答案,支持我一下。