Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 28.12.2017
Сообщений: 6
Matlab 2014

Численные методы

11.06.2019, 15:45. Показов 1671. Ответов 3

Студворк — интернет-сервис помощи студентам
Необходимо получить первые 4 корня уравнения.
Известно какие они должны быть.
х1=3,53278979419483
х2=6,68437824623655
х3=9,82627598130565
х4=12,9677703673715
Проблема в том, что алгоритм работает неправильно не знаю в чем ошибка.

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
h = 0.5; % Шаг
 
a = 0;% Нижний предел
 
b = 14; % Верхний предел
 
% Функция системы:
 
dsys = @(x,y,dy) [-y*(3*cos(2*x)+1)];
 
dsys_2 = @(x,y,dy) [dy];
 
T = a : h : b; % Массив времени
 
% Инициализируем массив значений:
 
Y = zeros(size(T));
 
dY = zeros(size(T));
 
% Начальные условия:
 
Y(1) = 0;
 
dY(1) = 1;
 
% Вспомогательные коэффициенты
 
for j=1:length(T)-1
 
K1 = h*dsys(T(j), Y(j), dY(j));
 
G1 = h*dsys_2(T(j), Y(j), dY(j));
 
K2 = h*dsys(T(j)+h/2, Y(j)+K1/2, dY(j)+G1/2);
 
G2 = h*dsys_2(T(j)+h/2, Y(j)+K1/2, dY(j)+G1/2);
 
K3 = h*dsys(T(j)+h/2, Y(j)+K2/2, dY(j)+G2/2);
 
G3 = h*dsys_2(T(j)+h/2, Y(j)+K2/2, dY(j)+G2/2);
 
K4 = h*dsys(T(j)+h, Y(j)+K3, dY(j)+G3);
 
G4 = h*dsys_2(T(j)+h, Y(j)+K3, dY(j)+G3);
 
Y(j+1) = Y(j) + h*(K1+K2+K3+K4)/6;
 
dY(j+1) = dY(j) + h*(G1+G2+G3+G4)/6;
 
end
 
hold on
 
datacursormode on;
 
plot(T,Y)
 
plot(T,dY)
 
legend('y(x)','dy/dx')
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2019, 15:45
Ответы с готовыми решениями:

Численные методы
Доброго всем времени суток! Мне необходима Ваша помощь в написании нескольких программ: 1) Действия с приближенными числами ...

Задание по матлаб (университет, численные методы)!
Ребят, помогите решить задачу по численным методам. Точнее не помогите, а решите (за деньги)). Говорю так, потому что сам я это сделать не...

Численные методы вычисления определенного интеграла
Здравствуйте,помогите пожалуйста разобраться в программе по вычислению интеграла методом средних прямоугольников,Симпсона и трапеций,где...

3
 Аватар для Krasme
7247 / 5100 / 2151
Регистрация: 02.02.2014
Сообщений: 13,461
11.06.2019, 17:16
напишите оригинал задачи, что за функция и каким методом решать...
0
0 / 0 / 0
Регистрация: 28.12.2017
Сообщений: 6
11.06.2019, 17:40  [ТС]
Найти первые 4 корня уравнения y''+[3cos(2x )+1]y=0 (Уравнение Матье) y(0)=0; y'(0)=1.
методом Рунге-Кутта.
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
11.06.2019, 20:36
Лучший ответ Сообщение было отмечено VSI как решение

Решение

__Dasha__, для начала надо добиться верного решения ОДУ
Были найдены следующие ошибки:

1. нужно поменять местами функции dsys и dsys_2 - dsys это производная Y, поэтому она должна использоваться при его расчете.
2. Если h используется при вычислении Ki, Gi, то при расчете Y(j+1) оно уже не нужно, будет просто Y(j+1) = Y(j) + (K1+2*K2+2*K3+K4)/6;
3. По формуле Рунге-Кутты приращение равно (K1+2*K2+2*K3+K4)/6

Ну и шаг h желательно взять помельче

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
clear
clc
close all
 
h = 0.01; % Шаг
 
a = 0;% Нижний предел
 
b = 14; % Верхний предел
 
% Функция системы:
 
dsys = @(x,y,dy) [dy]; % первая производная y
 
dsys_2 = @(x,y,dy) [-y*(3*cos(2*x)+1)]; % вторая производная y
 
T = a : h : b; % Массив времени
 
% Инициализируем массив значений:
 
Y = zeros(size(T));
 
dY = zeros(size(T));
 
% Начальные условия:
 
Y(1) = 0;
 
dY(1) = 1;
 
% Вспомогательные коэффициенты
 
for j=1:length(T)-1
    
    K1 = h*dsys(T(j), Y(j), dY(j));
    
    G1 = h*dsys_2(T(j), Y(j), dY(j));
    
    K2 = h*dsys(T(j)+h/2, Y(j)+K1/2, dY(j)+G1/2);
    
    G2 = h*dsys_2(T(j)+h/2, Y(j)+K1/2, dY(j)+G1/2);
    
    K3 = h*dsys(T(j)+h/2, Y(j)+K2/2, dY(j)+G2/2);
    
    G3 = h*dsys_2(T(j)+h/2, Y(j)+K2/2, dY(j)+G2/2);
    
    K4 = h*dsys(T(j)+h, Y(j)+K3, dY(j)+G3);
    
    G4 = h*dsys_2(T(j)+h, Y(j)+K3, dY(j)+G3);
    
    Y(j+1) = Y(j) + (K1+2*K2+2*K3+K4)/6;
    
    dY(j+1) = dY(j) + (G1+2*G2+2*G3+G4)/6;
    
end
 
hold on
 
datacursormode on;
 
plot(T,Y)
 
plot(T,dY)
grid on
 
legend('y(x)','dy/dx')


Но это только первая часть Чтобы найти корни, хотя бы приближенно, но и не слишком сложно, можно найти моменты времени, где значения Y меняют знак, т.е. T(abs(diff(sign(Y)))>0). Попробуй запустить программу и вконце добавить эту строчку

PS: у меня получилось:
Matlab M
>> T(abs(diff(sign(Y)))>0)
ans =
            0         3.53         6.68         9.82        12.96
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2019, 20:36
Помогаю со студенческими работами здесь

Численные методы. Определение корней уравнения
Определить графически корни уравнения и уточните один из них методом дихотомии с точностью 0,005, методом простой итерации, методом хорд и...

Численные методы: метод простой итерации с уточнением по Эйткену
Здравствуйте! Я первый раз в форуме, пока что только разбираюсь, может не там создаю тему. Написать программу на MadLab, по методу метод...

Как получить численные значения?
Из struct -> sym -> double Доброго времени суток, ув. форумчане! Вопрос следующий. После решения системы уравнений в цикле с...

Численные методы
...

численные методы
необходима помощь в написании программы по численным методам.срочно.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru