fzero函数的意思就是查找你定义的函数在给定的初值附近的零点,所以你可以根据你输入的P的范围计算出来T的范围,然后将函数的初值设置成T范围的中间值,这样如果你的函数有唯一零点的话,就可以稳定的找到。fzero(@(T) exp(A/T+B+CT+D(1-T/F)^15)-P,tmiddle);tmiddle是可能T的中间值。
你可以使用下面的代码:
a=0:01:10;
y=017cos(56sqrt(a))cos(047sqrt(a))-0163sin(56sqrt(a))sin(047sqrt(a))
-0119sqrt(a)sin(56sqrt(a))cos(047sqrt(a))-0104sqrt(a)cos(56sqrt(a))sin(047sqrt(a))
+(006cos(56sqrt(a))sin(047sqrt(a))+0053sin(56sqrt(a))cos(047sqrt(a)))/sqrt(a);
plot(a,y);
hold on
grid on;
a1= fzero (@(a)017cos(56sqrt(a))cos(047sqrt(a))-0163sin(56sqrt(a))sin(047sqrt(a))-0119sqrt(a)sin(56sqrt(a))cos(047sqrt(a))-0104sqrt(a)cos(56sqrt(a))sin(047sqrt(a))+(006cos(56sqrt(a))sin(047sqrt(a))+0053sin(56sqrt(a))cos(047sqrt(a)))/sqrt(a),1)
plot([a1],[0],'r')
或者你可以把你的fzero函数中的a换为x,因为这个函数默认的自变量是x,其他的不行。
祝你学习愉快!
出错原因:
按照下面的调用方式
fzero('ax^2-4',1)传递给fzero函数的只是一个字符串,与变量a的值没有任何关系。字符串在fzero中进行预处理,会被转换成一个inline函数,该函数包含x和a两个变量,而x被视为求零点的主变量,在迭代计算过程中自动调整取值,但a属于未知量,所以会提示a未定义。
解决方法:
定义x为符号变量,然后把sym类型的方程转为字符串或inline函数再调用fzero求解。
示例:
>> syms x>> a=1;
>> fzero(inline(char(ax^2-4)),1)
ans =
2
>> fzero(char(ax^2-4),1)
ans =
2
以上就是关于matlab中这个方程如何求T值全部的内容,包括:matlab中这个方程如何求T值、matlab fzero 命令运行时错误、matlab 中调用 fzero('a*x^2-4',1)时候,里面函数有个a值是之前定义的常量,比如a=1,但是运行错误。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)