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

Решение диф. уравнения тремя способами

04.03.2013, 16:00. Показов 3089. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток,
решаю\пытаюсь решать расчетно-графическую работу по прикладному программированию.
Все задания не очень сложные, с использованием файл-функции, но одно мне все-таки вызвало трудности:

Решить дифференциальное уравнение тремя способами:
а) С использованием классических алгоритмов численных методов Эйлера и Рунге-Кутта 4-го порядка;
б) С использованием солвера ode45;
в) С использованием системной функции feval.
x=(a/b)*t^(1/2), dy/dt=x;

В универе преподаватель ничего толкового не сказал по решению этого задания, рассказал только как простенькие файл-функции составлять и вычислять значения из командного окна и из файл-программы.

Помогите, пожалуйста. Буду очень благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2013, 16:00
Ответы с готовыми решениями:

Решение диф уравнения коши
Господа и дамы, доброе время суток. Возникла следующая небольшая проблема. Суть заключается в следующем, есть стандартное...

Исправить ошибку решение диф. уравнения
При запуске программы выдает ошибки: Attempted to access y(6); index out of bounds because numel(y)=1. Error in vdp1 (line 15) ...

Решение диф уравнения с функцией, зависящей от решения
Есть небольшая баллистическая программа. Осознал я недавно, что использовать постоянную плотность воздуха в атмосфере как минимум-глупо....

11
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 11
05.03.2013, 16:28  [ТС]
uuup
0
31 / 31 / 3
Регистрация: 24.11.2012
Сообщений: 22
06.03.2013, 03:57
Лучший ответ Сообщение было отмечено как решение

Решение

Для решения дифференциального уравнения надо бы задать начальное условие. У меня y(0)=1, ясное дело, константы и y(0) вы можете задать такие, какие надо вам. И отрезок, на котором хотите посмотреть решение (у меня это [0,10]) - тоже.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
% nachalnoe uslovie berem: y(0)=1
[T,Y]=ode45('fun',[0,10],1);
% reshenie s solverom:
plot(T,Y,'*r');
% analiticheskoe reshenie:
t=0:.1:10;
a=3;
b=2;
y=a/b*2/3*t.^(3/2)+1;
hold on
plot(t,y);
xlabel('t')
ylabel('y')
legend('ode45','exact solution','Location','NorthWest')
Matlab M
1
2
3
4
5
% file funkciia pravaia chast uravneniia:
function f=fun(t,y)
a=3;
b=2;
f=[a/b*t^(1/2)];
Миниатюры
Решение диф. уравнения тремя способами  
3
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 11
06.03.2013, 14:40  [ТС]
Спасибо большое
Получается, здесь вы солвер использовали.
А не могли бы вы показать как правильно сделать c использованием классических алгоритмов численных методов Эйлера и Рунге-Кутта 4-го порядка?
С feval, вроде, разобрался.
0
31 / 31 / 3
Регистрация: 24.11.2012
Сообщений: 22
07.03.2013, 04:24
Лучший ответ Сообщение было отмечено как решение

Решение

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
dt=0.1;
t=0:dt:10;
a=3;
b=2;
X=a/b*t.^(1/2);
Y(1)=1; % initial condition
for i=1:length(t)-1,
Y(i+1)=Y(i)+X(i)*dt;
end;
plot(t,Y,'om')
 
% analytical solution
y=a/b*2/3*t.^(3/2)+1;
hold on
plot(t,y);
xlabel('t')
ylabel('y')
legend('Euler method','exact solution','Location','NorthWest')
Миниатюры
Решение диф. уравнения тремя способами  
4
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 11
13.03.2013, 14:59  [ТС]
Спасибо за помощь

Вчера пошел проверять задания, все правильно. Вот только feval, который строил сам все-таки не верный.
HELP, please!

Решить дифференциальное уравнение c использованием системной функции feval.

x=(a/b)*t^(1/2), dy/dt=x;

Если есть подобные решения с feval, пишите, пожалуйста, посмотрю, сравню и найду у себя ошибку.
0
31 / 31 / 3
Регистрация: 24.11.2012
Сообщений: 22
14.03.2013, 01:35
Matlab M
1
2
3
4
5
% using feval 
% a=3, b=2, y(1)=1
clear all;
y=feval('dsolve','Dy=3/2*t^(1/2)','y(1)=1','t');
pretty(y)

