c++最后一段程序 跪求修改!!

来源:百度知道 编辑:UC知道 时间:2024/05/29 03:41:07
#include<iostream.h>
#include<math.h>
#include<stdio.h>
void main(void)
{
double a[3][3]={{-2,1,0},{0,-2,1},{-6,0,0}};
double b[3]={0,0,0},c[3]={0,0,6};
double d[3]={0,0,0},e[3]={0,0,0},f[3]={0,0,0},g[3]={0,0,0},q[3]={0,0,0};
double h=1.0;
int i;
for(i=0;i<5;i++)
{
//表示k1;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{d[i]+=a[i][j]*b[j];}
d[i]=d[i]+c[i];}
//cout<<"d[i]= "<<d[i]<<endl;}

//表示k2;
for(int m=0;m<3;m++)
{
for(int n=0;n<3;n++)
{e[m]+=a[m][n]*(b[n]+h*d[n]/2.0);}
e[m]=e[m]+c[m];}
//cout<<"e[m]= "<<e[m]<<endl;

//表示k3;
for (int p=0;p<3;p++)
{
for(int q=0;q<3;q++)
{f[p]+=a[p][q]*(b[q]+h*e[q]/2.0);}
f[p]=f[p]+c[p];}
//cout<<"f[p]= "<<f[p]<<endl;

//表示

我检查程序最拿手了,我找到原因了:

int i;
for(i=0;i<5;i++)
{
//表示k1;
for(int i=0;i<3;i++)

是什么东东?岂不是重复定义了变量i么?还说循环,它能找到正确的变量么?

你这个算法有问题啊
#include<stdlib.h>
#include<stdio.h>
/*n表示几等分,n+1表示他输出的个数*/
int RungeKutta(double y0,double a,double b,int n,double *x,double *y,int style,double (*function)(double,double))
{
double h=(b-a)/n,k1,k2,k3,k4;
int i;
// x=(double*)malloc((n+1)*sizeof(double));
// y=(double*)malloc((n+1)*sizeof(double));
x[0]=a;
y[0]=y0;
switch(style)
{
case 2:
for(i=0;i<n;i++)
{
x[i+1]=x[i]+h;
k1=function(x[i],y[i]);
k2=function(x[i]+h/2,y[i]+h*k1/2);
y[i+1]=y[i]+h*k2;
}
break;
case 3:
for(i=0;i<n;i++)
{
x[i+1]=x[i]+h;
k1=function(x[i],y[i]);
k2=function(x[i]+h/2,y[i]+h*k1/2);
k3=function(x[i]+h,y[i]-h*k1+2*h*k2);
y[i