调试2天了,一定要帮帮了,你的程序有2大毛病。
一是你分辨不清符号计算和数值计算的区别
具体就是你的问题属于数值计算,不需要用到syms这些符号计算方面的内容
二是你对函数输入参数把握不明确
fsolve的第一个输入参数是函数句柄类型,你传进去的是一个字符串。用C语言的思维来想一想,一个字符串类型的变量
MATALB如何能够将它识别为一个函数类型呢?程序稍加修改,你应该可以看懂
Editor:
clc; clear all;
w=0.2; c=0.0; k1=0.4; k3=0.1; F=0.05;
p=[w c k1 k3 F];
format long;
[x fval exitflag]=fsolve(@(x)numer2(x,p),[0.1383 0.02104 0.1335 0.00186],optimset('Display','iter')) %#ok
function y=numer2(x,p)
a1=x(1);a3=x(2);b1=x(3);b3=x(4);
w=p(1);c=p(2);k1=p(3);k3=p(4);F=p(5);
y=[-w^2*a1+c*w*b1+a1*k1+3*a1^3*k3/4+3*a1^2*a3/k3+3*a1*a3^2*k3/2+3*a1*b1^2*k3/4-3*a3*b1^2*k3/4+1.5*a1*b1*b3*k3+1.5*a1*b3^2*k3-F;
-c*w*a1-w^2*b1+b1*k1+0.75*a1^