声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1046|回复: 5

[编程技巧] 可否帮我把这句命令翻译下,看了帮助还是不太理解

[复制链接]
发表于 2010-6-23 11:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
subs(sym(f),findsym(sym(f)),a)
回复
分享到:

使用道具 举报

发表于 2010-6-23 13:21 | 显示全部楼层
f=??
 楼主| 发表于 2010-6-23 13:36 | 显示全部楼层

问题如下

function [q,step]=CombineTraprl(f,a,b,eps)
%被积函数 f, eps 精度
%积分区间左端点:a, 积分区间右端点:b
%积分结果 :q, step积分的子区间数
if(nargin==3), eps=1.0e-4; end
n=1; h=(b-a)/2; q1=0;
q2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;
while abs(q2-q1)>eps
      n=n+1; h=(b-a)/n; q1=q2; q2=0;
      for i=0:n-1                          %第n次的复合梯形公式积分
           x=a+h*i;                        %i=0 和n-1时,分别代表积分区间的左右端点
           x1=x+h;
           q2=q2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+subs(sym(f),findsym(sym(f)),x1));
      end
end
q=q2; step=n;

%%%%以上为数值积分公式
如果我要求函数sin(x)*exp(-x)的积分,  应该调用CombineTraprl('sin(x)*exp(-x)',0,10)就可以

但是我请问如果,我调用M-file方式,  另做一个文件
function y=integ(x)
y=sin(x)*exp(-x);

然后调用CombineTraprl('integ',0,10)为什么就不行呢?
注:本人需要求得被积函数很复杂

findsym(sym(f)), 寻找f函数中的 符号变量,f为自定义函数,能不能写在M-file文件中,调用呢?

[ 本帖最后由 ChaChing 于 2010-6-23 23:03 编辑 ]
发表于 2010-6-24 00:01 | 显示全部楼层
LZ函数的写法好像只允许文字变数输入!
CombineTraprl('integ',0,10)时, 是f=integ, 其中integ相当于平常的x
 楼主| 发表于 2010-6-24 17:54 | 显示全部楼层

请问如何可以修改下那个函数

本人的被积函数很复杂,所以需要用function 来定义,不能直接输入
发表于 2010-6-24 19:05 | 显示全部楼层
那可能需要稍微修改下该函数!
目前没太多充裕时间试, LZ先试下, 或待高人路过!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 16:50 , Processed in 0.081740 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表