Вот часть моей программы. Взгляни.Большие числовые ошибки в моей программе Mathematica
For[m = 1, m <= mode1, m++,
For[n = 0, n <= mode2, n++,
A[m, n][t_] = a[m, n]*Cos[\[Omega]*t];
B[m, n][t_] = b[m, n]*Cos[\[Omega]*t];
]
]
temp = 0;
For[m = 1, m <= mode1, m++,
For[n = 0, n <= mode2, n++,
temp++;
equation[temp] =
ExpandAll[Integrate[eqC[m, n]*Cos[\[Omega]*t], {t, 0, (2*Pi)/\[Omega]}]];
equation[temp] = ExpandAll[Simplify[equation[temp]/10^9]];
Print["\n\nEquation ", temp, "-\n", equation[temp]];
temp++;
equation[temp] =
ExpandAll[Integrate[eqS[m, n]*Cos[\[Omega]*t], {t, 0, (2*Pi)/\[Omega]}]];
equation[temp] = ExpandAll[Simplify[equation[temp]/10^9]];
Print["\n\nEquation ", temp, "-\n", equation[temp]];
]
]
После выполнения этого кода я должен получить несколько уравнений, а затем создать матрицу из него ряд дифференцировок. Я знаю, что матрица должна быть симметричной. Проблема в том, что при вводе простых данных, т. Е. E = 1, h = 1 и т. Д. Я получаю точные результаты, а матрица симметрична, но как только я даю реальные данные, имеющие значения, такие как 71.02e9,0.000247, чтобы быть неправильным, и я получаю несимметричную матрицу. Я тщательно проверил код и не могу найти ни одной ошибки с моей стороны. Я также проверил результаты программы для простого случая с ручными расчетами.
Ваше сообщение на самом деле не содержит четкого вопроса, и вы не предоставили достаточной информации для запуска вашего кода (который не написан в обычном стиле Mathematica - это слишком важно). Однако ваша проблема, вероятно, просто потеря [точности] (http://reference.wolfram.com/mathematica/guide/NumericalEvaluationAndPrecision.html). Два значения «реальных данных», которые вы дали, будут интерпретироваться как номера «MachinePrecision». Либо используйте точные числа, либо используйте точность до 30, используя '71.02'30 *^9'' и' '0.000247'30''. Вы также должны попытаться использовать встроенные функции преобразования Фурье – Simon
Итак, у вас есть все эти As и Bs в начале, но не в следующем блоке. И вы ссылаетесь на e = 1 и h = 1, хотя e и h не находятся нигде в коде. На догадках похоже, что вы пытаетесь решить для коэффициентов серии Фурье или что-то ??? –
Да, я согласен с тем, что код, который я написал, может быть не самым элегантным способом программирования в математике. Я на самом деле новичок в языке. Я не пытаюсь разработать преобразование Фурье, я решаю уравнение с частными производными вибрации оболочки, используя метод galerkin. Также «e» и «h» фактически находятся в eqC [m, n] и eqS [m, n], которые были объявлены ранее. –