matlab高手进,隐函数求数值解,问题很急,需要编程!

syms b cp;
u=2.65e+10;
c1b=5.057e+10;
cv=2596.15;
cs=3128.89;
us01=10;
us12=20;
h=1e-9;
cp=2400;
f=tan(b*sqrt((cp/cv)^2-1))-(c1b*sqrt((cp/cv)^2-1)*(u*sqrt(1-(cp/cs)^2)+(b/h)*us12-(b/h)*us01))/((u*(b/h)*sqrt(1-(cp/cs)^2)+((b/h)^2)*us01)*us01+c1b^2*((cp/cv)^2-1));
我的未知数是b和cp, 现在要求b从0到20时,每一个b对应的cp的值(b可以取0,1,2……20)。
不要告诉我用solve或fsolve,我用了根本求不出解来,cp是多解的,而且是数值解。
我要求解程序,求出的解应该是矩阵形式,高分悬赏,越快越好,谢了各位

你的公式中 cp的取值范围是cv到cs之间

用fzero在这个区间之内找结果就好了

u=2.65e+10;
c1b=5.057e+10;
cv=2596.15;
cs=3128.89;
us01=10;
us12=20;
h=1e-9;
b=(0:20)';
A=cell(21,2);
f=@(b,cp) tan(b*sqrt((cp/cv)^2-1))-(c1b*sqrt((cp/cv)^2-1)*(u*sqrt(1-(cp/cs)^2)+(b/h)*us12-(b/h)*us01))/((u*(b/h)*sqrt(1-(cp/cs)^2)+((b/h)^2)*us01)*us01+c1b^2*((cp/cv)^2-1));
for n=1:length(b)
    A{n,1}=b(n);
    for p0=cv+0.01:cs-0.01
        [s v flag]=fzero(@(cp) f(b(n),cp),p0);
        if flag==1
            if isempty(A{n})
                A{n,2}=s;
            elseif all(abs(A{n,2}-s)>1e-3)
                A{n,2}=[A{n,2},s];
            end
        end 
    end        
end


由于每个b的取值得到cp的解的个数不同,所以这里用cell矩阵来储存结果

最后结果再A中

A的第一列是b的取值

第二列是cp的可能取值,如果结果是[],也就是无解


结果如下,第一列是b的取值,第二列是对应的cp的可能取值

追问

先谢谢你的回答,我用matlab画过此方程的曲线(matlab不需要数据准备可直接绘图),常理上cp应该在cv和cs之间,可是图上表明在0到cv时cp也有值,这也是我要求数据的原因,因此我需要cp在0到cv上的解这才是关键,还有我需要k密一些,完成这些我就立即采纳绝不拖欠,谢谢啦!

追答u=2.65e+10;
c1b=5.057e+10;
cv=2596.15;
cs=3128.89;
us01=10;
us12=20;
h=1e-9;
b=(0:20)';
f=@(b,cp) tan(b.*sqrt((cp/cv).^2-1))-(c1b*sqrt((cp/cv).^2-1).*(u*sqrt(1-(cp/cs).^2)+(b/h)*us12-(b/h)*us01))./((u*(b/h).*sqrt(1-(cp/cs).^2)+((b/h).^2)*us01)*us01+c1b^2*((cp/cv).^2-1));
ezplot(f,[0 20 0 3000]);

没看到小于cv的解

追问

我和你画的不一样啊?这是为什么呢?我的程序是:

公式太长没截完,我是先把f代入命令窗口把已知数都消除,就剩b和cp之后的式子整体代入ezplot,画出的图是:

我觉得不应该错啊,你试试?我老师就是觉得这个现象奇怪,才让我求数值解的

温馨提示:内容为网友见解,仅供参考
无其他回答

MATLAB如何求出隐函数中变量的具体值
plot(xx,yy,'-*')(2)数值解。一般用Newton法

matlab隐函数求数值解
matlab隐函数求数值解的方法,就是用循环for语句和vpasolve()配合使用,求出与t值对应的id值。运行结果及代码。

Matlab用fsolve求解隐函数的问题
Matlab用fsolve求解隐函数的问题 10 直接用fsolve求解的话,我现在写了个函数,但是老是出现:Equationsolved.fsolvecompletedbecausethevectoroffunctionvaluesisnearzeroasmeasuredbythedefaultvalueofthefunctiontole... 直接用fsolve求解的话,我现在写了个函数,但是老是出现:Equation solved.fsolve completed because the vect...

matlab隐函数求解
用matlab求隐函数解,一般只能通过循环语句和vpasolve求出x与y的相应值,然后用plot绘出图形。代码:

求解关于matlab求解隐函数非线性方程组,并绘制曲线的问题,求具体代码...
用matlab是可以解的。不过你现在的问题好像没有说清楚。前面两个方程跟后面似乎完全无关。我先把它解出来吧:>> syms x y t >> eq1='5+10*cos(5*t)-x*cos(y)=0'>> eq2='10*sin(5*t)-x*sin(y)=0'>> [x y]=solve(eq1,eq2)x = 5*(5+4*cos(5*t))^(1\/2)-5*(5+...

使用matlab进行隐函数求解
题主给出的隐函数求解问题,一般可以用solve函数,得到y(x)或x(y)形式的解,实现思路:clc,close all a=1;b=1;syms x y x=solve(y==1\/a*(10*b*x)^0.6*(a+2*y)^0.4,x)绘图 y=0:20:1180;x =eval(x);plot(x,y,'k-')xlabel('x');ylabel(&...

关于用MATLAB求解隐函数的问题
用subs函数可以将solve接出来的解析解里面的变量用数字替换掉,然后得到数值解。给你举个简单的例子,求a*x=b的解,先求解析解,然后用a=2,b=1代入求出数值解:>> solution=solve('a*x=b', 'x')solution = b\/a >> num_solution = subs(solution, '[a,b]', [2 1])num_solution =...

Matlab求解隐函数方程组
如何用Matlab求解隐函数方程组?一般来说,对于非线性方程组是可以用fsolve求解。求解过程:1、确定初值,一般可以先用ezplot函数作图,并判断x1,x2的附近值作为x0的初值 2、自定义函数,即 func=@(x)[x(1)*exp(-12\/x(1))\/(x(1)-x(2))-x(2)*exp(-12\/x(2))\/(x(1)-x(2))-0....

matlab如何求解隐函数最值
题主给出的 xy+xyz+yz=0 隐函数中z的最值问题,可以通过fmincon函数求得。求解方法如下:1、将 xy+xyz+yz=0 函数,用极值形式表示。即 min f(x,y,z)=xy+xyz+yz 2、自定义极值目标函数,其内容 maxZ=(x*y+x*y*z+y*z);3、自定义极值约束条件函数,其内容 不等式约束 g(1)=x-1...

怎么用matlab求解复杂的隐函数
如何用matlab求解复杂的隐函数变量值,一般可以用solve函数来求解,也可以用其他函数求解(如fsolve,二分法等)。求解过程如下:syms x f=solve(1.2454*x==(1\/(3.4202*log10(0.2168*2.17*x^0.3967)+0.4129))^2.0697)验算:1.2454*f %左边 (1\/(3.4202*log10(0.2168*2.17*f^0....

相似回答