我是靠谱客的博主 可靠鱼,最近开发中收集的这篇文章主要介绍matlab 空集判定,在使用matlab 符号运算中的solve函数时,为啥计算的结果是空集?该怎么办?...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述:

在使用matlab 符号运算中的solve函数时,为啥计算的结果是空集?该怎么办?

我的程序如下:

clear;

clc;

syms u_d u_q w_r r i_d x_d x_md x_q x_mq i_q x_f r_f u_f x_ad i_f T_t T_em F w_omega P_g u_dc C p_n k v_wind U_g G_s B_s U_s cos_delta sin_delta m Q_e;

f1 = r*i_d - w_r*x_q*i_q - w_r*x_mq*i_q + x_ad*r_f*i_f/x_f -x_ad*u_f/x_f + u_d;

f2 = w_r*(x_d + x_md)*i_d + w_r*x_ad*i_f + r*i_q + u_q;

f3 = r*i_d -w_r*x_q*i_q -w_r*x_mq*i_q + (x_d + x_md)*r_f*i_f/(2*x_ad) - (x_d + x_md)*u_f/(2*x_ad) + u_d;

f4 = T_t - T_em -F*w_omega;

f5 = i_d*u_d + i_q*u_q - P_g;

f6 = w_r - p_n*w_omega;

f7 = sqrt(u_d^2 + u_q^2) - u_dc/2.34;

f8 = T_t - k*v_wind/w_omega;

f9 = T_em - (i_d*u_d + i_q*u_q + 3*r*(i_d^2 + i_q^2))/w_r;

f10 = P_g - U_g^2*G_s - U_g*U_s*(G_s*cos_delta + B_s*sin_delta);

f11 = U_g - u_dc*m/(2*sqrt(2));

f12 = Q_e + u_d*i_q + u_q*i_d;

[i_d,i_q,i_f,w_omega,u_dc,w_r,u_d,u_q,T_t,T_em,P_g,U_g] = solve(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);

得到的结果是:

i_d =[ empty sym i_q ==[ 其他的都是空,输入字符有限,这里省了。

1个回答

分类:

综合

2014-11-05

问题解答:

我来补答

你在进行符号运算的时候,solve求的是解析式,matlab要是认为没有解析式的解,就会给你空的答案的.结果已经显示是empty sym,符号变量没有解.你得考虑用数值解了.解不出解析解很正常,就好比你解全是字母的方程可能解不出来遇到超越方程一样.

再问: 哦,谢谢,那用solve解不出来是不是表示手算也没有解析解啊?

再答: 倒也不一定,因为手算的话你可以仔细观察,代换代换化简式子,兴许就给解出来了(你这儿这么多未知数,汗),而程序都是按照固定的算法死算,有一步过不去就通通过不去,所以很容易告诉你没解。程序的优势都是在数值计算上,算得比人快,因为不用怎么“动脑子”,而人脑在处理这种需要变通的问题的时候更加有效率。

再问: 偶买噶,谢啦啊!那只有手算了。。。

再答: 恩,你可以两种方法结合。先代换一下降低维度,然后再让matlab去算。这样可能会有解。 最根本的办法可能需要你化简下所列的方程,因为你研究的问题可能不需要这么多参变量的吧,你可以固定其中几个然后考察函数是什么样的呀,这么渐进地来。

再问: 嗯,好,灰常感谢!

展开全文阅读

最后

以上就是可靠鱼为你收集整理的matlab 空集判定,在使用matlab 符号运算中的solve函数时,为啥计算的结果是空集?该怎么办?...的全部内容,希望文章能够帮你解决matlab 空集判定,在使用matlab 符号运算中的solve函数时,为啥计算的结果是空集?该怎么办?...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部