게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
본삭금] 코딩에 관한 질문이 하고 싶습니다.
게시물ID : it_3708짧은주소 복사하기
작성자 : 침묵하는자
추천 : 0
조회수 : 708회
댓글수 : 2개
등록시간 : 2015/06/07 19:48:03
옵션
  • 본인삭제금지

 과게에도 물어봤었는데 비선형이라 코딩으로 풀어야 할 것 같네요...

C++에 대해서 잘 아시는 분들 조언 해주시면 감사하겠습니다 정말 모르겠어요ㅠ

제 코딩의 목적은요...

y"'+ty"-3y=2t,

y(0)=0, y'(0)=0, y"(0)=1

이 식을 푸는거에요. 그리고 여기서 y가 t에 관한 수식이에요...

그래서 아래와 같은 코드를 짰는데 치명적인 오류가 뜨네요 답도 안 나오고

논리적으로 뭐가 잘못되었는지 알려 주실 수 있나요?
------------------------------------------------------------------
#include<stdio.h> 
#include<math.h> 

double f1(double t, double y);//문제 식 정의
double f2(double t, double y);
double f3(double t, double y, double z );

void main()
{
double y1[200];//y1를 저장할 공간 
double k[100][100];//k값을 저장할 공간 
y1[0] = 0;//y1의 초기치

double y1p, y1c, y1pm;// y1의 예측자, 수정자, 보정예측자 
double t = 0;
int i, j;
double h = 0.1;

for (i = 0; i<3; i++)
{
k[1][1] = f1(t, y1[i]);
k[1][2] = f1(t + h / 2, y1[i] + h / 2.0 * k[1][1]);
k[1][3] = f1(t + h / 2, y1[i] + h / 2.0 * k[1][2]);
k[1][4] = f1(t + h, y1[i] + h * k[1][3]);//y1의 4계 Runge-Kutta식 

y1[i + 1] = y1[i] + h / 6.0 * (k[1][1] + 2 * (k[1][2] + k[1][3]) + k[1][4]);
}

for (j = 3; j<100; j++)
{
t = 0.1 + j / 10.0;

y1p = y1[j] + h / 24.0*(55 * f1(t - 0.1, y1[j]) - 59 * f1(t - 0.2, y1[j - 1]) + 37 * f1(t - 0.3, y1[j - 2]) - 9 * f1(t - 0.4, y1[j - 3]));

y1c = y1[j] + h / 24.0*(9 * f1(t, y1p) + 19 * f1(t - 0.1, y1[j]) - 5 * f1(t - 0.2, y1[j - 1]) + f1(t - 0.3, y1[j - 2]));
//y1의 예측자와 수정자를 구하는 식 

y1pm = y1p + 251.0 / (19.0 + 251.0)*(y1c - y1p);
//y1의 보정 예측자를 구하는 식 

y1c = y1[j] + h / 24.0*(9 * f1(t, y1pm) + 19 * f1(t - 0.1, y1[j]) - 5 * f1(t - 0.2, y1[j - 1]) + f1(t - 0.3, y1[j - 2]));

y1[j + 1] = y1c - 19.0 / (19.0 + 251.0) * (y1c - y1p);
//y1보정 수정자를 구하는 식 

if (t > 10)break;
printf(" t=%lf, y1=%lf \n", t, y1[j + 1]);
}
}

double f1(double t, double y, double z)
{
double f;
f = y ;
return f;
}
double f2(double t, double y, double z)
{
double f;
f = z ;
return f;
}
double f3(double t, double y, double z)
{
double f;
f = 2*t+3*y-t*z;
return f;
}
출처 수치해석 공부 중ㅜ
꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호