
KP_4_Russkikh_1323
.docx```//Задание 4 вариант 30 стр 227
using System;
class Program
{
static void Main(string[] args)
{
double h = 0.1;
int Nx = (int)(1 / h) + 1; // Количество узлов по x
int Nt = (int)(1 / h) + 1; // Количество узлов по t
// Создаем массивы для сетки и значений функций
double[,] grid = new double[Nx, Nt];
double[,] ut = new double[Nx, Nt]; // Значения производной по времени
double[] x_values = new double[Nx]; // Значения x
double[] t_values = new double[Nt]; // Значения t
// Заполняем значения x и t
for (int i = 0; i < Nx; i++)
{
x_values[i] = i * h;
}
for (int j = 0; j < Nt; j++)
{
t_values[j] = j * h;
}
// Вычисляем начальное условие f0(x) и производную по времени ut(x,0)
for (int i = 0; i < Nx; i++)
{
double x = x_values[i];
double f0 = 0.5 * Math.Pow(x + 1, 2);
double ut0 = (x + 0.5) * Math.Cos(Math.PI * x);
grid[i, 0] = f0;
ut[i, 0] = ut0;
}
// Заполняем граничные условия w1(t) и w2(t)
for (int j = 0; j < Nt; j++)
{
double t = t_values[j];
double w1 = 0.5;
double w2 = 2 - 3 * t;
grid[0, j] = w1;
grid[Nx - 1, j] = w2;
}
// Выводим значения сетки и начальных условий для проверки
Console.WriteLine("Сетка и начальные условия:");
for (int i = 0; i < Nx; i++)
{
for (int j = 0; j < Nt; j++)
{
Console.WriteLine($"u({x_values[i]}, {t_values[j]}) = {grid[i, j]}");
Console.WriteLine($"ut({x_values[i]}, {t_values[j]}) = {ut[i, j]}");
}
}
}
}```