Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 07.06.2014
Сообщений: 23
1

Метод Адамса

07.06.2014, 22:03. Показов 3149. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет,помогите исправить ошибку в коде,я знаю точно что они в строках с out,но не могу разобраться вот код написан в матлабе
Программа №1
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
function [out] = Adams()
out = [];
xi0=0;
yi0=0.1; 
h=0.02;
N=10;
out=[out;xi0,yi0];
k1 = h*F(xi0, yi0);
k2 = h*F(xi0+h/2.0, yi0+k1/2.0);
k3 = h*F(xi0+h,yi0+2.0*k2-k1);
yi1=yi0+(k1+4.0*k2+k3)/6.0;
xi1= xi0+h;
 
k11 = h*F(xi1, yi1);
k22 = h*F(xi1+h/2.0, yi1+k11/2.0);
k33 = h*F(xi1+h,yi1+2*k22-k11);
yi2=yi1+(k11+4.0*k22+k33)/6.0;
xi2= xi1+h;
 
for xi0=3:N
out=[out,xi0,yi2];
xi3= xi2+h;
yi3= yi2 + h/12*(23*F(xi2,yi2)- 16*F(xi1,yi1)+5*F(xi0,yi0));
yi0=yi1;
yi1=yi2;
yi2=yi3;
xi0=xi1;
xi1=xi2;
xi2=xi3;
 
end
plot(out(:,1),out(:,2),'.--g')
hold on
l=dsolve('Dy = 30*y*(x-0.2)*(x-0.7)','y(0)=0.1','x');
ezplot(l,[0 1])
end
function [out] = F(x,y)
out =(30*y*(x-0.2)*(x-0.7));
end
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2014, 22:03
Ответы с готовыми решениями:

Метод Адамса
здравствуйте помогите доделать программу с интерфейсом, на старом матлабе она идёт на версии 6.5 и...

Метод Эйлера и Адамса
Решить на отрезке методами Эйлера и Адамса четвертого порядка уравнение...

Метод Адамса 3-го порядка
Матлаб выдает ошибку на 34 строке, а я не могу понять в чем причина :( Помогите пожалуйста. Код...

Метод Адамса трехшаговый явный
Привет. Программу нужно написать для решения задачи Коши на отрезке явным трехшаговым методом...

4
41 / 41 / 9
Регистрация: 22.10.2012
Сообщений: 91
08.06.2014, 10:57 2
Не знаю, сработало без ошибок, ниже результат
Миниатюры
Метод Адамса  
1
1 / 1 / 0
Регистрация: 07.06.2014
Сообщений: 23
08.06.2014, 14:38  [ТС] 3
у меня препод утверждает что ошибка в коде,посмотрите пожалуйста еще этот код,он не много отличается от 1,вопрос в том что какой из них более правильный?результаты то значений разные получаются,вот код:
Программа №2
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
function [out] = Untitled()
function [out] = F(x,y)
out =(30*y*(x-0.2)*(x-0.7));
end
out = [];
 
xi0=0;
yi0=0.1; 
h=0.02;
N=10;
out=[out;xi0,yi0];
k1 = h*F(xi0, yi0);
k2 = h*F(xi0+h/2.0, yi0+k1/2.0);
k3 = h*F(xi0+h,yi0+2.0*k2-k1);
yi1=yi0+(k1+4.0*k2+k3)/6.0;
xi1= xi0+h;
 
k11 = h*F(xi1, yi1);
k22 = h*F(xi1+h/2.0, yi1+k11/2.0);
k33 = h*F(xi1+h,yi1+2*k22-k11);
yi2=yi1+(k11+4.0*k22+k33)/6.0;
xi2= xi1+h;
 
for i=3:N
 
xi3= xi2+h;
yi3= yi2 + h/12*(23*F(xi2,yi2)- 16*F(xi1,yi1)+5*F(xi0,yi0));
yi0=yi1;
yi1=yi2;
yi2=yi3;
xi0=xi1;
xi1=xi2;
xi2=xi3;
out=[xi0,yi0;xi2,yi1;xi2,yi2;];
 
end
plot(out(:,1),out(:,2),'.--g')
hold on
l=dsolve('Dy = 30*y*(x-0.2)*(x-0.7)','y(0)=0.1','x');
ezplot(l,[0 1])
end

спасибо зарание

Добавлено через 7 минут
препод сказал что: С ошибкой пока не разобрались, поэтому график приближенного решения неверный. 2 кода и оба не верны,в чем может быть ошибка в строках с out?
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
08.06.2014, 14:47 4
Стелла21, а препод не сказал какая конкретно ошибка?
0
1 / 1 / 0
Регистрация: 07.06.2014
Сообщений: 23
08.06.2014, 15:04  [ТС] 5
В коде метода Адамса есть ошибки. Проверьте, пожалуйста, строки с out-вот все что он сказал,это еще с 1 кода

Добавлено через 1 минуту
как я его поняла отправив ему 2 код я от какой то ошибки избавилась,осталась 1 ошибка из за который график ине верен я уже не знаю что делать помогите пожалуйста уже месяца 2 пытаюсь сдать

Добавлено через 8 минут
и еще может быть в этом?
plot(out(:,1),out(:,2),'.--g')
я это где то в инете прочитала но так и не поняла толком,знаю что рисует,может не правильно out(:,1),out(:,2)?
0
08.06.2014, 15:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2014, 15:04
Помогаю со студенческими работами здесь

Метод Адамса - графики не совпадают
Помогите кто-нибудь с методом Адамса 3-го порядка. По какой-то причине не совпадают графики :((...

Метод Адамса и Рунге-Кутта для решения ДУ
Здравствуйте, нужно решить ДУ используя метод Адамса 4го порядка, состоящий из предиктора...

Метод Адамса для решения дифференциальных уравнений
Написал программу для решения дифф. уравнения, не могу исправить ошибки. Помогите пожалуйста ...

Решение системы ДУ методом Эйлера, Ронге-Кутта, Адамса
Решил двумя методами в экселе, не могу написать в matlab'e уравнение x''+4x=sin(t)+sin(2t),...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru