早教吧作业答案频道 -->其他-->
matlab solve函数变量问题clcP=[0.9110 0.6777 0.7706 ];D=[2.656E+09 7.968E+10 2.656E+10];[x,y]=solve('y*log((x+D(3))/(x+D(1)))/log(10)=(P(1)-P(3))','y*log((x+D(3))/(x+D(2)))/log(10)=(P(2)-P(3))','x','y');%xx=solve('y*log((x+2.656E+10)/(x+2.656E+0
题目详情
matlab solve函数变量问题
clc
P=[0.9110 0.6777 0.7706 ];
D=[2.656E+09 7.968E+10 2.656E+10];
[x,y]=solve('y*log((x+D(3))/(x+D(1)))/log(10)=(P(1)-P(3))','y*log((x+D(3))/(x+D(2)))/log(10)=(P(2)-P(3))','x','y');
%xx=solve('y*log((x+2.656E+10)/(x+2.656E+09))/log(10)=(0.9110-0.7706)','y*log((x+2.656E+10)/(x+7.968E+10))/log(10)=(0.6777-0.7706)');
x=subs(x)
y=subs(y)
De=x
C=y
A=P(3)+C*log(1+D(3)/De)/log(10)
运行结果:
Warning:Explicit solution could not be found.
> In solve at 81
In jisuande at 4
x =
[]
y =
[]
De =
[]
C =
[]
Error using ==> mrdivide
Matrix dimensions must agree.
Error in ==> jisuande at 10
A=P(3)+C*log(1+D(3)/De)/log(10)
为什么前面的数组调用不了,请明白的同志给讲一下,最好能给出能正确运行的程序
我决定自己编一个遗传算法或者布伦特算法程序来解决这个问题,想偷个懒看来还不行
clc
P=[0.9110 0.6777 0.7706 ];
D=[2.656E+09 7.968E+10 2.656E+10];
[x,y]=solve('y*log((x+D(3))/(x+D(1)))/log(10)=(P(1)-P(3))','y*log((x+D(3))/(x+D(2)))/log(10)=(P(2)-P(3))','x','y');
%xx=solve('y*log((x+2.656E+10)/(x+2.656E+09))/log(10)=(0.9110-0.7706)','y*log((x+2.656E+10)/(x+7.968E+10))/log(10)=(0.6777-0.7706)');
x=subs(x)
y=subs(y)
De=x
C=y
A=P(3)+C*log(1+D(3)/De)/log(10)
运行结果:
Warning:Explicit solution could not be found.
> In solve at 81
In jisuande at 4
x =
[]
y =
[]
De =
[]
C =
[]
Error using ==> mrdivide
Matrix dimensions must agree.
Error in ==> jisuande at 10
A=P(3)+C*log(1+D(3)/De)/log(10)
为什么前面的数组调用不了,请明白的同志给讲一下,最好能给出能正确运行的程序
我决定自己编一个遗传算法或者布伦特算法程序来解决这个问题,想偷个懒看来还不行
▼优质解答
答案和解析
没看到x和y根本就没解出来么,
Warning:Explicit solution could not be found.
警告:显式解未找到.
_____________________________
matlab不是万能的,人没办法解matlab当然也没法解,就算数组代入也还是解不了的.
solve有两种用法,一种是像你这样用字符串作为参数,在这种情况下字符串被整体传到函数内,不会自动将已定义的内容代到字符串内.因此必须手动拼接字符串,用num2str将数字转换为字符串,再和其他字符串接到一起成为一个整体,再传给solve,比较麻烦.第二种是输入符号表达式,这样比较简单,下面我用这种方法给出你的问题的写法,但是即使数组被传入了,solve依然解不出显式解,这不是我个人所能解决的.
clc
P=[0.9110 0.6777 0.7706 ];
D=[2.656E+09 7.968E+10 2.656E+10];
syms x y
[x,y]=solve(y*log((x+D(3))/(x+D(1)))/log(10)-(P(1)-P(3)),y*log((x+D(3))/(x+D(2)))/log(10)-(P(2)-P(3)),x,y);
%xx=solve('y*log((x+2.656E+10)/(x+2.656E+09))/log(10)=(0.9110-0.7706)','y*log((x+2.656E+10)/(x+7.968E+10))/log(10)=(0.6777-0.7706)');
x=subs(x)
y=subs(y)
De=x
C=y
A=P(3)+C*log(1+D(3)/De)/log(10)
还有我想说,solve一般用于求解析解,数值解并不擅长,求数值解还是用fsolve比较合适.
___________
大概版本不一样,反正我的没求出来.
Warning:Explicit solution could not be found.
警告:显式解未找到.
_____________________________
matlab不是万能的,人没办法解matlab当然也没法解,就算数组代入也还是解不了的.
solve有两种用法,一种是像你这样用字符串作为参数,在这种情况下字符串被整体传到函数内,不会自动将已定义的内容代到字符串内.因此必须手动拼接字符串,用num2str将数字转换为字符串,再和其他字符串接到一起成为一个整体,再传给solve,比较麻烦.第二种是输入符号表达式,这样比较简单,下面我用这种方法给出你的问题的写法,但是即使数组被传入了,solve依然解不出显式解,这不是我个人所能解决的.
clc
P=[0.9110 0.6777 0.7706 ];
D=[2.656E+09 7.968E+10 2.656E+10];
syms x y
[x,y]=solve(y*log((x+D(3))/(x+D(1)))/log(10)-(P(1)-P(3)),y*log((x+D(3))/(x+D(2)))/log(10)-(P(2)-P(3)),x,y);
%xx=solve('y*log((x+2.656E+10)/(x+2.656E+09))/log(10)=(0.9110-0.7706)','y*log((x+2.656E+10)/(x+7.968E+10))/log(10)=(0.6777-0.7706)');
x=subs(x)
y=subs(y)
De=x
C=y
A=P(3)+C*log(1+D(3)/De)/log(10)
还有我想说,solve一般用于求解析解,数值解并不擅长,求数值解还是用fsolve比较合适.
___________
大概版本不一样,反正我的没求出来.
看了 matlab solve函数...的网友还看了以下:
若有以下定义,则值为4的表达式是 A)p+=3,*(p++) B)p+=3,*++p C)p+=4 2020-05-13 …
matlab解一个二元方程组为何出现错误.方程组为0.0231=d+p0.0284=0.0231+ 2020-05-16 …
关于matlab求方程,有题的答案,我想知道题目p=[8 -7 6 -5 4 -3 2 -1]r= 2020-05-16 …
matlab solve函数求解a='x=0.5*9.8*0.6^2/pi*tanh(2*pi*0 2020-05-16 …
对于下列值。使用RSA算法进行加密和解密(1)p=3,q=11,e=7,M=5(2)p=17,q= 2020-05-17 …
1、设p、q是两个数,规定:p△q=3×p-(p+q)÷2,求7△(2△4)2、如果1*5=1、设 2020-07-24 …
判断下列各对直线是否垂直:(1)y=x,2x+2y-7=0(2)x+4y-5=0,4x-3y-5= 2020-08-01 …
设P,Q为互质之整系数多项式P(根号2+根号3+根号7)/Q(根号2+根号3+根号7)=根号2+根 2020-08-03 …
因式分解(x+y)^4-7(x+y)²-1442x²(x-15)-16x6(a+b)²+2b(a+b 2020-11-01 …
概率的计算[p(5,10)-p(5,7)]/p(5,10)=11/12[p(2,13)c(3,4)c 2020-11-03 …