close all R1=1.2e-3; R2=9.2e-3; C_in=1.1e6; C_wall=1.86e8; P_heat=8e3; temp_in=10;%室内初始温度 temp_wall=10;%墙体初始温度 syms temp_in(t) t_wall(t) [temp_ins,temp_walls]=dsolve(diff(temp_in)==P_heat*R1-temp_in+t_wall/C_in*R1,... diff(t_wall)==temp_in*R2-t_wall*R2-t_wall*R1+temp_wall*R1/C_wall*R1*R2);
时间: 2024-02-12 19:04:07 浏览: 95
您的问题是如何求解该微分方程组的解析解?
这是一个关于时间 t 的非齐次线性微分方程组,我们可以使用 dsolve 函数来求解。
首先,我们需要定义符号变量 temp_in(t) 和 temp_wall(t)。
然后,我们可以使用 dsolve 函数来求解该微分方程组的解析解,代码如下:
```matlab
syms temp_in(t) t_wall(t)
[R1,R2,C_in,C_wall,P_heat,temp_in0,temp_wall0] = deal(1.2e-3,9.2e-3,1.1e6,1.86e8,8e3,10,10);
[temp_ins,temp_walls] = dsolve(diff(temp_in)==P_heat*R1-temp_in+t_wall/C_in*R1,...
diff(t_wall)==temp_in*R2-t_wall*R2-t_wall*R1+temp_wall*R1/C_wall*R1*R2,...
temp_in(0)==temp_in0,t_wall(0)==temp_wall0);
```
其中,我们需要指定初始条件 temp_in(0)=temp_in0 和 t_wall(0)=temp_wall0。
最终,我们得到了 temp_ins 和 temp_walls,它们是关于时间 t 的解析解。
相关问题
import datetime today = datetime.date.today() ## 获取今天的日期 day1=datetime.date.today()-datetime.timedelta(300) ### 获取300天之前的日期 day2=datetime.datetime.strftime(today,"%Y-%m-%d" ) all_stock = get_all_securities(types=['stock'], date=day2) ### 获取所有股票代码 code=list(all_stock.index) ## 判断是否ST 并且删除st的股票代码 df_st=get_extras('is_st',code,start_date=day1,end_date=day2) for i in code: if any(df_st[i].values): code.remove(i) stock_list=[] for i in code: start_date=get_security_info(i).start_date days=(today-start_date).days if days>300: #### 选出上市满天300的股票 stock_list.append(i) data=dict() for i in stock_list: df=get_price(i,start_date=day1,end_date=day2,frequency='daily', fields=['open','close','high','low']) data[i]=df ### 将数据分成选股数据和回测数据。假设用中间的120根k线,后60根k线回测 code=[] n=45 ## n为回测k线的个数 s设为45 (可以随意调整) for i in stock_list: df=data[i] max_=max(df.high[-190:-n-1]) ### 选140=(190-45)根k线(可以随意调整) min_=min(df.low[-190:-n-1]) max_close=max(df.close[-190:-n-1]) ### 选出平台震荡期间振幅小于50%的,且,最后三天连涨,最后一天突破平台最大收盘价超过5%的所有股票 if all([max_/min_<1.5,df.close[-n-1]>df.close[-n-2]>df.close[-n-3],df.close[-n-1]/max_close>1.05]): code.append(i) ### 买入过程 ## 假设根据上面平台突破选出来的股票作为买入标的 ## 买入原则是 当天选出来的股票第二天以开盘价买入。且把选出来的每只股票以,同等资金额买入 capital=100000 ## 初始资金为 10万元 position=dict() ## 初始持仓手数为一个空字典 def handle(stock_list,capital,posttion,data,n): capital_=0 for i in code: capital_per=capital/len(code) position[i]=int(capital_per/(data[i].open[-n]*100)) capital_+=capital_per-position[i]*data[i].open[-n]*100 return ([position,capital_]) position_result=handle(get_code(),capital,position,data,n)修改上述代码,使能在jupyter里面运行
可以将代码放在一个 cell 中,并添加必要的库的导入语句。以下是修改后的代码示例:
```python
import datetime
from jqdatasdk import *
auth('用户名', '密码') # 用你自己的聚宽账号密码进行登录
def get_code():
today = datetime.date.today()
day1 = datetime.date.today() - datetime.timedelta(300)
day2 = datetime.datetime.strftime(today, "%Y-%m-%d")
all_stock = get_all_securities(types=['stock'], date=day2)
code = list(all_stock.index)
df_st = get_extras('is_st', code, start_date=day1, end_date=day2)
for i in code:
if any(df_st[i].values):
code.remove(i)
stock_list = []
for i in code:
start_date = get_security_info(i).start_date
days = (today - start_date).days
if days > 300:
stock_list.append(i)
data = dict()
for i in stock_list:
df = get_price(i, start_date=day1, end_date=day2, frequency='daily',
fields=['open', 'close', 'high', 'low'])
data[i] = df
code = []
n = 45
for i in stock_list:
df = data[i]
max_ = max(df.high[-190:-n-1])
min_ = min(df.low[-190:-n-1])
max_close = max(df.close[-190:-n-1])
if all([max_/min_ < 1.5, df.close[-n-1] > df.close[-n-2] > df.close[-n-3], df.close[-n-1]/max_close > 1.05]):
code.append(i)
return code
capital = 100000
position = dict()
def handle(stock_list, capital, position, data, n):
capital_ = 0
for i in stock_list:
capital_per = capital / len(stock_list)
position[i] = int(capital_per / (data[i].open[-n] * 100))
capital_ += capital_per - position[i] * data[i].open[-n] * 100
return position, capital_
code = get_code()
position_result = handle(code, capital, position, data, n)
```
注意:需要将上述代码中的 `用户名` 和 `密码` 替换为自己的聚宽账号密码。另外,聚宽需要联网才能登录。如果你的 jupyter notebook 是在本地运行的,需要确保你的电脑连接到了互联网。如果你是在云端运行的,确保云主机已经联网。
2-1. 新建项目工程,工程名:CORE_C06_034: 2-1.1. 创建一个java类,类名FormatExceptionDemo; 2.1.2. 添加程序入口的main方法,并完成以下逻辑: 2-2. 在main方法中新建一个Scanner对象,构造器入参为【System.in】。 2-3. 向控制台输出提示语句:【请输入一个整数:】 2-4. 通过Scanner对象的nextLine方法获取控制台输入的内容。 2-5. 定义一个整型变量,初始值为-1,用于保存类型转换后的数字。 2-6. 把输入的字符串转换为整数: 2-6.1. 通过Integer类的parseInt方法进行类型转换。 2-6.2. 通过Scanner对象的close方法关闭流。 2-7. 捕获类型转换异常: 2-7.1. 使用try…catch语句捕获2-6步骤中的NumberFormatException异常: 2-7.2. 当发生异常时,向控制台输出提示信息【输入内容不是整数!】,并结束应用程序。 2-7.3. 结束应用程序方法:System.exit(0)。 2-8. 向控制台输出转换好的数字内容。 3、验证与测试 3-1. 程序测试: 3-1.1. 运行该项目,向控制台输入一个含有非数字的字符串。 3-1.2. 观察控制台的错误反馈信息。
好的,以下是根据您的要求编写的Java代码,供您参考:
```
import java.util.Scanner;
public class FormatExceptionDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
String input = scanner.nextLine();
int num = -1;
try {
num = Integer.parseInt(input);
scanner.close();
} catch (NumberFormatException e) {
System.out.println("输入内容不是整数!");
System.exit(0);
}
System.out.println("转换后的数字为:" + num);
}
}
```
您可以直接复制以上代码到您的工程中,并且执行以下测试:
1. 运行该程序。
2. 在控制台中输入一个非数字字符串,例如:"abc"。
3. 观察控制台输出的错误反馈信息:"输入内容不是整数!"。
4. 退出程序。
阅读全文