matlab主函数如何调用子函数
我编写了一个matlab子函数是关于龙格库塔计算的主函数内容为:formatlongi=145;t=i*0.001;x=zeros(2,1);x(1,1)=35;f=t*...
我编写了一个matlab子函数是关于龙格库塔计算的
主函数内容为:
format long
i=145;
t=i*0.001;
x=zeros(2,1);
x(1,1)=35;
f=t*sin(x(1,1));
x(2,1)=Runge_Kutta(x(1,1));
子函数内容为:
function x1=Runge_Kutta(x)
%Runge-Kutta积分方法解算
T=0.01;
%设周期是0.01秒,具体的计算中再修改
f(x,t)=t*sin(x);
%先假设f(x,t)是一个这样的函数,具体函数在具体问题中再修改
x=x(1,1);
%x先假设一个值,到具体问题时再具体输入修改
K1=t*sin(x);
K2=(t+T/2)*sin(x+K1/2);
K3=(t+T/2)*sin(x+K2/2);
K4=(t+T)*sin(x+K3);
x1=x+(T/6)*(K1+2*K2+2*K3+K4);
%龙格库塔方法计算过程
在计算过程中提示出现的问题是Error in ==> diaoyong1 at 8
x(2,1)=Runge_Kutta(x(1,1));
请问在调用子程序时该怎么样修改这两个函数,谢谢
谢谢 zcy_179的回答,我还有一个问题
就是这个f函数可不可以放在子程序里面,
在他的回答中放到了主程序中,如果可以该怎么设置,谢谢 展开
主函数内容为:
format long
i=145;
t=i*0.001;
x=zeros(2,1);
x(1,1)=35;
f=t*sin(x(1,1));
x(2,1)=Runge_Kutta(x(1,1));
子函数内容为:
function x1=Runge_Kutta(x)
%Runge-Kutta积分方法解算
T=0.01;
%设周期是0.01秒,具体的计算中再修改
f(x,t)=t*sin(x);
%先假设f(x,t)是一个这样的函数,具体函数在具体问题中再修改
x=x(1,1);
%x先假设一个值,到具体问题时再具体输入修改
K1=t*sin(x);
K2=(t+T/2)*sin(x+K1/2);
K3=(t+T/2)*sin(x+K2/2);
K4=(t+T)*sin(x+K3);
x1=x+(T/6)*(K1+2*K2+2*K3+K4);
%龙格库塔方法计算过程
在计算过程中提示出现的问题是Error in ==> diaoyong1 at 8
x(2,1)=Runge_Kutta(x(1,1));
请问在调用子程序时该怎么样修改这两个函数,谢谢
谢谢 zcy_179的回答,我还有一个问题
就是这个f函数可不可以放在子程序里面,
在他的回答中放到了主程序中,如果可以该怎么设置,谢谢 展开
展开全部
MATLAB如何成功的编辑存放并成功调用子函数:
1、当你没有把你编辑好的子函数放入正确的文件夹时,不管你输入的程序是否有错,当你执行时,系统都会提示“没有定义”,这个时候就是没有子函数文件放到主函数库文件夹中,如图所示。
2、就算知道了,这个问题那么主函数库文件夹在什么地方找呢?首先,输入“edit conv”这个“conv”是我准备编辑的子函数的主函数名,每个人所需的主函数名都不一样,这里可以不要那么在意。然后就可以打开相应的主函数,这是可以看到主函数所在文件夹位置。如图所示,※记住这个位置。
3、然后进行子函数的编辑,首先新建一个新的m文件,如图操作所示,然后在编辑框中输入所要的子函数,如图所示,例如我就是输入了convnem的函数,这是conv的子函数。然后点击保存。
4、接下来,在刚刚第二步“conv”所在文件位置,将位置记录下来,将子函数的文件保存到主函数所在的文件夹即可,然后在重新的将你所需的程序(含有子函数的)输入并且执行,这时你会发现原来提示的错误没有了,那么这时调用自己添加的子函数成功了。以后有相应的子函数都可以通过这样的方法进行添加子函数。
展开全部
function main
format long
i=145;
t=i*0.001;
x=zeros(2,1);
x(1,1)=35;
f=t*sin(x(1,1));
x(2,1)=Runge_Kutta(t,x(1,1))
%子函数内容为:
function x1=Runge_Kutta(x)
%Runge-Kutta积分方法解算
T=0.01;
%设周期是0.01秒,具体的计算中再修改
%f(x,t)=t*sin(x); %这个语句肯定有问题,不起作用,所以注销掉
%先假设f(x,t)是一个这样的函数,具体函数在具体问题中再修改
x=x(1,1);
%x先假设一个值,到具体问题时再具体输入修改
K1=t*sin(x);
K2=(t+T/2)*sin(x+K1/2);
K3=(t+T/2)*sin(x+K2/2);
K4=(t+T)*sin(x+K3);
x1=x+(T/6)*(K1+2*K2+2*K3+K4);
%龙格库塔方法计算过程
以上计算的结果为
x =
35.000000000000000
34.999399730655441
format long
i=145;
t=i*0.001;
x=zeros(2,1);
x(1,1)=35;
f=t*sin(x(1,1));
x(2,1)=Runge_Kutta(t,x(1,1))
%子函数内容为:
function x1=Runge_Kutta(x)
%Runge-Kutta积分方法解算
T=0.01;
%设周期是0.01秒,具体的计算中再修改
%f(x,t)=t*sin(x); %这个语句肯定有问题,不起作用,所以注销掉
%先假设f(x,t)是一个这样的函数,具体函数在具体问题中再修改
x=x(1,1);
%x先假设一个值,到具体问题时再具体输入修改
K1=t*sin(x);
K2=(t+T/2)*sin(x+K1/2);
K3=(t+T/2)*sin(x+K2/2);
K4=(t+T)*sin(x+K3);
x1=x+(T/6)*(K1+2*K2+2*K3+K4);
%龙格库塔方法计算过程
以上计算的结果为
x =
35.000000000000000
34.999399730655441
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实你这个程序非常简单的顺序,完全可以不用子函数……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询