matlab求方程数值解
我用matlab的solve求方程组,结果是一个符号解,我想得到方程的数值解,应该怎么办?因为符号解的解非常复杂,所以手工代人几乎不可能。matlab编程:[x5,y5]...
我用matlab的solve求方程组,结果是一个符号解,我想得到方程的数值解,应该怎么办?因为符号解的解非常复杂,所以手工代人几乎不可能。
matlab编程:[x5,y5]=solve('y5=a1*x5+c1','y5=a2*x5+c2','x5','y5');
a1,c1,a2,c2的数值都知道了
运行结果:
x5 =
(-c2+c1)/(a2-a1)
y5 =
(a2*c1-c2*a1)/(a2-a1)
x5、y5不是数值,这是什么原因? 展开
matlab编程:[x5,y5]=solve('y5=a1*x5+c1','y5=a2*x5+c2','x5','y5');
a1,c1,a2,c2的数值都知道了
运行结果:
x5 =
(-c2+c1)/(a2-a1)
y5 =
(a2*c1-c2*a1)/(a2-a1)
x5、y5不是数值,这是什么原因? 展开
展开全部
fun=@(x,y)y.*log10(y)-x创建关于x,y的匿名函数
log10(x)由于Matlab中自然对数的符号是log(与我们数学上的不同),以10为底的对数符号是log10,同理有log2,但是没有log3等哦
vpa将得到的符号解转化为指定精度的小数,比如vpa('sqrt(2)',10)将sqrt(2)表示10位精度的小数
fzero是Matlab求解一元函数零点的内置函数
fsolve是Matlab中求解方程组解(可以求解复数)的内置函数,功能强于fzero
fval是返回fun(x)的值,也就是说fzero和fsolve返回方程的解x,那么此时的fun(x)就是fval
这个方法比较多 可以数值也可以解析求解
1.解析求解
>> solve('y*log10(y)=3','y')
ans =
3*log(10)/lambertw(3*log(10))
>> vpa(ans)
ans =
4.5555357051951280236911974082484
2.数值解法这个可以使用fsolve和fzero,前者的功能更加强大,但是对于这个问题fzero就可以了
>>x=3;
>>fun=@(y)y*log10(y)-x;
%使用fsolve
>> [x,fval]=fsolve(fun,rand)
Optimization terminated: first-order optimality is less than options.TolFun.
x =
4.5555
fval =
3.9620e-008
%使用fzero
>> [x,fval]=fzero(fun,5)
x =
4.5555
fval =
-8.8818e-016
log10(x)由于Matlab中自然对数的符号是log(与我们数学上的不同),以10为底的对数符号是log10,同理有log2,但是没有log3等哦
vpa将得到的符号解转化为指定精度的小数,比如vpa('sqrt(2)',10)将sqrt(2)表示10位精度的小数
fzero是Matlab求解一元函数零点的内置函数
fsolve是Matlab中求解方程组解(可以求解复数)的内置函数,功能强于fzero
fval是返回fun(x)的值,也就是说fzero和fsolve返回方程的解x,那么此时的fun(x)就是fval
这个方法比较多 可以数值也可以解析求解
1.解析求解
>> solve('y*log10(y)=3','y')
ans =
3*log(10)/lambertw(3*log(10))
>> vpa(ans)
ans =
4.5555357051951280236911974082484
2.数值解法这个可以使用fsolve和fzero,前者的功能更加强大,但是对于这个问题fzero就可以了
>>x=3;
>>fun=@(y)y*log10(y)-x;
%使用fsolve
>> [x,fval]=fsolve(fun,rand)
Optimization terminated: first-order optimality is less than options.TolFun.
x =
4.5555
fval =
3.9620e-008
%使用fzero
>> [x,fval]=fzero(fun,5)
x =
4.5555
fval =
-8.8818e-016
富港检测技术(东莞)有限公司_
2024-04-02 广告
2024-04-02 广告
正弦振动多用于找出产品设计或包装设计的脆弱点。看在哪一个具体频率点响应最大(共振点);正弦振动在任一瞬间只包含一种频率的振动,而随机振动在任一瞬间包含频谱范围内的各种频率的振动。由于随机振动包含频谱内所有的频率,所以样品上的共振点会同时激发...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
展开全部
>> syms a1 a2 c1 c2
%以下的值你自己改一下
aa1=1;
cc1=2;
aa2=3;
cc2=4;
[x5,y5]=solve('y5=a1*x5+c1','y5=a2*x5+c2','x5','y5');
xx5=subs(subs(subs(subs(x5,a1,aa1),a2,aa2),c1,cc1),c2,cc2)
yy5=subs(subs(subs(subs(y5,a1,aa1),a2,aa2),c1,cc1),c2,cc2)
%%%%%subs(表达式,变量,变量的值),就是将表达式里面的变量,用变量的值代进去。
%以下的值你自己改一下
aa1=1;
cc1=2;
aa2=3;
cc2=4;
[x5,y5]=solve('y5=a1*x5+c1','y5=a2*x5+c2','x5','y5');
xx5=subs(subs(subs(subs(x5,a1,aa1),a2,aa2),c1,cc1),c2,cc2)
yy5=subs(subs(subs(subs(y5,a1,aa1),a2,aa2),c1,cc1),c2,cc2)
%%%%%subs(表达式,变量,变量的值),就是将表达式里面的变量,用变量的值代进去。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a1,c1,a2,c2的数值都知道,设为以下方程
>> [x5,y5]=solve('y5=1*x5+1','y5=2*x5+sqrt(3)','x5','y5')
x5 =
1-3^(1/2)
y5 =
2-3^(1/2)
>> x=eval(x5);y=eval(y5);
>> [x,y]
ans =
-0.7321 0.2679
>>
>> [x5,y5]=solve('y5=1*x5+1','y5=2*x5+sqrt(3)','x5','y5')
x5 =
1-3^(1/2)
y5 =
2-3^(1/2)
>> x=eval(x5);y=eval(y5);
>> [x,y]
ans =
-0.7321 0.2679
>>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接把几个已知参数放进solve里就行了啊
比如a1=2,就在输a1的地方输2
比如a1=2,就在输a1的地方输2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询