LINUX.ORG.RU

Модифицированный метод Эйлера


0

1

Помогите, пожалуйста. Я вот код написал. Пишу plot(x,t) а он выдает ошибку: error: 'x' undefined near line 13 column 6 error: evaluating argument list element number 1

function main [x,t]=eiler_m(0,1,100,1) endfunction function deriv=g(t,x) deriv=-2*t.*x; endfunction function [x,t]=eiler_m(a,b,n,x0) h=(b-a)/n; x(1)=x0; for i=1:n+1 t(i)=a+(i-1)*h; end for i=2:n+1 tp=t(i-1)+h/2; xp=x(i-1)+h/2*g(t(i-1),x(i-1)); x(i)=x(i-1)+h*g(tp,xp); end endfunction

Это ж надо было додуматься зарегистрироваться на ЛОРе, чтобы решить задачку.

ЗЫ. Используй разметку.

staseg ★★★★★
()
#!/bin/bash

octave << EOF
function [x,t]=main
    [x,t]=eiler_m(0,1,100,1)
endfunction

function deriv=g(t,x)
    deriv=-2*t.*x;
endfunction

function [x,t]=eiler_m(a,b,n,x0)
    h=(b-a)/n;
    x(1)=x0;
    for i=1:n+1
	t(i)=a+(i-1)*h;
    end
    for i=2:n+1
	tp=t(i-1)+h/2;
	xp=x(i-1)+h/2*g(t(i-1),x(i-1));
	x(i)=x(i-1)+h*g(tp,xp);
    end
endfunction

[x,t]=main
plot(x,t)
pause(2)
EOF
anonymous
()
Ответ на: комментарий от anonymous

А вместо первого цикла лучше использовать linspace.

anonymous
()
Ответ на: комментарий от anonymous

я дико извиняюсь, возможно лезу не в свое дело, но это сообщение написал не автор поста и там все работает.

anonymous
()

Держись, студент, мы в тебя верим!

aedeph_ ★★
()

может для начала надо x=[]; написать...

dikiy ★★☆☆☆
()

и да, не надо юзать такие вещи как endfunction без надобности. Достаточно просто end.

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

а, ide проблемы, я думал какой-то смысл архитектурный в этом сообщении имелся, спасибо

anonymous
()
Ответ на: комментарий от anonymous

потому что потом замучаешься переносить в человеческий матлаб. Да и зачем, если и с простым end всё работает?

aiqu6Ait ★★★★
()
Ответ на: комментарий от aiqu6Ait

а вот это уже тот самый архитектурный аргумент. хоть и исправляется одним sed-ом. я, честно говоря, думал, что end[operator] придумали в матлабе, оказалось наоборот.

anonymous
()
Ответ на: комментарий от anonymous

а вот это уже тот самый архитектурный аргумент. хоть и исправляется одним sed-ом. я, честно говоря, думал, что end[operator] придумали в матлабе, оказалось наоборот.

дык я это и имел в виду.

dikiy ★★☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.