#include <iostream>
#include <cmath>
using namespace std;
double function1(double t, double z1, double z2) {
return t*z1+t*t*z2+3*t*t-t*(t*t*t-8)-t*t*(t+9);
}
double function2(double t, double z1, double z2) {
return t*t*t*z1+0.5*t*t*t*t-t*t*t*(t*t*t-8)-0.5*t*t*t*t*(t+9) ;
}
double function3(double t, double z1, double z2) {
return t*z1+t*t*z2+t;
}
double function4(double t, double z1, double z2) {
return t*t*t*z1+0.5*t*t*t*t*z2+ t*t*t;
}
double function5(double t, double z1, double z2) {
return t*z1+t*t*z2+t*t;
}
double function6(double t, double z1, double z2) {
return t*t*t*z1+0.5*t*t*t*t*z2+ 0.5*t*t*t*t;
}
int main() {
int N = 10;
double z1[20], z2[20], x1[20], x2[20], t[20], h = 0.1, T = 1, Q[2][2], F[2], aF[2], L[100];
double k11, k12, k21, k22, k31, k32, k41, k42, j11, j12, j21, j22, j31, j32, j41, j42, m11, m12, m21, m22, m31, m32, m41, m42;
double B[2][2] = { { 2, 0 },{ 0, 2 } };
double C[2][2] = { { -1, 0 },{ 0, -1 } };
double d[2] = { -9, 8 };
double I[2][2] = { { 1,0 },{ 0,1 } };
for (int i = 0; i < N; i++) {
t[i] = i * h;
z1[0] = 0;
z2[0] = 0;
k11 = function1(t[i], z1[i], z2[i]);
k12 = function2(t[i], z1[i], z2[i]);
k21 = function1(t[i] + h / 2, z1[i] + h * k11 / 2, z2[i] + h * k12 / 2);
k22 = function2(t[i] + h / 2, z1[i] + h * k11 / 2, z2[i] + h * k12 / 2);
k31 = function1(t[i] + h / 2, z1[i] + h * k21 / 2, z2[i] + h * k22 / 2);
k32 = function2(t[i] + h / 2, z1[i] + h * k21 / 2, z2[i] + h * k22 / 2);
k41 = function1(t[i] + h, z1[i] + h * k31, z2[i] + h * k32);
k42 = function2(t[i] + h, z1[i] + h * k31, z2[i] + h * k32);
z1[i + 1] = z1[i] + h / 6 * (k11 + 2 * k21 + 2 * k31 + k41);
z2[i + 1] = z2[i] + h / 6 * (k12 + 2 * k22 + 2 * k32 + k42);
cout << z1[i]<<" "<<i << " z1 z2 " << z2[i] << endl;
}
cout << endl;
double w[2][2] = { 0 };
for (int i = 0; i < N; i++) {
t[i] = i * h;
j11 = function3(t[i], w[0][0], w[1][0]);
j12 = function4(t[i], w[0][0], w[1][0]);
j21 = function3(t[i] + h / 2, w[0][0] + h * k11 / 2, w[1][0] + h * k12 / 2);
j22 = function4(t[i] + h / 2, w[0][0] + h * k11 / 2, w[1][0] + h * k12 / 2);
j31 = function3(t[i] + h / 2, w[0][0] + h * k21 / 2, w[1][0] + h * k22 / 2);
j32 = function4(t[i] + h / 2, w[0][0] + h * k21 / 2, w[1][0] + h * k22 / 2);
j41 = function3(t[i] + h, w[0][0] + h * k31, w[1][0] + h * k32);
j42 = function4(t[i] + h, w[0][0] + h * k31, w[1][0] + h * k32);
w[0][0] = w[0][0] + h / 6 * (j11 + 2 * j21 + 2 * j31 + j41);
w[1][0] = w[1][0] + h / 6 * (j12 + 2 * j22 + 2 * j32 + j42);
}
for (int i = 0; i < N; i++) {
t[i] = i * h;
m11 = function5(t[i], w[0][1], w[1][1]);
m12 = function6(t[i], w[0][1], w[1][1]);
m21 = function5(t[i] + h / 2, w[0][1] + h * k11 / 2, w[1][1] + h * k12 / 2);
m22 = function6(t[i] + h / 2, w[0][1] + h * k11 / 2, w[1][1] + h * k12 / 2);
m31 = function5(t[i] + h / 2, w[0][1] + h * k21 / 2, w[1][1] + h * k22 / 2);
m32 = function6(t[i] + h / 2, w[0][1] + h * k21 / 2, w[1][1] + h * k22 / 2);
m41 = function5(t[i] + h, w[0][1] + h * k31, w[1][1] + h * k32);
m42 = function6(t[i] + h, w[0][1] + h * k31, w[1][1] + h * k32);
w[0][1] = w[0][1] + h / 6 * (m11 + 2 * m21 + 2 * m31 + m41);
w[1][1] = w[1][1] + h / 6 * (m12 + 2 * m22 + 2 * m32 + m42);
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
cout << w[i][j] << " w ";
}
cout << endl;
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
Q[i][j] = B[i][j] + C[i][j];
for (int k = 0; k < 2; k++)
Q[i][j] += C[i][k] * w[k][j];
}
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
cout << Q[i][j] << " q ";
}
cout << endl;
}
aF[0] = z1[N];
aF[1] = z2[N];
for (int i = 0; i < 2; i++) {
F[i] = -d[i] + C[i][0] * aF[0] + C[i][1] * aF[1];
cout << " F "<< F[i] << endl;
}
cout << endl;
L[1] = (Q[1][0] * F[0] - Q[0][0] * F[1]) / (Q[0][0] * Q[1][1] - Q[0][1] * Q[1][0]);
L[0] = (-F[0] - Q[0][1] * L[1]) / Q[0][0];
cout << "Lambdas: " << endl;
cout << L[0] << " " << L[1] << endl;
cout << "t: " << "L1: " << "L2: " << endl;
for (int i = 0; i <= N; i++) {
t[i] = i * h;
z1[0] = L[0];
z2[0] = L[1];
k11 = function1(t[i], z1[i], z2[i]);
k12 = function2(t[i], z1[i], z2[i]);
k21 = function1(t[i] + h / 2, z1[i] + h * k11 / 2, z2[i] + h * k12 / 2);
k22 = function2(t[i] + h / 2, z1[i] + h * k11 / 2, z2[i] + h * k12 / 2);
k31 = function1(t[i] + h / 2, z1[i] + h * k21 / 2, z2[i] + h * k22 / 2);
k32 = function2(t[i] + h / 2, z1[i] + h * k21 / 2, z2[i] + h * k22 / 2);
k41 = function1(t[i] + h, z1[i] + h * k31, z2[i] + h * k32);
k42 = function2(t[i] + h, z1[i] + h * k31, z2[i] + h * k32);
z1[i + 1] = z1[i] + h / 6 * (k11 + 2 * k21 + 2 * k31 + k41);
z2[i + 1] = z2[i] + h / 6 * (k12 + 2 * k22 + 2 * k32 + k42);
cout << t[i] <<" "<< z1[i] << " " << z2[i] << endl;
}
system("pause");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZG91YmxlIGZ1bmN0aW9uMShkb3VibGUgdCwgZG91YmxlIHoxLCBkb3VibGUgejIpIHsKCXJldHVybiB0KnoxK3QqdCp6MiszKnQqdC10Kih0KnQqdC04KS10KnQqKHQrOSk7Cn0KCmRvdWJsZSBmdW5jdGlvbjIoZG91YmxlIHQsIGRvdWJsZSB6MSwgZG91YmxlIHoyKSB7CglyZXR1cm4gdCp0KnQqejErMC41KnQqdCp0KnQtdCp0KnQqKHQqdCp0LTgpLTAuNSp0KnQqdCp0Kih0KzkpIDsKfQoKZG91YmxlIGZ1bmN0aW9uMyhkb3VibGUgdCwgZG91YmxlIHoxLCBkb3VibGUgejIpIHsKCXJldHVybiB0KnoxK3QqdCp6Mit0Owp9Cgpkb3VibGUgZnVuY3Rpb240KGRvdWJsZSB0LCBkb3VibGUgejEsIGRvdWJsZSB6MikgewoJcmV0dXJuIHQqdCp0KnoxKzAuNSp0KnQqdCp0KnoyKyB0KnQqdDsKfQoKZG91YmxlIGZ1bmN0aW9uNShkb3VibGUgdCwgZG91YmxlIHoxLCBkb3VibGUgejIpIHsKCXJldHVybiB0KnoxK3QqdCp6Mit0KnQ7Cn0KCmRvdWJsZSBmdW5jdGlvbjYoZG91YmxlIHQsIGRvdWJsZSB6MSwgZG91YmxlIHoyKSB7CglyZXR1cm4gdCp0KnQqejErMC41KnQqdCp0KnQqejIrIDAuNSp0KnQqdCp0Owp9CgppbnQgbWFpbigpIHsKaW50IE4gPSAxMDsKZG91YmxlIHoxWzIwXSwgejJbMjBdLCB4MVsyMF0sIHgyWzIwXSwgdFsyMF0sIGggPSAwLjEsIFQgPSAxLCBRWzJdWzJdLCBGWzJdLCBhRlsyXSwgTFsxMDBdOwpkb3VibGUgazExLCBrMTIsIGsyMSwgazIyLCBrMzEsIGszMiwgazQxLCBrNDIsIGoxMSwgajEyLCBqMjEsIGoyMiwgajMxLCBqMzIsIGo0MSwgajQyLCBtMTEsIG0xMiwgbTIxLCBtMjIsIG0zMSwgbTMyLCBtNDEsIG00MjsKZG91YmxlIEJbMl1bMl0gPSB7IHsgMiwgMCB9LHsgMCwgMiB9IH07CmRvdWJsZSBDWzJdWzJdID0geyB7IC0xLCAwIH0seyAwLCAtMSB9IH07CmRvdWJsZSBkWzJdID0geyAtOSwgOCB9Owpkb3VibGUgSVsyXVsyXSA9IHsgeyAxLDAgfSx7IDAsMSB9IH07CgoJZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKCQl0W2ldID0gaSAqIGg7CgkJejFbMF0gPSAwOwoJCXoyWzBdID0gMDsKCgkJazExID0gZnVuY3Rpb24xKHRbaV0sIHoxW2ldLCB6MltpXSk7CgkJazEyID0gZnVuY3Rpb24yKHRbaV0sIHoxW2ldLCB6MltpXSk7CgoJCWsyMSA9IGZ1bmN0aW9uMSh0W2ldICsgaCAvIDIsIHoxW2ldICsgaCAqIGsxMSAvIDIsIHoyW2ldICsgaCAqIGsxMiAvIDIpOwoJCWsyMiA9IGZ1bmN0aW9uMih0W2ldICsgaCAvIDIsIHoxW2ldICsgaCAqIGsxMSAvIDIsIHoyW2ldICsgaCAqIGsxMiAvIDIpOwoKCQlrMzEgPSBmdW5jdGlvbjEodFtpXSArIGggLyAyLCB6MVtpXSArIGggKiBrMjEgLyAyLCB6MltpXSArIGggKiBrMjIgLyAyKTsKCQlrMzIgPSBmdW5jdGlvbjIodFtpXSArIGggLyAyLCB6MVtpXSArIGggKiBrMjEgLyAyLCB6MltpXSArIGggKiBrMjIgLyAyKTsKCgkJazQxID0gZnVuY3Rpb24xKHRbaV0gKyBoLCB6MVtpXSArIGggKiBrMzEsIHoyW2ldICsgaCAqIGszMik7CgkJazQyID0gZnVuY3Rpb24yKHRbaV0gKyBoLCB6MVtpXSArIGggKiBrMzEsIHoyW2ldICsgaCAqIGszMik7CgoJCXoxW2kgKyAxXSA9IHoxW2ldICsgaCAvIDYgKiAoazExICsgMiAqIGsyMSArIDIgKiBrMzEgKyBrNDEpOwoJCXoyW2kgKyAxXSA9IHoyW2ldICsgaCAvIDYgKiAoazEyICsgMiAqIGsyMiArIDIgKiBrMzIgKyBrNDIpOwoJCWNvdXQgPDwgejFbaV08PCIgICAgICI8PGkgPDwgIiB6MSB6MiAgICIgPDwgejJbaV0gPDwgZW5kbDsKCX0KCWNvdXQgPDwgZW5kbDsKCglkb3VibGUgd1syXVsyXSA9IHsgMCB9OwoKCWZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CgkJdFtpXSA9IGkgKiBoOwoKCQlqMTEgPSBmdW5jdGlvbjModFtpXSwgd1swXVswXSwgd1sxXVswXSk7CgkJajEyID0gZnVuY3Rpb240KHRbaV0sIHdbMF1bMF0sIHdbMV1bMF0pOwoKCQlqMjEgPSBmdW5jdGlvbjModFtpXSArIGggLyAyLCB3WzBdWzBdICsgaCAqIGsxMSAvIDIsIHdbMV1bMF0gKyBoICogazEyIC8gMik7CgkJajIyID0gZnVuY3Rpb240KHRbaV0gKyBoIC8gMiwgd1swXVswXSArIGggKiBrMTEgLyAyLCB3WzFdWzBdICsgaCAqIGsxMiAvIDIpOwoKCQlqMzEgPSBmdW5jdGlvbjModFtpXSArIGggLyAyLCB3WzBdWzBdICsgaCAqIGsyMSAvIDIsIHdbMV1bMF0gKyBoICogazIyIC8gMik7CgkJajMyID0gZnVuY3Rpb240KHRbaV0gKyBoIC8gMiwgd1swXVswXSArIGggKiBrMjEgLyAyLCB3WzFdWzBdICsgaCAqIGsyMiAvIDIpOwoKCQlqNDEgPSBmdW5jdGlvbjModFtpXSArIGgsIHdbMF1bMF0gKyBoICogazMxLCB3WzFdWzBdICsgaCAqIGszMik7CgkJajQyID0gZnVuY3Rpb240KHRbaV0gKyBoLCB3WzBdWzBdICsgaCAqIGszMSwgd1sxXVswXSArIGggKiBrMzIpOwoKCQl3WzBdWzBdID0gd1swXVswXSArIGggLyA2ICogKGoxMSArIDIgKiBqMjEgKyAyICogajMxICsgajQxKTsKCQl3WzFdWzBdID0gd1sxXVswXSArIGggLyA2ICogKGoxMiArIDIgKiBqMjIgKyAyICogajMyICsgajQyKTsKCX0KCglmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewoJCXRbaV0gPSBpICogaDsKCgkJbTExID0gZnVuY3Rpb241KHRbaV0sIHdbMF1bMV0sIHdbMV1bMV0pOwoJCW0xMiA9IGZ1bmN0aW9uNih0W2ldLCB3WzBdWzFdLCB3WzFdWzFdKTsKCgkJbTIxID0gZnVuY3Rpb241KHRbaV0gKyBoIC8gMiwgd1swXVsxXSArIGggKiBrMTEgLyAyLCB3WzFdWzFdICsgaCAqIGsxMiAvIDIpOwoJCW0yMiA9IGZ1bmN0aW9uNih0W2ldICsgaCAvIDIsIHdbMF1bMV0gKyBoICogazExIC8gMiwgd1sxXVsxXSArIGggKiBrMTIgLyAyKTsKCgkJbTMxID0gZnVuY3Rpb241KHRbaV0gKyBoIC8gMiwgd1swXVsxXSArIGggKiBrMjEgLyAyLCB3WzFdWzFdICsgaCAqIGsyMiAvIDIpOwoJCW0zMiA9IGZ1bmN0aW9uNih0W2ldICsgaCAvIDIsIHdbMF1bMV0gKyBoICogazIxIC8gMiwgd1sxXVsxXSArIGggKiBrMjIgLyAyKTsKCgkJbTQxID0gZnVuY3Rpb241KHRbaV0gKyBoLCB3WzBdWzFdICsgaCAqIGszMSwgd1sxXVsxXSArIGggKiBrMzIpOwoJCW00MiA9IGZ1bmN0aW9uNih0W2ldICsgaCwgd1swXVsxXSArIGggKiBrMzEsIHdbMV1bMV0gKyBoICogazMyKTsKCgkJd1swXVsxXSA9IHdbMF1bMV0gKyBoIC8gNiAqIChtMTEgKyAyICogbTIxICsgMiAqIG0zMSArIG00MSk7CgkJd1sxXVsxXSA9IHdbMV1bMV0gKyBoIC8gNiAqIChtMTIgKyAyICogbTIyICsgMiAqIG0zMiArIG00Mik7Cgl9CgoJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKCWZvciAoaW50IGogPSAwOyBqIDwgMjsgaisrKSB7Cgljb3V0IDw8IHdbaV1bal0gPDwgIiB3ICI7Cgl9Cgljb3V0IDw8IGVuZGw7Cgl9CgoJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKCQlmb3IgKGludCBqID0gMDsgaiA8IDI7IGorKykgewoJCQlRW2ldW2pdID0gQltpXVtqXSArIENbaV1bal07CgkJCWZvciAoaW50IGsgPSAwOyBrIDwgMjsgaysrKQoJCQkJUVtpXVtqXSArPSBDW2ldW2tdICogd1trXVtqXTsKCQl9Cgl9CgoJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKCQlmb3IgKGludCBqID0gMDsgaiA8IDI7IGorKykgewoJCQljb3V0IDw8IFFbaV1bal0gPDwgIiBxICI7CgkJfQoJCWNvdXQgPDwgZW5kbDsKCX0KCglhRlswXSA9IHoxW05dOwoJYUZbMV0gPSB6MltOXTsKCWZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7CgkJRltpXSA9IC1kW2ldICsgQ1tpXVswXSAqIGFGWzBdICsgQ1tpXVsxXSAqIGFGWzFdOwoJCWNvdXQgPDwgIiBGICI8PCBGW2ldIDw8IGVuZGw7Cgl9Cgljb3V0IDw8IGVuZGw7CgoJTFsxXSA9IChRWzFdWzBdICogRlswXSAtIFFbMF1bMF0gKiBGWzFdKSAvIChRWzBdWzBdICogUVsxXVsxXSAtIFFbMF1bMV0gKiBRWzFdWzBdKTsKCUxbMF0gPSAoLUZbMF0gLSBRWzBdWzFdICogTFsxXSkgLyBRWzBdWzBdOwoJY291dCA8PCAiTGFtYmRhczogIiA8PCBlbmRsOwoJY291dCA8PCBMWzBdIDw8ICIgICIgPDwgTFsxXSA8PCBlbmRsOwoKCWNvdXQgPDwgInQ6ICAgICAgICAiIDw8ICJMMTogICAgICAgICAgICIgPDwgIkwyOiAgICAgIiA8PCBlbmRsOwoJZm9yIChpbnQgaSA9IDA7IGkgPD0gTjsgaSsrKSB7CgkJdFtpXSA9IGkgKiBoOwoJCXoxWzBdID0gTFswXTsKCQl6MlswXSA9IExbMV07CgoJCWsxMSA9IGZ1bmN0aW9uMSh0W2ldLCB6MVtpXSwgejJbaV0pOwoJCWsxMiA9IGZ1bmN0aW9uMih0W2ldLCB6MVtpXSwgejJbaV0pOwoKCQlrMjEgPSBmdW5jdGlvbjEodFtpXSArIGggLyAyLCB6MVtpXSArIGggKiBrMTEgLyAyLCB6MltpXSArIGggKiBrMTIgLyAyKTsKCQlrMjIgPSBmdW5jdGlvbjIodFtpXSArIGggLyAyLCB6MVtpXSArIGggKiBrMTEgLyAyLCB6MltpXSArIGggKiBrMTIgLyAyKTsKCgkJazMxID0gZnVuY3Rpb24xKHRbaV0gKyBoIC8gMiwgejFbaV0gKyBoICogazIxIC8gMiwgejJbaV0gKyBoICogazIyIC8gMik7CgkJazMyID0gZnVuY3Rpb24yKHRbaV0gKyBoIC8gMiwgejFbaV0gKyBoICogazIxIC8gMiwgejJbaV0gKyBoICogazIyIC8gMik7CgoJCWs0MSA9IGZ1bmN0aW9uMSh0W2ldICsgaCwgejFbaV0gKyBoICogazMxLCB6MltpXSArIGggKiBrMzIpOwoJCWs0MiA9IGZ1bmN0aW9uMih0W2ldICsgaCwgejFbaV0gKyBoICogazMxLCB6MltpXSArIGggKiBrMzIpOwoKCQl6MVtpICsgMV0gPSB6MVtpXSArIGggLyA2ICogKGsxMSArIDIgKiBrMjEgKyAyICogazMxICsgazQxKTsKCQl6MltpICsgMV0gPSB6MltpXSArIGggLyA2ICogKGsxMiArIDIgKiBrMjIgKyAyICogazMyICsgazQyKTsKCQljb3V0IDw8IHRbaV0gPDwiICAgICAgIjw8IHoxW2ldIDw8ICIgICAgICAiIDw8IHoyW2ldIDw8IGVuZGw7Cgl9CgoJc3lzdGVtKCJwYXVzZSIpOwoJcmV0dXJuIDA7Cn0=