Matlab побренчит, побренчит и выдаст: t3/2 . Это у него так выглядит аналитическое решение y=t^(3/2). Не факт, что ваш преподаватель мечтал лицезреть использование feval именно в таком виде. Но, если его этот вариант не устроит, можно придумать другие.
2
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 11
14.03.2013, 17:27  [ТС]
Спасибо вам большое!!! На след неделе буду сдавать полностью все задания.
Тему не закрывайте, пожалуйста, т.к. если преподаватель начнет вредничать, нужна будет помощь.
0
31 / 31 / 3
Регистрация: 24.11.2012
Сообщений: 22
16.03.2013, 01:20
Так, в feval надо исправить 5-ю строчку на :
Matlab M
1
y=feval('dsolve','Dy=3/2*t^(1/2)','y(0)=1','t');
Потому как Y(1)=1 пишем там, где имеем в виду вектор Y, Y(1) - первый элемент соответствует точке t(1)=0. А в dsolve мы используем символьную функцию y, поэтому там начальное условие записывается y(0)=1. Ну и результат тогда получится: y=t^(3/2)+1.
Кажется, еще был нужен метод Рунге-Кутта четвертого порядка. В данном случае он слегка упрощается, потому что правая часть не зависит от y.
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
dt=0.1;
t=0:dt:10;
a=3;
b=2;
X = @(t)a/b*t.^(1/2);
Y(1)=1; % initial condition t(1)=0
for i=1:length(t)-1,
% R.-K. formulas are simplified, 
% because the right side of the equation is independent of y.
k1=dt*X(t(i));
k2=dt*X(t(i)+dt/2);
k3=k2;
k4=dt*X(t(i)+dt);
Y(i+1)=Y(i)+(k1+2*k2+2*k3+k4)/6;
end;
plot(t,Y,'xr')
 
% analytical solution
y=a/b*2/3*t.^(3/2)+1;
hold on
plot(t,y);
xlabel('t')
ylabel('y')
legend('fourth-order Runge–Kutta method','exact solution','Location','NorthWest')
Миниатюры
Решение диф. уравнения тремя способами  
2
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 11
16.03.2013, 11:15  [ТС]
Огромное спасибо
А какая версия матлаба у вас?
0
31 / 31 / 3
Регистрация: 24.11.2012
Сообщений: 22
19.03.2013, 01:40
MATLAB 7.11.0 (R2010b)
1
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 11
23.03.2013, 16:42  [ТС]
Эйлер не совсем правильный вышел, немного подправил. Вот, что вышло.

Matlab M
1
2
function f=fun(x)
f=x;
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
t0=0;
tk=1;
h=0.01;
a=5;
b=2;
y=0;
fprintf('--------------------\n');
fprintf('|  t  |  x  |  y  | \n');
fprintf('--------------------\n');
for t=t0:h:tk
x=(a/b)*sqrt(t);
f=fun(x);
y=y+h*f;
fprintf('|%2.2f|%2.2f|%2.2f|\n',t,x,y);
plot(t,x,'g*')
grid on
hold on
plot (t,y,'k*')
end
http://rghost.ru/44705738/image.png
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2013, 16:42
Помогаю со студенческими работами здесь

Диф уравнения.
Кратко о том что нужно сделать. Нужно написать программу в MatLab,которая будет решать систему диф. уравнений Скан ур--ний в архиве,...

диф. уравнения.(Matlab)
Нужно решить дифференциальное уравнение x'=exp(y) x(0)=1 y'=4y+x y(0)=1

Решатель диф. уравнения
Всем привет. Прошу помощи или подсказки как справиться с задачей. Имеется файл с исходными параметрами (переменными). Я пробовал написать...

диф. уравнения, как записать в MatLab
1) ysinx=y' , y(0)=1. 2) y'''=5x+4 3) y'''tgx-y''-1=0 4) y''-10y'+9y=0 5) y''+3y'=0 , y(0)=0 , y'(0)=-6

Решение диф.ура
При разработке алгоритма и программы предусмотреть возможность ввода произвольных значений этих величин. По результатам расчетов построить...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru