返回信息流function [ a1 ] = checka( a )
a1=zeros(1,3);
a1(1)=a;
s=sa(a);
count=2;
fun=inline('(1-a)*exp(4*a)/(1+a)','a');
for i=1:1000
if (sa(-5.01+0.01*i)-s)*(sa(-5+0.01*i)-s)<0
arg=[-5.01+0.01*i -5+0.01*i];
a1(count)=fzero(fun, arg);
count=3;
end
end
-------------------
我在输入a的情况下希望求得其他可能的a的取值使得sa成立,其实也就是fun里面的东西。
于是利用fzero求解,希望找到【fun减去sa(s)】在过零的区间(if (sa(-5.01+0.01*i)-s)*(sa(-5+0.01*i)-s)<0);然后利用函数求解。。。
但是fzero要求第一个参数是inline,我的s=sa(a)放不进去怎么办啊!
这是一条镜像帖。来源:北邮人论坛 / math-model / #8094同步于 2011/8/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MathModel机器人发帖
matlab的问题,请教了
aakpon
2011/8/7镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 jellyray 的大作中提到: 】
: sa()是什么东西?函数么?请教
: 我随便设了一个sa()函数,程序没问题啊
: --
: ...................
哦,看懂了,sa(a)就是(1-a)*exp(4*a)/(1+a)返回值吧
我这看没有错,你测试用的a值是?
负二分之根号二到正二分之根号二之间都行。。。
你测试没问题应该是由于if不成立的。。。
最讨厌这种语法错误了。。。
【 在 jellyray 的大作中提到: 】
: : sa()是什么东西?函数么?请教
: : 我随便设了一个sa()函数,程序没问题啊
: : --
: ...................
arg=[-5.01+0.01*i -5+0.01*i]; 改为 arg=-5.01+0.01*i;就没错了
我理解一下,你的意思是不是要求a1(2)和a1(3)使得sa(a1(2))=sa(a1(3))=sa(a)
如果是这样的话fun应该是'(1-a)*exp(4*a)/(1+a)-s',但是这样不能用内联函数,得在function用@(s)