2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

MATLAB詳しい人来て!!

1 :非決定性名無しさん:2009/07/05(日) 03:40:05
dy/dx=f(x,y)=3x+3yでy(0)=1とします。区間[0,2]を20等分した点におけるy=y(x)の値をホイン法で求めるときホイン法のプログラムは

function [x,y]=Heun(a,b,n,y_0)
h=(b-a)/n;
x=a:n:b;
y=0*x;
y(1)=y_0;
for k=1:n
s_1=h*fval([x(k),y(k)]);
s_2=h*fval([x(k)+h,y(k)+s_1]);
y(k+1)=y(k)+(s_1+s_2)/2;
end
plot(x,y,'-g');

になるんですがMATLABではエラーが出ます
s_1=h*fval([x(k),y(k)]);この部分です

[x,y]=Heun(0,2,20,1)とうつと
??? Attempted to access x(2); index out of bounds because numel(x)=1.

エラー ==> Heun at 7
s_1=h*fval([x(k),y(k)]);と表示されます。

関数は
function z=fval(w)
x=w(1);
y=w(2);
z=3*x+3*y;としています。
何が違うのかわからないです。お願いします。


2 :非決定性名無しさん:2009/07/05(日) 03:44:15
大学の宿題?
自分で考えな。

3 :非決定性名無しさん:2009/07/05(日) 14:38:33
x=a:n:bでベクトルが作れてないからじゃね?
引数から判断すると
a = 0
b = 2
n = 20
になるから、x=0:20:2
つまり、xは0〜2の範囲で20刻みの数列になるから、[0]になる。
その後、x(2)にアクセスしてるから範囲外でエラーになる。

式については全く分からんけど、
x=[0 2 4 6 ... 20]としたいんでしょ。


4 :非決定性名無しさん:2009/07/05(日) 15:21:12
HALの学生か?

5 :非決定性名無しさん:2009/07/05(日) 15:48:23
HALでMATLABまで教えてくれるのか。
すごいな。

2 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)