vpa編程
A. matlab自變數多個值,經公式運算,輸出多個結果,如何編程
1、首先,建立一個自定義函數文件。如ex_fun.m,其文件內容
function [C,R]=ex_fun(X,Y,A)
syms C R
eq1=((C/((1/2)+X+(1/(0.013*R))))*(1-Y))-R;
eq2=((A*(11*(C-40)))/(8*(C+80)))-R;
s=solve(eq1,eq2);
C=vpa(s.C,5);
R=vpa(s.R,5);
end
2、再命令窗口或程序文件中,輸入下列命令
X=5;Y=10;A=3;
[C,R]=ex_fun(X,Y,A)
3、計算結果
C = 40., -6.929, -84.139
R = 0., -2.649, 123.70
B. 用matlab做,牛頓迭代法
function [ A ] = cal( a,b,v )%a,b表示區間,v是精度
i=1;
x = (a+b)/2;
A=[i x];
t = x-(x^3-x-1)/(3*x^2-1);%迭代函數
while(abs(t-x)>v)
i=i+1;
x = t;
A = [A;i x];
t = x-(x^3-x-1)/(3*x^2-1);%迭代函數
end
A = [A;i+1 t];
end
運行結果:
>> format long;
>> cal(1,2,0.00001)
ans =
1.000000000000000 1.500000000000000
2.000000000000000 1.347826086956522
3.000000000000000 1.325200398950907
4.000000000000000 1.324718173999054
5.000000000000000 1.324717957244790
C. matlab編程求解方程組
如何求解多組二元一次方程組呢?題主的想法是對的,是要用循環來求解,其求解過程:
1、首先將t,h數據賦值給t1,h1,即
t1=tan(t);
h1=h.^2;
2、使用for循環語句,求解t(i),h(i)對應的a,b值,即
for i=1:6
i
t=t1(i);h=h1(i);
syms a b
eqn1 = a > 0;
eqn2 = b/a==t;
eqn3 = a^2+b^2==h;
eqns = [eqn1 eqn2 eqn3];
S = solve(eqns,[a b]);
a=vpa(S.a)
b=vpa(S.b)
end
3、運行上述代碼,可以得到如下結果。